Linux 小知识 丨进程命令

226 阅读4分钟

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

Linux 小知识 丨进程命令

top ps kill

Top 命令

  • top 实时显示所有的进程信息
  • top -c 实时显示所有的进程信息(显示完整命令)
  • top -p PID 实时显示指定进程的信息
  • 结束监控快捷键: q

实时监控显示process(进程)的动态

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
[root@VM-8-10-centos ~]# top
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND             
2104608 root      20   0   63648  11292   3672 S   0.3   0.3  13:36.33 barad_agent         
2104609 root      20   0  512164  18688   4184 S   0.3   0.5  80:15.06 barad_agent         
      1 root      20   0  185172  11680   8752 S   0.0   0.3  32:34.64 systemd             
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.92 kthreadd 
# PID 每个进程的ID
# USER 属于哪个用户
# PR 进程的优先级
# NI 进程的优先级, 负数-> 高优先级 正数 低优先级
# VIRT 当前进程使用虚拟内存的总量
# S 当前进程的运行状态  S Sleep睡眠 R Run 运行状态
# COMMAND 命令的名字

# q 结束

带参数选项的top命令

top -c

#COMMAND 显示完整的命令
[root@VM-8-10-centos ~]# top -c   
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                              
2104608 root      20   0   63648  11292   3672 S   0.3   0.3  13:36.50 barad_agent                                                                          
2104609 root      20   0  512164  18688   4184 S   0.3   0.5  80:16.07 barad_agent                                                                          
3821042 root      20   0   22836   7416   5212 S   0.3   0.2  61:23.27 /usr/local/qcloud/tat_agent/tat_agent                                                
      1 root      20   0  185172  11680   8752 S   0.0   0.3  32:34.65 /usr/lib/systemd/systemd --switched-root --system --deserialize 18                   
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.92 [kthreadd]  
      

top -p pid

# 只监控一条进程
[root@VM-8-10-centos ~]# top -p 1

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                              
1   root      20   0  185172  11680   8752 S   0.0   0.3  32:34.67 systemd   

ps 命令

查看进程信息, 获取当前时刻的进程信息, 无法实时监控

  • ps 显示当前正在运行的进程信息
  • ps -A 显示系统中所有的进程信息
  • ps -ef 显示系统中所有的进程信息(完整信息)
  • os -u 用户名 显示指定用户的进程信息
ps [option] [--help]  # 查看进程信息

[root@VM-8-10-centos ~]# ps   #显示当前系统正在运行的进程信息
    PID TTY          TIME CMD
2689338 pts/0    00:00:00 bash
2697641 pts/0    00:00:00 ps

[root@VM-8-10-centos ~]# ps -A   #显示系统中所有的进程信息
    PID TTY          TIME CMD
      1 ?        00:32:34 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      
[root@VM-8-10-centos ~]# ps -ef # 显示完整信息
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 9月15 ?       00:32:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
root           2       0  0 9月15 ?       00:00:00 [kthreadd]
root           3       2  0 9月15 ?       00:00:00 [rcu_gp]
root           4       2  0 9月15 ?       00:00:00 [rcu_par_gp]
root           6       2  0 9月15 ?       00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 9月15 ?       00:00:00 [mm_percpu_wq]
root          10       2  0 9月15 ?       00:02:35 [ksoftirqd/0]
root          11       2  0 9月15 ?       00:10:25 [rcu_sched]

[root@VM-8-10-centos ~]# ps -u # 显示指定用户的进程信息
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        1605  0.0  0.0  16772  1508 tty1     Ss+  9月15   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root        1606  0.0  0.0  19340  1580 ttyS0    Ss+  9月15   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
root     2689338  0.0  0.1  32560  6644 pts/0    Ss   10:19   0:00 -bash
root     2698025  0.0  0.1  59772  3888 pts/0    R+   11:04   0:00 ps -u

kill 命令

  • kill PID
  • kill -9 PID
  • kill -9 $(ps -ef | grep username)
  • killall -u username

终端执行中的程序

kill [-s<信息名称或编号>][程序]       # 中断执行中的程序
kill [<信息编号>]

[root@VM-8-10-centos ~]# sudo kill --help
Usage:
 kill [options] <pid>|<name>...

Forcibly terminate a process.

Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                          with the same uid as the present process
 -s, --signal <signal>  send this <signal> instead of SIGTERM
 -q, --queue <value>    use sigqueue(2), not kill(2), and pass <value> as data
 -p, --pid              print pids without signaling them
 -l, --list[=<signal>]  list signal names, or convert a signal number to a name
 -L, --table            list signal names and numbers
     --verbose          print pids that will be signaled

 -h, --help             display this help
 -V, --version          display version

For more details see kill(1)

举例:
 kill 1111  # => 中断 PID 为 1111 的进程
 kill -编号 1111 # => 怎样去杀死 1111 的进程
 kill -9 1111 # 强制中断
# 编号
For more details see kill(1).
[root@VM-8-10-centos ~]# 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
# 常用 -9 强制杀死

中断指定用户的进程1

kill -9 $(ps -ef | grep user1) # 终端 用户 user1 的所有进程
#  $(ps -ef | grep user1) 将 user1 的所有进程过滤出来

中断指定用户的进程2

killall -u user1