进程相关命令。

1. 进程状态ps

命令ps(process status),如ps –aux

  • a 显示当行终端机下的所有程序,包括其他用户的程序

  • u 以用户为主的格式来显示程序状况

  • x 显示所有程序,不以终端机来区分

举例,

# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1 170316 13000 ?        Ss   Mar22   2:24 /lib/systemd/systemd --system --deserialize 35
root           2  0.0  0.0      0     0 ?        S    Mar22   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Mar22   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   Mar22   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   Mar22   0:00 [kworker/0:0H-kblockd]
root           9  0.0  0.0      0     0 ?        I<   Mar22   0:00 [mm_percpu_wq]
root          10  0.0  0.0      0     0 ?        S    Mar22   0:05 [ksoftirqd/0]
root          11  0.0  0.0      0     0 ?        I    Mar22  23:40 [rcu_sched]
root          12  0.0  0.0      0     0 ?        S    Mar22   0:22 [migration/0]
root          13  0.0  0.0      0     0 ?        S    Mar22   0:00 [idle_inject/0]
root          14  0.0  0.0      0     0 ?        S    Mar22   0:00 [cpuhp/0]
root          15  0.0  0.0      0     0 ?        S    Mar22   0:00 [cpuhp/1]
root          16  0.0  0.0      0     0 ?        S    Mar22   0:00 [idle_inject/1]
root          17  0.0  0.0      0     0 ?        S    Mar22   0:21 [migration/1]
root          18  0.0  0.0      0     0 ?        S    Mar22   0:03 [ksoftirqd/1]
root          20  0.0  0.0      0     0 ?        I<   Mar22   0:00 [kworker/1:0H-events_highpri]
root          21  0.0  0.0      0     0 ?        S    Mar22   0:00 [cpuhp/2]
root          22  0.0  0.0      0     0 ?        S    Mar22   0:00 [idle_inject/2]
root          23  0.0  0.0      0     0 ?        S    Mar22   0:21 [migration/2]
root          24  0.0  0.0      0     0 ?        S    Mar22   0:03 [ksoftirqd/2]
root          26  0.0  0.0      0     0 ?        I<   Mar22   0:00 [kworker/2:0H-kblockd]
root          27  0.0  0.0      0     0 ?        S    Mar22   0:00 [cpuhp/3]
root          28  0.0  0.0      0     0 ?        S    Mar22   0:00 [idle_inject/3]
root          29  0.0  0.0      0     0 ?        S    Mar22   0:21 [migration/3]
root          30  0.0  0.0      0     0 ?        S    Mar22   0:03 [ksoftirqd/3]
root          32  0.0  0.0      0     0 ?        I<   Mar22   0:00 [kworker/3:0H-events_highpri]
root          33  0.0  0.0      0     0 ?        S    Mar22   0:00 [cpuhp/4]
...

各项结果含义如下:

  • USER: 进程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小
  • RSS: 占用的内存大小
  • TTY: 终端的次要装置号码
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令
  • STAT: 该行程的状态,Linux的进程有5种状态:
  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 defunct (zombie) process
  • 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

2. top

top命令动态显示运行中的进程及其资源占用情况。top命令使用方法如下:

top -hv|-bcEHiOSs1 -d secs -n max -u|U user -p pid -o fld -w [cols]
  • d:指定更新的间隔,以秒计算
  • q:没有任何延迟的更新
  • c:显示进程完整的路径与名称
  • S:累积模式,会将己完成或消失的子行程的CPU时间累积起来
  • s:安全模式
  • i:不显示任何闲置(Idle)或无用(Zombie)的行程
  • n:显示更新的次数,完成后将会退出top

举例如下:

# top
top - 20:17:08 up 48 days,  2:58, 61 users,  load average: 0.20, 0.26, 0.31
Tasks: 611 total,   1 running, 577 sleeping,   6 stopped,  27 zombie
%Cpu(s):  0.9 us,  0.4 sy,  0.0 ni, 98.6 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :   7701.1 total,    745.7 free,   2937.8 used,   4017.6 buff/cache
MiB Swap:   4096.0 total,   4084.0 free,     12.0 used.   4465.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
3718638 u202121+  20   0 2326476  31160  12240 S   5.6   0.4   0:07.44 vim
3718646 u202121+  20   0  527892  73116  46344 S   2.3   0.9   0:02.99 python3
3714058 u202121+  20   0 2326600  32560  12448 S   2.0   0.4   0:11.30 vim
3714063 u202121+  20   0  528032  73532  46524 S   0.7   0.9   0:04.24 python3
     11 root      20   0       0      0      0 I   0.3   0.0  16:15.94 rcu_sched
    424 root      20   0       0      0      0 S   0.3   0.0   1:52.90 jbd2/dm-0-8
