小白带你学习Linux进程管理(已更新)

目录

一、进程查看命令

1、pstree

2、ps

补充说明:

3、pgrep

4、top、htop

二、进程管理命令

1、kill

2、pkill与killall

三、进程类型

1、前台进程

2、后台进程


一、进程查看命令

1、pstree

用于查看进程树之间的关系,谁是父进程,谁是子进程,可以清楚的看出来是谁创建了谁

[root@localhost ~]# pstree
systemd─┬─ModemManager───3*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{auditd}]
        ├─avahi-daemon───avahi-daemon
        ├─chronyd
        ├─crond
        ├─cupsd
        ├─dbus-broker-lau───dbus-broker
        ├─firewalld───{firewalld}
        ├─irqbalance───{irqbalance}
        ├─lsmd
        ├─mcelog
        ├─nginx───nginx
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───3*[{tuned}]
        ├─vmtoolsd───2*[{vmtoolsd}]
        └─vmware-vmblock-───2*[{vmware-vmblock-}]

选项:

-A各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p同时列出每个进程的PID
-u同时列出每个进程的所属账号名称

 [root@localhost ~]# pstree -A
systemd-+-ModemManager---3*[{ModemManager}]
        |-NetworkManager---2*[{NetworkManager}]
        |-VGAuthService
        |-agetty
        |-atd
        |-auditd-+-sedispatch
        |        `-2*[{auditd}]
        |-avahi-daemon---avahi-daemon
        |-chronyd
        |-crond
        |-cupsd
        |-dbus-broker-lau---dbus-broker
        |-firewalld---{firewalld}
        |-irqbalance---{irqbalance}
        |-lsmd
        |-mcelog
        |-nginx---nginx
        |-polkitd---5*[{polkitd}]
        |-rsyslogd---2*[{rsyslogd}]
        |-sshd---sshd---sshd---bash---pstree
        |-systemd---(sd-pam)
        |-systemd-journal
        |-systemd-logind
        |-systemd-udevd
        |-tuned---3*[{tuned}]
        |-vmtoolsd---2*[{vmtoolsd}]
        `-vmware-vmblock----2*[{vmware-vmblock-}]

2、ps

显示系统当前进程瞬间运行状态

选项:

-A所有的进程均显示出来,与 -e 具有同样的效用
-a显示现行终端机下的所有进程,包括其他用户的进程
-u以用户为主的进程状态
-x通常与 a 这个参数一起使用,可列出较完整信息
-l较长、较详细的将该PID 的的信息列出
[root@localhost ~]# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.4 116948 17784 ?        Ss   15:51   0:08 /usr/lib/systemd/systemd rhgb --switched-root --s
root           2  0.0  0.0      0     0 ?        S    15:51   0:00 [kthreadd]

输出解析:

  • USER:进程的所有者。

  • PID:进程的 ID。

  • %CPU:进程占用的 CPU 百分比。

  • %MEM:进程占用的内存百分比。

  • VSZ:进程使用的虚拟内存大小。

  • RSS:进程使用的物理内存大小。

  • TTY:进程所在的终端。

  • STAT:进程的状态,如S(休眠)、R(运行)、Z(僵尸进程)等。

  • START:进程的启动时间。

  • TIME:进程运行的时间。

  • COMMAND:启动进程的命令。

进程状态:

