Linux进程管理

一.进程管理工具

1.各版本init进程

1.centos 5:SysV init

系统启动及引导时创建各子进程,通过shell脚本实现,由于脚本中每个命令都会启动一个进程,所以其开机速度很慢。

2.centos 6:upstart

系统开及引导时,可使用并行的方式启动某些有关联的进程,提升开机速度。

3.cetos 7:systemd

开机后启动一个init进程,通过此进程启动各项服务,引导系统(其背后最多启动几十个进程),开机及关机速度很快。

ps:init进程:/sbin/init

2.ps命令

1./proc/:内核中的状态信息

1.内核参数:可设置其相关的值从而调整内核运行特性的参数:/proc/sys

2.状态变量:用于输出内核中统计信息或状态信息,仅用于查看信息

3.参数:将内核参数模拟成文件系统类型,文件,目录方式

4./proc/PID:进程的相关信息

5.pstree:已树状结构显示进程(display a tree of processes)

[root@kasumi ~]# ls /proc/
1     1453  1594  242  303   47   577   6452  724  99           interrupts  mpt            tty
10    1457  1606  243  304   483  578   6501  725  acpi         iomem       mtrr           uptime
1034  1463  17    246  305   484  579   6526  726  asound       ioports     net            version
11    1464  1704  247  31    5    580   6542  728  buddyinfo    irq         pagetypeinfo   vmallocinfo
1155  1470  1712  25   3149  503  581   6557  729  bus          kallsyms    partitions     vmstat
1156  1475  18    255  32    506  582   658   730  cgroups      kcore       sched_debug    zoneinfo
1176  1479  19    256  33    515  583   66    733  cmdline      keys        schedstat
1190  1488  2     257  375   518  584   660   734  consoles     key-users   scsi
1192  1495  20    295  399   520  607   664   735  cpuinfo      kmsg        self
1193  15    21    296  400   521  608   684   736  crypto       kpagecount  slabinfo
1194  1522  22    297  407   567  614   685   745  devices      kpageflags  softirqs
12    1541  23    298  41    568  615   686   749  diskstats    loadavg     stat
13    1545  2330  299  410   569  619   687   751  dma          locks       swaps
1307  1548  2336  3    42    570  620   689   762  driver       mdstat      sys
1311  1556  239   30   43    571  6220  690   772  execdomains  meminfo     sysrq-trigger
1399  1565  24    300  438   572  626   691   782  fb           misc        sysvipc
1400  1569  240   301  45    573  6330  693   8    filesystems  modules     timer_list
1438  1570  241   302  469   574  6427  7     9    fs           mounts      timer_stats

2.ps命令

1.ps命令:报告当前进程的快照(report a snapshot of the current processes)
1)ps [options]:三种风格选项

1.UNIX options, which may be grouped and must be preced(必须带有"-")
2.2   BSD options, which may be grouped and must not be used with a dash.(必须不带"-")
3.3   GNU long options, which are preceded by two dashes.(长选项模式)

2)进程启动的方式

1.系统启动过程中自动启动:与终端无关的进程
2.用户通过终端启动:与终端相关的进程

2.常用组合之一:aux,显示用户相关,与相关及无关的所有进程信息
1)相关选项:

1.a:所有与终端相关的进程
2.x:所有与终端无关的选项
3.u:以用户为中心组织进程状态信息显示
[root@kasumi ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 128164  6812 ?        Ss   11:02   0:01 /usr/lib/systemd/systemd --switched-root
root          2  0.0  0.0      0     0 ?        S    11:02   0:00 [kthreadd]
root         24  0.0  0.0      0     0 ?        S<   11:02   0:00 [md]
root         25  0.0  0.0      0     0 ?        R    11:02   0:05 [kworker/0:1]
root         30  0.0  0.0      0     0 ?        S    11:02   0:00 [kswapd0]
root         31  0.0  0.0      0     0 ?        SN   11:02   0:00 [ksmd]
gdm        1565  0.0  2.1 1296440 21960 ?       Sl   11:02   0:00 /usr/libexec/gnome-settings-daemon
root       1569  0.0  0.2  54456  2980 ?        Ss   11:02   0:00 /usr/sbin/wpa_supplicant -u -f /var/log
gdm        1565  0.0  2.1 1296440 21960 ?       Sl   11:02   0:00 /usr/libexec/gnome-settings-daemon
root       1569  0.0  0.2  54456  2980 ?        Ss   11:02   0:00 /usr/sbin/wpa_supplicant -u -f /var/log
"aux第一行中各名称解释"
1.USER:进程的发起者
2.PID:进程号
3.%CPU:进程使用CPU占比
4.%MEM:进程使用内存占比
5.VSZ(Virtual memory SIZE):虚拟内存集,代表了其中实际用来存储数据大小的内存
6.RSS(Resident Size):常驻内存集,代表着内存中不能放入交换内存中的部分
7.TTY:进程在哪个终端运行
8.STAT:进程目前的状态
  1)R:running 运行状态
  2)S:interruptable sleeping 可中断睡眠状态
  3)D:uninterruptable sleeping 不可中断睡眠状态
  4)T:Stopped 暂停状态
  5)Z:zombie  僵死状态
  6)+:前台进程
  7)l:多线程进程
  8)N:低优先级进程
  9)<:高优先级进程
  10)s:session leader 会话领导者,若关闭此种状态进程,其下的子进程都会被关闭