2854800 u202121+  20   0 1256924  87572  33560 S   0.3   1.1   1:21.55 node
2866993 u202121+  20   0 1019480 160492  38452 S   0.3   2.0   3:41.54 node
3707543 u202121+  20   0 2326636  31520  12520 S   0.3   0.4   0:09.03 vim
3707555 u202121+  20   0  528156  72668  45248 S   0.3   0.9   0:02.82 python3
3710188 u202121+  20   0   14064   5964   4484 S   0.3   0.1   0:00.29 sshd
3718785 u202121+  20   0   14064   6000   4520 S   0.3   0.1   0:00.07 sshd
3719355 u202121+  20   0 2325792  30752  12568 S   0.3   0.4   0:00.92 vim
3721450 u202121+  20   0   14064   5856   4388 S   0.3   0.1   0:00.03 sshd
3722435 root      20   0    9800   4556   3248 R   0.3   0.1   0:00.14 top
      1 root      20   0  170316  13000   7496 S   0.0   0.2   1:51.65 systemd

上述输出结果,

  • 第一行:当前时间、系统启动时间、当前系统登录用户数目、平均负载

  • 第二行:进程情况

    • 进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数
  • 第三行:CPU状态

    • 用户占用、系统占用、优先进程占用、闲置进程占用。
  • 第四行:内存状态

    • 平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存
  • 第五行:交换状态
    • 平均可用交换容量、已用容量、闲置容量、高速缓存容量

各列含义如下:

  • PRI,优先级
  • NI : nice值。负值表示高优先级,正值表示低优先级
  • RES(Memory usage):—该进程占用的物理内存的总数量,单位是KB
  • S表示进程状态
    • D = uninterruptible sleep,不可中断的睡眠状态
    • I = idle
    • R = running
    • S = sleeping
    • T = stopped by job control signal
    • t = stopped by debugger during trace
    • Z = zombie,僵尸进程

3. 打印进程树pstree

命令pstree打印进程树,举例如下:

~# pstree
systemd─┬─accounts-daemon───2*[{accounts-daemon}]
        ├─atd
        ├─4*[bash]
        ├─bash───vi─┬─python3───2*[{python3}]
        │           └─31*[{vi}]
        ├─9*[client]
        ├─cpptools-srv───19*[{cpptools-srv}]
        ├─cron
        ├─dbus-daemon
        ├─irqbalance───{irqbalance}
        ├─login───bash
        ├─multipathd───6*[{multipathd}]
        ├─networkd-dispat
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─screen───bash───sh───frpc───14*[{frpc}]
        ├─6*[server───server]
        ├─27*[server]
        ├─snapd───25*[{snapd}]
        ├─sshd─┬─sshd───sshd───bash───bash───sh───node─┬─node───10*[{node}]
        │      │                                       ├─node─┬─clangd.main───9*[{clangd.main}]
        │      │                                       │      └─11*[{node}]
        │      │                                       ├─node───12*[{node}]
        │      │                                       └─10*[{node}]
        │      ├─6*[sshd───sshd───bash]
        │      ├─sshd───sshd───bash───server
        │      ├─sshd───sshd───bash───client───2*[{client}]
        │      ├─sshd───sshd───bash───vim─┬─python3───2*[{python3}]
        │      │                          └─28*[{vim}]
        │      ├─sshd───sshd───bash─┬─sh───node─┬─node───10*[{node}]
        │      │                    │           ├─node─┬─cpptools───21*[{cpptools}]
        │      │                    │           │      ├─node───6*[{node}]
        │      │                    │           │      └─11*[{node}]
        │      │                    │           ├─node───12*[{node}]
        │      │                    │           └─10*[{node}]
        │      │                    └─sleep
        │      ├─5*[sshd───sshd───bash───vim─┬─python3───2*[{python3}]]
        │      │                             └─31*[{vim}]]
        │      ├─sshd───sshd───bash───vim─┬─python3───2*[{python3}]
        │      │                          └─21*[{vim}]
        │      ├─sshd───sshd───bash───vim─┬─bash───sudo
        │      │                          ├─python3───2*[{python3}]
        │      │                          └─31*[{vim}]
        │      ├─sshd───sshd───bash─┬─vim─┬─python3───2*[{python3}]
        │      │                    │     └─15*[{vim}]
        │      │                    └─vim─┬─python3───2*[{python3}]
        │      │                          └─31*[{vim}]
        │      ├─sshd───bash
        │      ├─sshd───sshd───sftp-server
        │      ├─sshd───bash───pstree
        │      ├─sshd───sshd───bash───vim─┬─python3───2*[{python3}]
        │      │                          └─13*[{vim}]
        │      └─sshd───sshd───bash───vim─┬─python3───2*[{python3}]
        │                                 └─10*[{vim}]
        ├─18*[systemd───(sd-pam)]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd───systemd-udevd
        ├─thermald───{thermald}
        ├─tmux: server───4*[bash]
        ├─udisksd───4*[{udisksd}]
        ├─unattended-upgr───{unattended-upgr}
        └─upowerd───2*[{upowerd}]

