linux进程及作业管理(二)---命令及管理工具

目录

进程文件/proc/PID

PS

pgrep, pkill

 pidof

 top           

 htop      ​     

vmstat        

dstat      

pmap

 glances           

kill           

killall



Linux系统上的进程查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup, nice, renice, killall等等

进程文件/proc/PID

linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
进程:
 /proc/#:

[root@localhost ~]# ll /proc/56460
total 0
dr-xr-xr-x. 2 apache apache 0 Nov 22 11:57 attr
-rw-r--r--. 1 root   root   0 Nov 23 20:42 autogroup
-r--------. 1 root   root   0 Nov 23 20:42 auxv
-r--r--r--. 1 root   root   0 Nov 23 20:42 cgroup
--w-------. 1 root   root   0 Nov 23 20:42 clear_refs
-r--r--r--. 1 root   root   0 Nov 22 03:09 cmdline
-rw-r--r--. 1 root   root   0 Nov 23 20:42 comm
-rw-r--r--. 1 root   root   0 Nov 23 20:42 coredump_filter
-r--r--r--. 1 root   root   0 Nov 23 20:42 cpuset
lrwxrwxrwx. 1 root   root   0 Nov 23 20:42 cwd -> /
-r--------. 1 root   root   0 Nov 23 20:42 environ
lrwxrwxrwx. 1 root   root   0 Nov 23 10:33 exe -> /usr/sbin/httpd
...

PS

 ps - report a snapshot of the current processes.静态的快照信息。

                ps [options]:
                    选项有三种风格:
                        1   UNIX options, which may be grouped and must be preceded by a dash.
                        2   BSD options, which may be grouped and must not be used with a dash.
                        3   GNU long options, which are preceded by two dashes.
                    
                    启动进程的方式:
                        系统启动过程中自动启动:与终端无关的进程;
                        用户通过终端启动:与终端相关的进程;
                        
                    选项:
                        a:所有与终端相关的进程;
                        x:所有与终端无关的进程;
                        u:以用户为中心组织进程状态信息显示;

                    常用组合之一:aux
                        [root@localhost ~]# ps aux
                            USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
                            root         1  0.4  0.4 210440  9280 ?        Ss   Jun17 877:11 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
                            root         2  0.0  0.0      0     0 ?        S    Jun17   2:31 [kthreadd]
                            root         4  0.0  0.0      0     0 ?        S<   Jun17   0:00 [kworker/0:0H]
                        以用户为中心的进程信息,字段信息:

                            VSZ:虚拟内存集;
                            RSS:Resident Size,常驻内存集(不能被交换出去的),一般虚拟内存集大于常驻内存集。
                            STAT:进程状态
                                R:running
                                S:interruptable sleeping(可中断睡眠)
                                D:uninterruptable sleeping(不可中断睡眠)
                                T:Stopped (停止)
                                Z:zombie    (僵尸态)
                                
                                +:前台进程
                                l:多线程进程
                                N:低优先级进程
                                <:高优先级进程
                                s:session leader 

                   Ss     s进程的领导者,父进程
                   S<    <优先级较高的进程
                   SN     N优先级较低的进程
                   R+      +表示是前台的进程组
                   Sl     以线程的方式运行

                            TIME:运行的累积时长
                            COMMAND:由什么命令启动的进程

                        root@localhost ~]# ps  x
                            PID TTY      STAT   TIME COMMAND
                                1 ?        Ss   877:08 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
                                2 ?        S      2:31 [kthreadd]
                                4 ?        S<     0:00 [kworker/0:0H]
                                6 ?        S      9:08 [ksoftirqd/0]
                                7 ?        S      0:04 [migration/0]
                                8 ?        S      0:00 [rcu_bh]
                                9 ?        S    585:51 [rcu_sched]
                            以上命令显示与终端无关的进程信息,因此tty显示问号,最后一列中括号括起来的标识内核程序的线程(轻量级的进程,一个进程可分为多个线程,以实现并行运行程序)

                        -e:显示所有进程
                        -f:显示完整格式的进程信息
                        
                        常用组合之二:-ef

                        [root@localhost ~]# ps -ef|head
                            UID        PID  PPID  C STIME TTY          TIME CMD
                            root         1     0  0 Jun17 ?        15:49:12 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
                            root         2     0  0 Jun17 ?        00:02:34 [kthreadd]
                            root         4     2  0 Jun17 ?        00:00:00 [kworker/0:0H]
                            root         6     2  0 Jun17 ?        00:09:22 [ksoftirqd/0]
                            root         7     2  0 Jun17 ?        00:00:04 [migration/0]
                            root         8     2  0 Jun17 ?        00:00:00 [rcu_bh]
                            root         9     2  0 Jun17 ?        10:14:01 [rcu_sched]
                            root        10     2  0 Jun17 ?        00:00:00 [lru-add-drain]
                            root        11     2  0 Jun17 ?        00:12:16 [watchdog/0]

                        -F:显示完整格式的进程信息;
                            C: cpu utilization
                            PSR:运行于哪颗CPU之上
                        -H:以层级结构显示进程的相关信息;

                     常用组合之三:-eFH

                        [root@localhost ~]# ps -eFH |head
                            UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
                            root         2     0  0     0     0   6 Jun17 ?        00:02:31 [kthreadd]
                            root         4     2  0     0     0   0 Jun17 ?        00:00:00   [kworker/0:0H]
                            root         6     2  0     0     0   0 Jun17 ?        00:09:08   [ksoftirqd/0]
                            root         7     2  0     0     0   0 Jun17 ?        00:00:04   [migration/0]
                            root         8     2  0     0     0   0 Jun17 ?        00:00:00   [rcu_bh]
                            root         9     2  0     0     0   0 Jun17 ?        09:45:55   [rcu_sched]
                            root        10     2  0     0     0   0 Jun17 ?        00:00:00   [lru-add-drain]
                            root        11     2  0     0     0   0 Jun17 ?        00:12:03   [watchdog/0]
                            root        12     2  0     0     0   1 Jun17 ?        00:04:00   [watchdog/1]
                        字段PSR:运行的CPU核心

                     常用组合之四:-eo, axo
                            o  field1, field2,...:自定义要显示的字段列表,以逗号分隔;
                                常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
                                    ni:nice值;
                                    priority:priority, 优先级;
                                    rtprio:real time priority,实时优先级;

                        [root@localhost ~]# ps axo pid,ppid,ni,pri,rtprio,stat,comm
                        PID  PPID  NI PRI RTPRIO STAT COMMAND
                            1     0   0  19      - Ss   systemd
                            2     0   0  19      - S    kthreadd
                            4     2 -20  39      - S<   kworker/0:0H
                            6     2   0  19      - S    ksoftirqd/0
                            7     2   - 139     99 S    migration/0
                            8     2   0  19      - S    rcu_bh
                            9     2   0  19      - S    rcu_sched
                        10     2 -20  39      - S<   lru-add-drain
                        11     2   - 139     99 S    watchdog/0