状态字符状态名称含义示例场景
RRunning/Runnable进程正在 CPU 上运行或等待调度执行(就绪队列)执行top命令时,top 进程本身处于 R 状态
SSleeping (Interruptible)进程等待外部事件(如 I/O 完成),可被信号唤醒等待用户输入的交互式程序(如read命令)
DDisk Sleep (Uninterruptible)进程等待磁盘 I/O,不可被信号中断(通常是内核操作)大量写入磁盘时(如dd命令),进程可能长时间处于 D 状态
TStopped进程被暂停(如收到 SIGSTOP 或 SIGTSTP 信号)用户按下Ctrl+Z暂停前台进程,或通过kill -STOP <PID>手动暂停进程
ZZombie进程已终止,但父进程未回收其状态信息(占用进程表项)父进程未正确处理子进程退出状态时(如忽略 SIGCHLD 信号)
XDead进程已终止并被系统完全清理(瞬态状态,很少可见)进程正常结束后立即进入 X 状态
<High Priority高优先级进程(非标准状态,部分系统显示)通过nice -n -10启动的高优先级进程
NLow Priority低优先级进程(负值为高优先级,正值为低优先级)通过nice -n 10启动的低优先级进程
sSession Leader会话领导者(控制终端的进程;父进程)登录 shell(如 bash)通常是会话领导者
lMulti-threaded多线程进程(使用clone()创建多个线程)多线程程序(如 Java 应用、Chrome 浏览器)
+Foreground Process前台进程组(在终端中运行的进程)在终端中直接运行的命令(如lspython
补充说明:
  1. 组合状态:状态字符可能组合显示,例如:
    • Ss:会话领导者且处于可中断睡眠状态
    • Tl:停止的多线程进程
  2. 查看方式
    • ps aux:显示用户态进程的详细状态
    • ps -ef:显示完整格式的进程信息
    • ps -l:显示长格式,包含进程优先级(NI 列)和状态(STAT 列)

3、pgrep

查看进程的信息,包括进程是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。 pgrep通过匹配其程序名,找到匹配的进程

用法:

pgrep [选项] pidname 

选项:

-l同时显示进程名和PID
-o当匹配多个进程时,显示进程号最小的那个
-n当匹配多个进程时,显示进程号最大的那个

注意:#pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程

pgrep [选项] pidname #先查找进程号
​
kill [选项] pid #用kill 结束进程

4、top、htop

top:动态监控系统处理器状态,htop姑且称之为top的增强版

yum install epel-release -y    #安装epel源     
yum install htop -y     #安装htop

常用选项

  • -d:指定更新的间隔时间,以秒为单位。

  • -n:指定更新的次数。

  • -p:监控指定进程的 ID。

  • -u:监控指定用户的进程。

常用按键

  • 空格键:立即刷新显示。

  • M:按照内存使用百分比对进程进行排序。

  • P:按照 CPU 使用百分比对进程进行排序。

  • T:按照进程运行时间对进程进行排序。

  • q:退出 top 命令。

  • h:显示帮助信息。

案例

`top -d 5`:每隔 5 秒更新一次进程信息。
​
`top -n 2`:更新两次进程信息后退出。
​
`top -p 1234`:监控进程 ID 为 1234 的进程。
​
`top -u root`:监控 root 用户的进程。

 

二、进程管理命令

1、kill

选项:

-l列出所有信号参数
-s发送指定的信号
-9强制杀死
-0(数字零)用来检测一个进程是否存在。

信号列表:

   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

 

2、pkill与killall

pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序,如果想杀掉单个进程,请用kill来杀掉。

pkill/killall [选项] 进程名

三、进程类型

1、前台进程

在终端界面运行的进程,运行前台进程后,终端无法操作

#将前台进程放到后台运行
[root@localhost ~]# nginx &
[1] 24964
[root@localhost ~]# nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
#注意:该运行前台进程的方式,当终端关闭时,进程也会随着关闭



nohup firefox & #关闭终端,进程不掉
[root@localhost ~]# nohup sleep 100 &
[1] 25717



#查看   jobs
[root@localhost ~]# jobs
[1]+  已完成               nohup sleep 100



#将进程调到前台运行
fg 1
[root@localhost ~]# fg 1
nohup sleep 100



#将正在运行的前台进程放到后台运行  ctrl + z    
                                ​​​​​​​bg 1
​^Z
[1]+  已停止               nohup sleep 100
[root@localhost ~]# bg 1
[1]+ nohup sleep 100 &

2、后台进程

驻留在后端运行的进程

[root@localhost ~]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.4 107412 16488 ?        Ss   09:59   0:09 /usr/l
root           2  0.0  0.0      0     0 ?        S    09:59   0:00 [kthre
root           3  0.0  0.0      0     0 ?        I<   09:59   0:00 [rcu_g
root           4  0.0  0.0      0     0 ?        I<   09:59   0:00 [rcu_p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值