1、进程概念

         通俗的讲进程就是一个运行起来的程序,只占用系统的内存空间,并且有唯一的进程标识符(PID),但和程序又有区别,程序是指令加数据,是一个进程指令的集合,可以启用一个或者多个进程,是静态的,而且长久保存。进程是动态的,有生命周期,是动态产生的,进程一旦消失,内存空间就会跟着释放。

         linux内核存储进程的信息的格式是task_struct,多个task_struct组成链表task_list,通过这个两个来定义和管理进程。


   进程的分类:

         1、根据不同模式:

            1.1、守护进程 :系统一开始启动的,在系统引导过程中启动的进程。

                1.2、用户进程:终端启动的进程和用户启动的进程

             使用pstree命令查看进程树:                    

[root@magedu network-scripts]# pstree
systemd─┬─NetworkManager───3*[{NetworkManager}]
        ├─agetty
        ├─anacron
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─dmeventd───2*[{dmeventd}]
        ├─firewalld───{firewalld}
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───su───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

           系统上父进程就是systemd,其它进程都是它的子进程。


          2、根据进程的的运行状态:

                       2.1、运行状态:running

                       2.2、就绪态:ready     随时可以启动

                       2.3、睡眠态:又分为四种

                                  可中断:interrupttable

                                  不可中断:uninterrupttable

                                  停止态:stoped, 暂停于内存中,除非手动启动

                                  僵死态:zombie  

          3、根据操作的密集型划分:

                   CPU-Bound:占用cpu较多的进程

                   IO-Bound:     占用I/O较多的进程

        

             ps命令:查看系统上进程的状态

                        ps [option]:

                                  -a:显示所有终端相关的进程

                                  -x:显示所有终端无关的进程

                                  -u:显示已用户为中心的进程状态信息

                            组合命令:aux                 注意:以 [ ] 表示的都是内核线程

[root@magedu network-scripts]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.7  57756  7608 ?        Ss   Mar24   0:04 /usr/lib/systemd/systemd --switch
root         2  0.0  0.0      0     0 ?        S    Mar24   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Mar24   0:09 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Mar24   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Mar24   0:00 [migration/0]
   VSZ:虚拟内存集       // 虚拟内存使用大小   
   RSS:常驻内存集       // 所有不能被置换出去的内存集                             
   TTY:终端用户         // ?是表示与终端无关的进程
   START:启动时间   
   TIME:运行时间 
   COMMAND:进程的运行命令  // [ ]表示的内核线程
   STAT:内存状态
        R:running
        S: 可中断的睡眠
        D:不可终端的睡眠
        T:停止状态
        Z:僵死态
        +:前台进程
        l: 多线程进程
        N:低优先级进程
        <:高优先级进程
        s: 会话主导者

            常用组合命令2:-ef

                                -e:显示所有进程

                                -f :显示完整格式的进程信息                    

[root@magedu network-scripts]# ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar24 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system 
root         2     0  0 Mar24 ?        00:00:00 [kthreadd]
root         3     2  0 Mar24 ?        00:00:09 [ksoftirqd/0]

PPID:表示的是父进程PID

      常用组合3:-eEH

                              -F:显示完整格式的进程信息,额外信息

                              -H:以层级结构显示进程的相关信息      

[root@magedu network-scripts]# ps -eFH 
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         2     0  0     0     0   0 Mar24 ?        00:00:00 [kthreadd]
root         3     2  0     0     0   0 Mar24 ?        00:00:09   [ksoftirqd/0]
root         5     2  0     0     0   0 Mar24 ?        00:00:00   [kworker/0:0H]
root         7     2  0     0     0   0 Mar24 ?        00:00:00   [migration/0] 

C:表示cpu百分比
PSR:运行于哪颗CPU上

         -o:自定义要显示的字段,选项之间用逗号隔开.               

                            pid,ni,pri,psr,pcpu,stat,comm,tty,ppid

                                  ni:nice值,越小优先级越高

                                  pri:优先级

                                  rtprio:实时优先级 

          常用组合4:-eo       axo       

[root@magedu network-scripts]# ps -eo pid,ni,pri,comm,user
  PID  NI PRI COMMAND         USER
    1   0  19 systemd         root
    2   0  19 kthreadd        root
    3   0  19 ksoftirqd/0     root

       

       top:显示占用资源最多的进程排名信息                  

[root@magedu network-scripts]# top
top - 04:58:36 up 11:29,  1 user,  load average: 0.00, 0.01, 0.05
#     系统时间   登录时间  登录用户    系统负载:1分钟 5分钟  15分钟
Tasks: 233 total,   2 running, 231 sleeping,   0 stopped,   0 zombie
#    任务总数       运行进程    睡眠进程         停止进程     僵死进程
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1010340 total,   700440 free,   140788 used,   169112 buff/cache
#    内存总数                闲置内存数     使用内存数       缓存大小(可回收)
KiB Swap:  2097148 total,  2097148 free,        0 used.   705236 avail Mem
#      交换分区空间          剩余交换分区   使用交换分区   可用的内存大小
# %Cpu(s):  0.3 us:运行于用户空间所占用的cpu百分比
# %Cpu(s):  0.3 sy: 运行于内核空间所占用的cpu百分比
# ni: nice值调整占用cpu的百分比
# id: 系统空闲所占用cpu的百分比
# wa: 等待I/O所占用的cpu百分比
# hi:硬件中断所占用的cpu百分比
# si:软件终端所占用的cpu百分比
# st:一般指虚拟机所占用的cpu百分比 
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
 6382 root      20   0       0      0      0 S  0.3  0.0   0:04.82 kworker/0:1    
 
 #PR: 优先级  
 #NI: nice值    
 #VIRT:虚拟内存集    
 #RES: 常驻内存集   
 #SHR: 共享内存集

             选项:

                                   -d #:指定刷新时间的间隔,默认为3秒

                                   -b:以批次方式显示

                                   -n #:显示多少批次

[root@magedu yum.repos.d]# top -d 5 -b -n 3

      htop命令:比top更炫酷狂拽掉渣天,支持鼠标点击。

             需要先安装htop,直接yum -y install htop

      linux中进程管理的三大工具及进程查看命令_linux

 




















          选项:

                         -d #:指定延迟时间间隔

                         -u UserName:仅显示指定用户的进程

                         -s COLUME:以指定字段进程排序

                    子命令:

                          l:显示选定的进程打开的文件列表

                          s: 显示跟踪选定的进程的系统调用

                          t: 以层级关系显示各进程状态

                         a: 将选定的进程绑定至某指定的cpu核心


       dstat命令:实时更新系统的信息

                    linux中进程管理的三大工具及进程查看命令_动态_02

            选项:                    

            -c:显示cpu                                                --tcp:       显示tcp信息

                      -C #,#:分别显示每一颗                           --udp:      显示udp信息

                      -d:显示disk                                            --raw:      显示raw信息 

                      -D sda,sdb                                              --socket:    显示套接字信息 

                      -g:显示page相关的速率数据                        --top-cpu:显示最占cpu的进程

                      -m:memory的相关统计数据                         --top-io:  显示最占IO的进程

                     -n:Interface的相关统计数据                          --top-mem: 显示最占内存的进程

                     -p:显示process的相关统计数据                     --top-lantency:  显示延迟最大的进程

                     -r:显示io请求的相关的统计数据                      -l:显示系统负载

                     -s:显示swapped的相关统计数据

             示例:

           linux中进程管理的三大工具及进程查看命令_动态_03