pgrep, pkill

                - look up or signal processes based on name and other attributes
                
                pgrep [options] pattern
                    -u uid:effective user
                    -U uid:read user
                    -t  TERMINAL:与指定的终端相关的进程;
                    -l:显示进程名;
                    -a:显示完整格式的进程名;
                    -P pid:显示此进程的子进程;

     
 pidof

                根据进程名,取其pid;

[root@localhost ~]# pidof httpd
56464 56463 56462 56461 56460 13766
[root@localhost ~]# pidof systemd
1

               
 top           

 - display Linux processes
                
                排序:
                    P:以占据CPU百分比排序;
                    M:以占据内存百分比排序;
                    T:累积占用CPU时间排序;
                    
                首部信息:
                    uptime信息:l命令(显示或关闭)
                    tasks及cpu信息:t命令(显示或关闭)
                    内存信息:m命令(显示或关闭)
                    多核CPU分别显示信息:1(数字1)(显示或关闭)                 

                    top - 16:47:16 up 152 days,  6:12,  3 users,  load average: 0.01, 0.02, 0.05
                    Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie
                    %Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                            us:    用户程序占据百分比
                            sy:内核百分比
                            ni:调整nice占据百分比
                            id:空闲百分比
                            wa:等待io完成的时间,一个程序运行需要IO操作时,需等待磁盘的数据载入到内核内存中再复制到进程内容中,这个过程需要等待。大量的IO等待时间,表示磁盘成为瓶颈。
                            hi:处理硬中断消耗
                            si:处理软中断消耗
                            st:虚拟机偷走的
                    %Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu4  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu5  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    %Cpu7  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                    KiB Mem : 33.0/1872836  [|||||||||||||||||||||||||||||||||                                                                   ]
                    KiB Swap:  0.0/0        [                                                                                                    ]
                    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
                                PR:优先级;VIRT:虚拟内存集 RES:常驻内存集 SHR:共享内容  S:状态                                                                                                                                                                                             
                    890 root      20   0  358756  29520   7052 S   0.0  1.6   0:42.73 firewalld                                                                                                                                                                                                
                    1187 root      20   0  574208  19468   6108 S   0.0  1.0  45:12.09 tuned                                                                                                                                                                                                    
                    1194 root      20   0 1006380  18460  11308 S   0.0  1.0   0:00.45 libvirtd                                                                                                                                                                                                 
                    855 polkitd   20   0  616304  15476   4976 S   0.0  0.8   1:56.65 polkitd     

                退出命令:q
                修改刷新时间间隔:s
                终止指定的进程:k
                
               执行可选 选项:
                    -d #:指定刷新时间间隔,默认为3秒;
                    -b:以批次方式显示;
                    -n #:显示多少批次;      
                
            uptime命令:显示系统时间、运行时长及平均负载;
                过去1分钟、5分钟和15分钟的平均负载(等待运行的进程队列的长度)


                    