9.START:进程被触发的时间
10.TIME:进程实际累加使用的cpu时间
11.COMMAND:触发此进程的命令

3.常用组合之二:-ef
1)相关选项:

1.-e:显示所有进程
2.-f:显示完整格式的进程信息
[root@kasumi ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 11:02 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --des
root          2      0  0 11:02 ?        00:00:00 [kthreadd]
root          3      2  0 11:02 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 11:02 ?        00:00:00 [kworker/0:0H]
root       1194      1  0 11:02 ?        00:00:00 /usr/sbin/crond -n
root       1307      1  0 11:02 ?        00:00:00 /usr/libexec/postfix/master -w
postfix    1311   1307  0 11:02 ?        00:00:00 qmgr -l -t unix -u
nobody     1399      1  0 11:02 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/
"ps -ef第一行中各名称解释"
1.UID /PID/PPID:分别代表了进程的发起者,进程号,父进程号
2.C:CPU使用率
3.STIME:进程的启动时间
4.TTY:登陆的终端位置,远程登录为pts/n,本地登录为ttyn,?表示系统进程
5.TIME:进程实际花费cpu的运行时间
6.CMD:触发此进程的命令

3.常用组合之三:-eFH
1)相关选项:

1.-F:显示完整格式的进程信息
2.-H:以层级结构显示进程的相关信息
[root@kasumi ~]# ps -eFH
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   0 11:02 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 11:02 ?        00:00:00   [ksoftirqd/0]
root          5      2  0     0     0   0 11:02 ?        00:00:00   [kworker/0:0H]
root          7      2  0     0     0   0 11:02 ?        00:00:00   [migration/0]
root          8      2  0     0     0   0 11:02 ?        00:00:00   [rcu_bh]

"ps -eFH第一行中各名称解释"
1.UID /PID/PPID:分别代表了进程的发起者,进程号,父进程号
2.C:CPU使用率
3.SZ:即VSZ,虚拟内存集
4.RSS:即常驻内存集
5.PSR:运行与哪颗CPU上
6.STIME:进程的启动时间
7.TTY:登陆的终端位置,远程登录为pts/n,本地登录为ttyn,?表示系统进程
8.TIME:进程实际花费cpu的运行时间
9.CMD:触发此进程的命令
  CMD同一列代表同级进程,缩进行代表其对应的子进程

4.常用组合之四:-eo, axo
1)相关选项:

1.-o field1,field2..:自定义要显示的字段列表,以逗号分隔
[root@kasumi ~]# ps -eo pid,ni,pri,tty,comm
   PID  NI PRI TT       COMMAND
     1   0  19 ?        systemd
     2   0  19 ?        kthreadd
     3   0  19 ?        ksoftirqd/0
     5 -20  39 ?        kworker/0:0H
     7   - 139 ?        migration/0
     8   0  19 ?        rcu_bh
     9   0  19 ?        rcu_sched
"常用的field"
1.pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
  1)pri(priority):优先级
  2)psr:运行于哪颗CPU之上
  3)pcpu:cpu占用比
  4)rtprio(real time priority):实时优先级

3.pgrep,pidof命令

1.pgrep命令

1.pgrep(look up or signal processes based on name and other attributes):根据名称和其他属性查找进程或向进程发出信号

2.语法:pgrep [options] pattern
1)相关选项

1.-U uid:read user,仅显示以指定用户身份运行的进程
2.-u uid:effective user,显示指定用户的有效进程
3.-t  TERMINAL:与指定的终端相关的进程
4.-l:显示进程名
5.-a:显示完整格式的进程名
6.-P pid:显示此进程的子进程

2)相关测试

指定用户的进程,并显示完整格式进程名
[root@kasumi ~]# pgrep -l -a  -U postfix
1311 qmgr -l -t unix -u
6220 pickup -l -t unix -u

[root@kasumi ~]# ps aux | grep postfix
root       1307  0.0  0.2  91628  2208 ?        Ss   11:02   0:00 /usr/libexec/postfix/master -w
postfix    1311  0.0  0.4  91908  4236 ?        S    11:02   0:00 qmgr -l -t unix -u
postfix    6220  0.0  0.4  91732  4012 ?        S    16:01   0:00 pickup -l -t unix -u
root       7374  0.0  0.0 112680   984 pts/0    S+   17:34   0:00 grep --color=auto postfix