打印某个进程的进程树,在pstree后面加上pid(参数-p是为了输出结果显示进程ID),举例,

# pstree -p 2003190
fork_two_childr(2003190)─┬─fork_two_childr(2003191)
                         └─fork_two_childr(2003192)

4. 打印进程的统计信息

命令prtstat打印某个进程的统计信息,使用方法如下:

prtstat [-r|--raw] pid

举例,

# prtstat 2067445
Process: fork_two_childr                State: S (sleeping)
  CPU#:  3              TTY: 136:47     Threads: 1
Process, Group and Session IDs
  Process ID: 2067445             Parent ID: 2003036
    Group ID: 2067445            Session ID: 2003036
  T Group ID: 2067445

Page Faults
  This Process    (minor major):       82         0
  Child Processes (minor major):        0         0
CPU Times
  This Process    (user system guest blkio):   0.00   0.00   0.00   0.00
  Child processes (user system guest):         0.00   0.00   0.00
Memory
  Vsize:       2547 kB
  RSS:         589 kB                    RSS Limit: 18446744073709 MB
  Code Start:  0x558f13e9a000            Code Stop:  0x558f13e9b355
  Stack Start: 0x7fff4f320ae0
  Stack Pointer (ESP):          0        Inst Pointer (EIP):          0
Scheduling
  Policy: normal
  Nice:   0              RT Priority: 0 (non RT)

# prtstat -r 2067445
         pid: 2067445                             comm: fork_two_childr
       state: S                                   ppid: 2003036
        pgrp: 2067445                          session: 2003036
      tty_nr: 34863                              tpgid: 2067445
       flags: 40400000                          minflt: 82
     cminflt: 0                                 majflt: 0
     cmajflt: 0                                  utime: 0
       stime: 0                                 cutime: 0
      cstime: 0                               priority: 20
        nice: 0                            num_threads: 1
 itrealvalue: 0                              starttime: 541288898
       vsize: 2547712                              rss: 144
      rsslim: 18446744073709551615                   startcode: 94073002762240
     endcode: 94073002767189                startstack: 140734522067680
     kstkesp: 0                                kstkeip: 0
       wchan: 1                                  nswap: 0
      cnswap: 1                            exit_signal: 17
   processor: 3                            rt_priority: 0
      policy: 0                  delayaccr_blkio_ticks: 0
  guest_time: 0                            cguest_time: 0

5. kill

kill命令向进程发送信号或者杀死进程(实为发送信号SIGKILL),加上参数-9kill -9 pid表示强行终止进程。

系统已经定义的信号列表如下:

# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

6. 优先级

命令nice修改进程的优先级并运行,优先级取值,从最高-20到最低19,默认为0。举例:

nice -n -5 /usr/local/mysql/bin/mysqld_safe

命令renice修改正在运行进程的优先级,举例:

renice -5 -p 5200
本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2023-05-24 09:09

results matching ""

    No results matching ""