htop    


        htop命令:
            执行可选选项:
                -d #:指定延迟时间间隔;
                -u UserName:仅显示指定用户的进程;
                -s COLUME:以指定字段进行排序;
            子命令:
                l:显示选定的进程打开的文件列表;
                s:跟踪选定的进程的系统调用;
                t:以层级关系显示各进程状态;
                a:将选定的进程绑定至某指定的CPU核心; 

           htop命令需要另外安装的,F1-F10多个菜单,可查找、过滤、排序、杀进程等,功能是top加强版 ,F1帮助里面有详细说明,F2可以设置显示方式,F4过滤后删除关键字需要按ctrl键。

   
        

 F2进入后选择选项按空格可改变样式。

 

vmstat        

vmstat命令:虚拟内存状态(古老而牛逼)
            - Report virtual memory statistics
            
            vmstat  [options]  [delay [count]]


                procs:
                    r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;
                    b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;
                memory:
                    swpd:交换内存使用总量;
                    free:空闲的物理内存总量;
                    buffer:用于buffer的内存总量;
                    cache:用于cache的内存总量;
                swap
                    si:数据进入swap中的数据速率(kb/s)
                    so:数据离开swap的速率(kb/s)
                io
                    bi:从块设备读入数据到系统的速度(kb/s)
                    bo:保存数据至块设备的速率(kb/s)
                system
                    in:interrupts,中断速率;
                    cs:context switch, 上下文 切换的速率(进程切换);
                cpu 
                    us: user space 用户空间使用占比
                    sy:system 系统调用时间占比
                    id:idle   空闲
                    wa:wait     等待
                    st: stolen  虚拟化偷走的
        
            选项:
                -s:显示内存统计数据;


 

dstat      

 dstat命令:(比vmstat更强大),查看系统主要资源状态的 ,需另外安装
            - versatile tool for generating system resource statistics
           
            dstat [-afv] [options..] [delay [count]]
            
            常用选项:
                -c, --cpu:显示cpu相关信息;
                    -C #,#,...,total


                -d, --disk:显示磁盘的相关信息
                    -D sda,sdb,...,total
                -g:显示page相关的速率数据;
                -m:Memory的相关统计数据
                -n:Interface的相关统计数据;
                -p:显示process的相关统计数据;
                -r:显示io请求的相关的统计数据;
                -s:显示swapped的相关统计数据;
                
                --tcp 
                --udp
                --raw 
                --socket 
                
                --ipc 
                
                --top-cpu:显示最占用CPU的进程;
                --top-io:最占用io的进程;
                --top-mem:最占用内存的进程;
                --top-latency:延迟最大的进程;    