显示指定进程的子进程
[root@kasumi ~]# ps aux | grep sshd
root       1176  0.0  0.4 105996  4084 ?        Ss   11:02   0:00 /usr/sbin/sshd -D
root       1704  0.0  0.5 147788  5228 ?        Ss   11:08   0:00 sshd: root@pts/0
root       2330  0.0  0.5 147788  5224 ?        Ss   11:26   0:00 sshd: root@pts/1
root       7528  0.0  0.0 112680   984 pts/0    S+   17:43   0:00 grep --color=auto sshd
[root@kasumi ~]# pgrep -P 2330
2336
[root@kasumi ~]# ps aux | grep 2336
root       2336  0.0  0.3 116704  3544 pts/1    Ss+  11:26   0:00 -bash
root       7531  0.0  0.0 112676   984 pts/0    S+   17:44   0:00 grep --color=auto 2336
查找指定模式的PID
[root@kasumi ~]# pgrep sshd
1176
1704
2330

2.pidof命令

1.pidof:根据进程名,取其pid

[root@kasumi ~]# pidof sshd
2330 1704 1176

4.top命令

1.top命令:- display Linux processes,动态显示进程状态

[root@kasumi ~]# top
top - 17:49:18 up  6:47,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999720 total,   215432 free,   328144 used,   456144 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   450316 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                            
     1 root      20   0  128164   6812   4052 S   0.0  0.7   0:01.45 systemd                            
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd                           
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0                        
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                       
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/0                        
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh 

2.top命令中个各行信息

1.第一行信息:
  1)17:49:18 :当前系统时间
  2)up 6:47:系统启动到现在所经过的时间
  3)2 users:当前已登录系统的用户数
  4)load average: 0.00, 0.01, 0.05  系统在1,5,15分钟的平均负载,其值越小表示系统越空闲,若高于1,需要注意是否负载过高
2.第二行信息:
  1)Tasks: 163 total 目前系统进程的总量
  2)需注意若zombie若不为0,则需要查看是否有处于僵死状态的进程
3.第三行信息
  1)显示的为cpu的整体负载
  2)若有多核心的cpu,可以使用数字键1来切换查看不同cpu的负债率
  3)0.0 us:user space用户运行程序的CPU占比
  4)0.2 sy:system(kernel space)内核空间进程CPU占比
  5)0.0 ni:nice值,用户空间所改变过优先级的进程所占用的CPU百分比
  6)99.8 id:idleCPU空闲占比
  7)0.0 wa:wait io 等待I/O花费的时间,若过大可能为磁盘读写效率问题
  8)0.0 hi:hardware interrupt,用于硬件中断的CPU占比
  9)0.0 si:software interrupt,用于软件中断的CPU占比
  10)0.0 st:被虚拟机"偷走"的CPU占比
4.第四行信息:表示物理内存的使用情况
5.第五行信息:表示交换分区的使用情况
6.第六行信息:默认显示为空白信息,若在top进程中输入命令时,显示状态的位置,可输入的命令为:
  1)P:已CPU占比排序
  2)M:已内存占比排序
  3)T:以累积CPU占用时间排序
  4)l:是否显示系统负载行
  5)t:是否显示进程摘要信息及CPU负载状态
  6)m:是否显示内存相关的状态信息
  7)1:数字1,平均或单独显示CPU的的敷在状态
  8)q:退出命令
  9)s:修改更新速率
  10)k:终止指定进程
7.第七行信息
  1)PID:进程号
  2)USER:进程所属的使用者
  3)PR:priority,进程优先级,越小级别越高
  4)Ni:nice值,与优先级有关,越小越先被执行
  5)VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存大小
  6)RES:进程当前使用的内存大小,不包括swap
  7)SHR:进程与其他进程的共享内存大小,若使用RES-SHR即为进程实际使用的物理内存大小
  8)S:进程的状态
  9)%CPU:CPU的使用率
  10)%MEM:内存的使用率
  11)TIME+:使用COU时间的累积
  12)COMMAND:启动进程的命令

ps:第一行信息可使用uptime命令显示,显示系统时间,系统已运行时间及平均负载。1,5,15分钟的平均负载,平均负载为等待运行的进程队列的长度。

[root@kasumi ~]# uptime
18:55:22 up  7:53,  2 users,  load average: 0.00, 0.01, 0.05

3.top选项
1)-d #:指定刷新时间间隔,默认为3秒
2)-b:以批次方式显示
3)-n #:显示多少批次

你可能感兴趣的:(linux基础学习)