Linux 进程


进程是一个运行在linux中的程序的实例,linux可以同时运行多个进程。


ps

ps命令(process status)显示当前所有进程的状态。

$ ps -ef
$ ps aux

ps -ef命令显示所有用户的进程。

ps aux命令显示所有用户的进程。使用BSD格式显示。

输出:

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 185720  5628 ?        Ss   6月14   0:11 /lib/systemd/systemd --system --deserialize 20
root          2  0.0  0.0      0     0 ?        S    6月14   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    6月14   0:01 [ksoftirqd/0]

列说明:

  • USER,用户名,进程的拥有者
  • PID,进程ID
  • %CPU,cpu使用比率
  • %MEM,内存使用比率
  • VSZ,虚拟内存大小(virtual size),单位为Kbytes
  • RSS,实际使用内存大小(resident set size),单位为Kbytes
  • TTY,进程运行的终端,如果和终端没关系,则显示?
  • STAT,进程的运行状态
  • START,进程开始执行的时间
  • TIME,进程使用cpu的时间
  • COMMAND,命令和参数

top

top命令显示和定时更新进程的信息。top命令默认按%CPU列对进程排序,只显示排在前面的进程信息。

top命令的输出由二部分组成,上面部分是系统的概要说明,下面部分是进程列表。

输出:

top - 14:16:28 up 1 day, 16:14,  1 user,  load average: 0.21, 0.07, 0.02
Tasks: 281 total,   1 running, 279 sleeping,   1 stopped,   0 zombie
%Cpu(s):  1.3 us,  0.7 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3144020 total,   422184 free,  1212132 used,  1509704 buff/cache
KiB Swap:  1046524 total,   837896 free,   208628 used.  1541024 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1768 mad       20   0 1588704 162088  21260 S   2.3  5.2   6:55.32 compiz
  1284 root      20   0  539420 101824  35728 S   1.3  3.2   8:14.40 Xorg
     7 root      20   0       0      0      0 S   0.3  0.0   0:35.32 rcu_sched

说明:

第1行:

  • 14:16:28,当前时间
  • up 1 day, 16:14,系统已经运行了多长时间
  • 1 user,登录用户个数
  • load average: 0.21, 0.07, 0.02,最近1分钟、5分钟、15分钟的系统平均负载。平均负载指等待运行的进程的个数。平均负载小于1.0表示系统不是太忙。

第2行:

所有进程个数和不同进程状态的进程个数。

第3行:

  • 1.3 us,用户进程(user processes)的cpu使用率为1.3%
  • 0.7 sy,系统进程(system processes)的cpu使用率为0.7%
  • 0.0 ni,低优先级进程(nice processes)的cpu使用率为0.0%
  • 98.0 id,cpu空闲率为98%
  • 0.0 wa,cpu等待输入输出(I/O)的比率为0.0%
  • 0.0 hi,处理硬件中断的cpu使用率为0.0%
  • 0.0 si,处理软件中断的cpu使用率为0.0%
  • 0.0 st,被虚拟机管理程序偷取的cpu使用率为0.0%

第4行:

  • 3144020 total,总的物理内存,单位Kbytes,total为free、used、buff/cache三者之和
  • 422184 free,未使用的物理内存,单位Kbytes
  • 1212132 used,已使用的物理内存,单位Kbytes
  • 1509704 buff/cache,buff为内核缓冲区(kernel buffers)使用的内存,cache为页面缓存(page cache)和slabs使用的内存。buff/cache为buff和cache占用内存之和。这部分内存在free不够用时会被linux释放出来。

第5行:

交换区(虚拟内存)的使用情况。avail Mem为新运行程序可以使用的物理内存的估计值。

进程列表:

  • PR字段,任务优先级(Priority)
  • VIRT字段,虚拟内存
  • RES字段,进程使用的物理内存
  • TIME+字段,进程启动后使用cpu时间的总和
  • COMMAND字段,显示启动进程的命令行或命令名,输入c可以切换显示命令行或命令名

    $ top -o %MEM

top -o %MEM命令显示按%MEM字段排序的所有用户的进程。也可以按VIRT、RES、TIME+、%CPU等字段排序。

kill

kill命令终止程序的运行。

$ kill 123
$ kill -9 123

kill 123命令终止PID为123的程序的运行。

kill -9 123命令强制终止PID为123的程序的运行。在kill 123命令终止不了程序的情况下使用kill -9 123命令强制终止。

pkill

pkill命令终止匹配指定模式的程序的运行。可以一次终止多个进程。

$ pkill nginx

pkill nginx命令终止程序名匹配nginx的所有程序的运行。