pmap

      
pmap命令:
            - report memory map of a process
            报告内存映射表
            pmap [options] pid [...]
                -x:显示详细格式的信息;

            
        [root@wjsdb01 ~]# pmap 1
        1:   /sbin/init
        00007fa908d24000     52K r-x--  /lib64/libnss_files-2.12.so (deleted)
        00007fa908d31000   2044K -----  /lib64/libnss_files-2.12.so (deleted)
        00007fa908f30000      4K r----  /lib64/libnss_files-2.12.so (deleted)
        00007fa908f31000      4K rw---  /lib64/libnss_files-2.12.so (deleted)
        00007fa908f32000   1576K r-x--  /lib64/libc-2.12.so (deleted)

        从上面的结果显示libnss_files-2.12.so 文件被存放在内存中的多个不连续区域。
                
            另一种查看方式:cat  /proc/PID/maps
            [root@iZuf6eufalzdvyatns3d5qZ proc]# cat /proc/1/maps 
            7f1267708000-7f1267715000 r-xp 00000000 fc:01 131104                     /lib64/libnss_files-2.12.so
            7f1267715000-7f1267914000 ---p 0000d000 fc:01 131104                     /lib64/libnss_files-2.12.so
            7f1267914000-7f1267915000 r--p 0000c000 fc:01 131104                     /lib64/libnss_files-2.12.so
            7f1267915000-7f1267916000 rw-p 0000d000 fc:01 131104                     /lib64/libnss_files-2.12.so

 glances           


        glances命令,很强大的工具,类似于windows的任务管理器,需另外安装
            - A cross-platform curses-based monitoring tool
            
                
            常用选项:

                -b:以Byte为单位显示网上数据速率;
                -d:打开/关闭磁盘I/O模块;
                -m:打开/关闭mount模块;
                -n:打开/关闭network模块;
                -t #:刷新时间间隔;
                -1:每个cpu的相关数据单独显示;
                -o {HTML|CSV}:输出格式;
                -f  /PATH/TO/SOMEDIR:设定输出文件的位置;

               回车键:可以搜索进程关键字
                h:帮助,再按一次h返回原页面;
            
            C/S模式下运行glances命令:
                服务模式:
                    glances  -s  -B  IPADDR
                    
                    IPADDR:本机的某地址,用于监听;
                    
                客户端模式:
                    glances  -c  IPADDR
                    
                    IPADDR:是远程服务器的地址;
                    

kill           

            IPC: Inter Process Communication (进程间通信)
            同一主机上:
                signal (信号)(常见方式)
                shm: shared memory (共享内存数据)
                semerphor (小指示)

            不同主机上:
                rpc: remote procecure call (远程过程调用)(基于socket的高级的跨主机通信方式)
                socket: (基于TCP通信,内核创建socket文件,记录端口和ip,程序通过这个socket文件读写数据,实现不同主机通信)

        kill命令:
            
            - terminate a process
            
            用于向进程发送信号,以实现对进程的管理;
                        显示当前系统可用信号:
                kill -l [signal]
                
                每个信号的标识方法有三种:
                    1) 信号的数字标识;1,2,9
                    2) 信号的完整名称;SIGHUP,SIGTERM
                    3) 信号的简写名称;HUP,TERM
                    
            向进程发信号:
                kill  [-s signal|-SIGNAL]  pid...
                
                常用信号:
                    1) SIGHUP:无须关闭进程而让其重读配置文件;
                    2)SIGINT:终止正在运行的进程,相当于Ctrl+c
                    9)SIGKILL:杀死运行中的进程;(立即关闭)
                    15)SIGTERM:终止运行中的进程;(正常关闭)
                    18)SIGCONT:让处于停止态的进程进行允许,手动调度。
                    19)SIGSTOP:让进程处于停止态
            [root@localhost ~]# kill -15 12135
            [root@localhost ~]# ps aux |grep httpd
            root     12130  0.1  0.2 224084  5052 ?        Ss   10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12131  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12132  0.0  0.1 226168  3108 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12133  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12134  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12374  0.0  0.1 226168  3112 ?        S    10:37   0:00 /usr/sbin/httpd -DFOREGROUND
            root     12381  0.0  0.0 112712   960 pts/0    S+   10:37   0:00 grep --color=auto httpd
            [root@localhost ~]# kill -SIGTERM 12374
            [root@localhost ~]# ps aux |grep httpd
            root     12130  0.1  0.2 224084  5052 ?        Ss   10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12131  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12132  0.0  0.1 226168  3108 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12133  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12134  0.0  0.1 226168  3112 ?        S    10:33   0:00 /usr/sbin/httpd -DFOREGROUND
            apache   12401  0.0  0.1 226168  3112 ?        S    10:38   0:00 /usr/sbin/httpd -DFOREGROUND
            root     12404  0.0  0.0 112712   956 pts/0    S+   10:38   0:00 grep --color=auto httpd
            [root@localhost ~]# kill -TERM 12401

killall

                 
        killall命令:
            终止“名称”之下的所有进程,
            - kill processes by name
            
            killall  [-SIGNAL]  program
            [root@localhost ~]# killall -15 httpd
                [root@localhost ~]# ps aux |grep httpd
                root     13632  0.0  0.0 112712   960 pts/0    S+   10:59   0:00 grep --color=auto httpd
            
            有时候需要不关闭程序而重读配置文件,比如修改了目录文件路径,这时候需要用SIGHUP选项,但不是所有的修改都能这样(修改端口)
            [root@localhost ~]# killall -1 httpd
            [root@localhost ~]# killall -l
            HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
            STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
            UNUSED
            [root@localhost ~]# killall -HUP httpd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值