• linux命令之进程管理命令


    1.ps:查看进程

    该命令用于列出命令执行时刻的进程快照,如果想要动态的显示进程信息,可以使用top命令。

    参数 说明
    a(常用) 显示与终端相关的所有进程,包含每个进程的完整路径
    x(常用) 显示与终端无关的所有进程
    u(常用) 显示进程的用户信息
    -e(常用) 显示所有进程
    -f(常用) 额外显示UID、PPID、C与STIME栏位

    示例:

    1)ps命令常用组合(一)输出每个进程的信息

    [root@boxiaoyuan ~]# ps -ef
    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 08:30 ?        00:00:02 /sbin/init
    root          2      0  0 08:30 ?        00:00:00 [kthreadd]
    root          3      2  0 08:30 ?        00:00:00 [migration/0]
    root          4      2  0 08:30 ?        00:00:00 [ksoftirqd/0]
    root          5      2  0 08:30 ?        00:00:00 [stopper/0]
    root          6      2  0 08:30 ?        00:00:00 [watchdog/0]
    root          7      2  0 08:30 ?        00:00:00 [migration/1]

    [root@boxiaoyuan ~]# ps aux | grep ssh #查找具体进程
    root 2546 0.0 0.0 66236 1148 ? Ss 08:31 0:00 /usr/sbin/sshd
    root 8708 0.0 0.1 102084 3544 ? Ss 09:34 0:02 sshd: root@pts/3
    root 22423 0.0 0.0 103332 864 pts/3 S+ 13:03 0:00 grep ssh

    说明:

    UID:该进程被该UID所拥有。

    PID:进程的标识号。

    PPID:进程的父进程的标识号。

    C:CPU使用的资源百分比。

    STIME:进程开始的时间。

    TTY:该进程是在哪个终端机上运行,如果与终端机无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0是由网络连接进主机的进程。

    TIME:进程所使用的总的CPU时间。

    CMD:正在执行的命令行。

    2)ps命令常用操作组合(二)显示每个进程信息

    [root@boxiaoyuan ~]# ps aux
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.0  19352  1340 ?        Ss   08:30   0:02 /sbin/init
    root          2  0.0  0.0      0     0 ?        S    08:30   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    08:30   0:00 [migration/0]
    root          4  0.0  0.0      0     0 ?        S    08:30   0:00 [ksoftirqd/0]
    root          5  0.0  0.0      0     0 ?        S    08:30   0:00 [stopper/0]

    说明:

    USER:该进程属于的用户。

    PID:该进程的进程号。

    %CPU:该进程使用的CPU资源百分比。

    %MEM:该进程使用的物理内存资源百分比。

    VSZ:该进程使用掉的虚拟内存量(KB)。

    RSS:该进程占用的固定内存量(KB)。

    TTY:该进程是在哪个终端机上运行,如果与终端机无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0是由网络连接进主机的进程。

    STAT:该进程目前的状态。R表示正在运行或可以运行;S表示正在终端睡眠中;D表示不可中断睡眠;T表示正在侦测或者是停止了;Z:表示已经终止,但是父进程无法正常终止它,变成僵尸进程;+表示前台进程;1表示多线程进程;N表示低优先级进程;<表示高优先级进程;s表示进程领导者;L已将页面锁定到内存中。

    START:该进程被出发启动的时间。

    TIME:该进程实际使用CPU运作的时间。

    COMMAN:该进程的实际命令。

    2.kill:终止进程

    该命令可以终止希望停止的进程。

    该命令的常用参数为-s,表示指定要发送的信号。

    常用信号:

    信号 说明
    HUP(1) 挂起,通常因终端掉线或用户退出而引发
    INT(2) 中断,通常为按下Ctrl+C组合键发出该信号
    QUIT(3) 退出,通常为按下Ctrl+组合键发出该信号
    KILL(9) 立即结束进程的运行
    TERM(15) 终止,通常在系统关机时发送
    TSTP(20) 暂停进程的运行,通常是按下Ctrl+Z组合键发出该信号

    kill默认使用的信号是15,用于结束进程,如果进程忽略此信号,可以使用信号9强制终止进程。

    一般是先通过ps等命令获取到要终止的进程,然后直接使用kill 进程号就行。

    [root@boxiaoyuan ~]# ps aux| grep mysql
    root       2676  0.0  0.0 108212  1428 ?        S    08:31   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
    mysql      2778  0.0  1.2 377528 24140 ?        Sl   08:31   0:06 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
    root      23109  0.0  0.0 103332   860 pts/3    S+   13:13   0:00 grep mysql
    [root@boxiaoyuan ~]# kill 2676  # 默认使用信号15,这种格式最为常用
    [root@boxiaoyuan ~]# ps aux| grep mysql
    root       2676  0.0  0.0 108212  1428 ?        S    08:31   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
    mysql      2778  0.0  1.2 377528 24140 ?        Sl   08:31   0:06 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
    root      23158  0.0  0.0 103332   864 pts/3    S+   13:14   0:00 grep mysql
    [root@boxiaoyuan ~]# kill -s 9 2676  # 强制终止进程
    [root@boxiaoyuan ~]# ps aux| grep mysql
    mysql      2778  0.0  1.2 377528 24140 ?        Sl   08:31   0:06 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
    root      23187  0.0  0.0 103332   864 pts/3    S+   13:15   0:00 grep mysql
    [root@boxiaoyuan ~]# kill -s 9 2778
    [root@boxiaoyuan ~]# ps aux| grep mysql
    root      23207  0.0  0.0 103328   860 pts/3    S+   13:15   0:00 grep mysql

    3.pkill:通过进程名终止进程

    使用kill命令终止进程需要先获取pid,有点繁琐,pkill可以通过进程名杀死指定进程及其所有子进程。

    参数 说明
    -u(常用) 终止指定用户的进程
    -t(常用) 杀死指定终端的进程

    示例:

    1)通过进程名杀死指定进程

    [root@boxiaoyuan ~]# /etc/init.d/crond status
    crond (pid  2933) 正在运行...
    [root@boxiaoyuan ~]# pkill crond
    [root@boxiaoyuan ~]# /etc/init.d/crond status
    crond 已死,但是 subsys 被锁

    2)通过终端名终止进程

    [root@boxiaoyuan ~]# w
     13:30:32 up  5:00,  2 users,  load average: 0.90, 0.87, 0.60
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.13.1     13:28    2.00s  0.20s  0.11s vim 11
    root     pts/3    192.168.13.1     09:34    0.00s  0.34s  0.00s w
    [root@boxiaoyuan ~]# pkill -t pts/0

     4.top:实时显示系统中各个进程的资源占用状况

    该命令可以实时的对系统处理器状态进行监控,能够实时显示系统各个进程的资源占用情况,可以按照CPU的使用,内存的使用和执行时间对任务进程进行排序,同时还可以通过交互式命令进行设定和显示。

    示例

    1)显示进程信息

    [root@boxiaoyuan ~]# top  # 通常top命令不接任何参数
    top - 16:00:46 up  7:30,  2 users,  load average: 0.36, 0.23, 0.23
    Tasks: 183 total,   1 running, 182 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.2%us,  0.3%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1906280k total,  1608152k used,   298128k free,    28828k buffers
    Swap:  8388604k total,    48316k used,  8340288k free,   281380k cached
    
       PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                       
      1254 git       20   0 1494m 363m 2980 S  0.7 19.5   3:15.90 ruby                           
      1249 gitlab-r  20   0 38732 5580 1152 S  0.3  0.3   1:03.50 redis-server                   
      2980 root      20   0  285m 7044 2188 S  0.3  0.4   0:22.24 docker                         
      3172 jenkins   20   0 3002m 401m 7568 S  0.3 21.6   1:34.39 java                           
     33913 root      20   0 15032 1284  936 R  0.3  0.1   0:00.15 top      

    说明:

    第一行:任务队列信息,和uptime命令的执行结果一样。

    16:00:46  当前系统时间

    up 7:30   系统已经运行了7个小时3分钟

    2 users   当前两个用户登录系统

    load average: 0.36, 0.23, 0.23 1min,5min,15min的系统平均负载

    第二行:Tasks: 183 total 1 running, 182 sleeping, 0 stopped, 0 zombie  为任务数,当前共183个进程,其中182个休眠,1个运行,0个停止,0个僵死。

    第三行:Cpu(s): 0.2%us(用户空间占用CPU百分比), 0.3%sy(系统空间占用CPU百分比), 0.0%ni(修改过优先级的进程占用CPU百分比), 99.5%id(空闲CPU百分比), 0.0%wa(I/O等待占用CPU百分比), 0.0%hi(硬中断占用CPU百分比), 0.0%si(软中断占用CPU百分比), 0.0%st(虚拟机占用CPU百分比)

    第四行:Mem: 1906280k total(物理内存总量), 1608152k used(使用中的内存总量), 298128k free(空闲内存总量), 28828k buffers(缓冲的内存量)

    第五行:Swap: 8388604k total(交换区总量), 48316k used(使用的交换区总量), 8340288k free(空闲的交换区总量), 281380k cached(缓存的内存量)

    计算真正的可用的内存数为:第四行的free+第四行的buffers+第五行的cached。

    在对内存进行监控时,要关注swap的used,如果这个值在不断的变化,说明内核正在不断进行内存和swap的数据交换,说明内存不够了或者运行程序内存溢出了。

    第七行:PID(进程ID) USER(进程所有者)  PR(进程优先级)  NI(nice值,负值为高优先级,正值为低优先级) VIRT(进程使用的虚拟内存总量)  RES(进程使用的,未被换出的物理内存大小)  SHR(共享内存大小) S(进程状态) %CPU(占用CPU时间百分比) %MEM(进程使用的物理内存百分比) TIME+(进程使用的CPU时间总计)  COMMAND(进程名称)  

    5. runlevel:输出当前运行级别

    该命令用于输出当前Linux系统的运行级别。

    [root@boxiaoyuan ~]# runlevel
    N 5
    [root@boxiaoyuan ~]# 

    说明:0表示停机;1表示单用户模式;2表示无网络的多用户模式;3表示多用户模式;4未使用;5表示带图形界面的模式;6表示重启。

    6.init:初始化linux进程

    该命令是linux初始化工具,init进程是所有linux进程的父进程,它的进程号是1,init命令的主要任务是依据配置文件/etc/inittab创建linux进程。

    [root@boxiaoyuan ~]# init 0  # 关机
    [root@boxiaoyuan ~]# init 6  # 重启

    7.service:管理系统服务

    该命令用于对系统服务进行管理,比如启动(start),停止(stop),重启(restart),重新加载配置(reload),查看状态(status)等,该命令在Centos7中被systemctl取代。

    示例:

    1)查看当前服务状态

    [root@boxiaoyuan ~]# service --status-all  # 显示所有服务状态
    abrt-ccpp hook is installed
    abrtd (pid  2865) 正在运行...
    abrt-dump-oops 已停
    acpid (pid  2301) 正在运行...
    atd (pid  2892) 正在运行...
    auditd (pid  2078) 正在运行...
    automount (pid  2424) 正在运行...
    用法:/etc/init.d/bluetooth {start|stop}

    2)管理系统服务

    [root@boxiaoyuan ~]# service crond
    用法:/etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
    [root@boxiaoyuan ~]# service crond stop
    停止 crond:                                               [确定]
    [root@boxiaoyuan ~]# service crond start
    正在启动 crond:                                           [确定]
    [root@boxiaoyuan ~]# service crond restart
    停止 crond:                                               [确定]
    正在启动 crond:                                           [确定]
    [root@boxiaoyuan ~]# service crond status
    crond (pid  4367) 正在运行...

    实际的工作中,推荐使用/etc/init.d/crond start/stop/restart/status这种格式管理服务,因为这种方式可以使用tab键自动补全。

    8.nohup:用户退出系统进程继续工作

    该命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端。

    无论是否将nohup命令的输出重定向到终端,输出都会写入到当前目录的nohup.txt文件中,如果当前目录的nohup.txt文件不可写,则会重定向到$HOME/nohup.txt文件中。

    示例:

    1)让直行的命令在当前会话终止后继续保存运行。

    正常情况下,如果用户退出登录或者会话终止,则用户正在执行的并可持续一段时间的命令会自动终止,使用nohup命令,可以在用户退出或当前会话终止后继续保存运行。

    [root@centos76 ~]# nohup ping www.baidu.com
    nohup: ignoring input and appending output to ‘nohup.out

    然后关闭XShell标签,重新登录,发现命令仍然在运行。

    [root@centos76 ~]# ps -ef | grep ping
    root      5498     1  0 11:48 ?        00:00:00 ping www.baidu.com
    root      5580  5520  0 11:49 pts/1    00:00:00 grep --color=auto ping
    root      9264  8858  0 Apr06 ?        00:00:28 /usr/libexec/gsd-housekeeping
    [root@centos76 ~]# tail -f nohup.out 
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=37 ttl=53 time=20.4 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=38 ttl=53 time=20.6 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=39 ttl=53 time=19.9 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=40 ttl=53 time=27.2 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=41 ttl=53 time=25.9 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=42 ttl=53 time=21.1 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=43 ttl=53 time=24.1 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=44 ttl=53 time=23.6 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=45 ttl=53 time=21.4 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=46 ttl=53 time=21.0 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=47 ttl=53 time=21.7 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=48 ttl=53 time=20.4 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=49 ttl=53 time=20.2 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=50 ttl=53 time=21.0 ms
    64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=51 ttl=53 time=25.4 ms
    ^C
    [root@centos76 ~]# kill 5498
    [root@centos76 ~]# ps -ef | grep ping
    root      5599  5520  0 11:49 pts/1    00:00:00 grep --color=auto ping
    root      9264  8858  0 Apr06 ?        00:00:28 /usr/libexec/gsd-housekeeping

    说明:在实际工作中,我们一般会配合&运行nohup,表示让程序在后台运行。

    注:本文内容为《跟老男孩学linux运维 核心系统命令实践》的学习笔记。

  • 相关阅读:
    设计模式之工厂模式
    东方通 部署项目 报错 内存溢出解决
    java8提取对象集合中的一项属性
    vue 函数节流
    ALINK(三十一):特征工程(十)特征选择(二)卡方选择器 (ChiSqSelectorBatchOp)
    ALINK(三十):特征工程(九)特征选择(一)主成分分析(PcaTrainBatchOp/PcaPredictBatchOp)
    ALINK(二十九):特征工程(八)特征组合与交叉(三)Hash Cross特征 (HashCrossFeatureBatchOp)
    ALINK(二十八):特征工程(七)特征组合与交叉(二)Cross特征预测/训练 (CrossFeaturePredictBatchOp)
    ALINK(二十七):特征工程(六)特征组合与交叉(特征组合也叫特征交叉)(一)
    ALINK(二十六):特征工程(五)特征离散化(五)二值化 (BinarizerBatchOp)
  • 原文地址:https://www.cnblogs.com/zhuzhaoli/p/10700911.html
Copyright © 2020-2023  润新知