linux进程管理ps、kill命令

文章发布于 2023-08-07

每个进程都有一个进程号叫做pid,进程分为前台和后台进程。前台进程有交互的例如top命令,后台进程一般有系统进程例如mysql等。

进程相关指令

ps指令

查看当前系统正在执行的进程情况。

ps options

options 参数
-a 显示当前终端的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
-e 显示全部进程
-f 全格式

运行ps命令查看如下

[root@localhost ~]# ps
   PID TTY          TIME CMD
  1322 pts/0    00:00:00 bash
  1361 pts/0    00:00:00 ps

  • PID 进程号

  • TTY 终端机号

  • TIME 进程所使用cpu的时间

  • CMD 正在执行的命令或进程号

  • STAT 状态

    • R 正在运行
    • S 睡眠
    • s 绘画的先导进程
    • N 比普通优先级更低的优先级
    • D 短暂等待
    • Z 僵死进程
    • T 被跟踪或被停止
  • STARTED 进程启动的时间

  • VSZ 进程占用虚拟内容大小

  • RSS 进程占用物理内存大小

  • %CPU 进程占用cpu的百分比

  • %MEM 进程占用物理内存的百分比

  • UID 用户ID

  • PPID 父进程ID

  • C cpu用于计算执行优先级的因子,数值越大,表明进程是cpu密集型运算执行优先级会降低;数值越小,表明进程I/O密集型运算,执行优先级会提高。

  • STIME 进程启动的时间

kill

终止进程。一个进程再执行中需要停止,或进程消耗了很大的系统资源时,则可以考虑终止进程。

kill options pid

options参数说明
-9 强制停止进程
killall

终止进程下所有子进程。

killall 进程名称(支持通配符)
pstree

以树状显示进程。 如果执行pstree命令找不到,则安装yum install -y psmisc 即可。

pstree options

options 参数
-p 显示进程的pid
-u 显示进程的所属用户

执行之后的结果:

[root@localhost ~]# pstree -u
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd(chrony)
        ├─crond
        ├─dbus-daemon(dbus)───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─lvmetad
        ├─master─┬─pickup(postfix)
        │        └─qmgr(postfix)
        ├─polkitd(polkitd)───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
        
        
[root@localhost ~]# pstree -p
systemd(1)─┬─NetworkManager(740)─┬─{NetworkManager}(747)
           │                     └─{NetworkManager}(750)
           ├─VGAuthService(696)
           ├─agetty(739)
           ├─auditd(673)───{auditd}(674)
           ├─chronyd(705)
           ├─crond(728)
           ├─dbus-daemon(702)───{dbus-daemon}(719)
           ├─firewalld(738)───{firewalld}(865)
           ├─lvmetad(509)
           ├─master(1185)─┬─pickup(1371)
           │              └─qmgr(1193)
           ├─polkitd(695)─┬─{polkitd}(714)
           │              ├─{polkitd}(720)
           │              ├─{polkitd}(722)
           │              ├─{polkitd}(723)
           │              ├─{polkitd}(725)
           │              └─{polkitd}(730)
           ├─rsyslogd(1051)─┬─{rsyslogd}(1054)
           │                └─{rsyslogd}(1056)
           ├─sshd(1047)───sshd(1318)───bash(1322)───pstree(1480)
           ├─systemd-journal(485)
           ├─systemd-logind(721)
           ├─systemd-udevd(521)
           ├─tuned(1049)─┬─{tuned}(1295)
           │             ├─{tuned}(1296)
           │             ├─{tuned}(1298)
           │             └─{tuned}(1300)
           └─vmtoolsd(697)───{vmtoolsd}(734)

查看父进程

ps -ef | grep sshd

执行上面命令之后,结果如下,PPID就是父进程ID。

[root@localhost ~]# ps -ef | grep sshd
root       1047      1  0 18:49 ?        00:00:00 /usr/sbin/sshd -D
root       1318   1047  0 19:20 ?        00:00:00 sshd: root@pts/0
root       1387   1322  0 20:41 pts/0    00:00:00 grep --color=auto sshd