引言:在Linux的系统中,进程相关命令是我们掌握 linux 进程必备利器,所以本文就将介绍一些常用的进程相关的命令。

进程查看命令

ps 查看命令

ps 命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下:

选项含义
-a显示终端上的所有进程,包括其他用户的进程
-u显示进程的详细状态
-x显示没有控制终端的进程
-w显示加宽,以便显示更多的信息
-r只显示正在运行的进程

ps 常见用法

  • ps aux:显示这个操作系统上所有进程的信息,相当于一个拍照,不能动态显示。

    在这里插入图片描述

  • ps -ef:效果与 ps aux 差不多, ps aux 最初用到 Unix Style 中,而 ps -ef 被用在 System V Style 中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

  • ps ajx:以比较完整的格式显示所有的进程,会显示进程的父进程 ID、进程组 ID、会话 ID 等

    在这里插入图片描述

  • ps a:显示当前终端下的所有进程,包括其他用户的进程。

  • 查找某个进程:根据进程的名字或者其他信息,结合 grep 命令找到目标进程。

    在这里插入图片描述

【补充】如上图所示,STAT 表示进程状态,具体参数意义如下:

参数含义
D不可中断 Uninterruptible(usually IO)
R正在运行,或在队列中的进程
S(大写)处于休眠状态
T停止或被追踪
Z僵尸进程
W进入内存交换(从内核2.6开始无效)
X死掉的进程
<高优先级
N低优先级
s包含子进程
+位于前台的进程组

top 动态查看命令

top 命令用来动态显示运行中的进程。top 命令能够在运行后,在指定的时间间隔更新显示信息,可以在使用 top命令时加上 -d 来指定显示信息更新的时间间隔。在top命令执行后,可以按下按键得到对显示的结果进行排序

按键含义
M根据内存使用量来排序
P根据CPU占有率来排序
T根据进程运行时间的长短来排序
U可以根据后面输入的用户名来筛选进程
K可以根据后面输入的PID来杀死进程。
q退出
h获得帮助

在这里插入图片描述

【备注】top 命令类似于 windows 操作系统上的任务管理器。

jobs 命令

jobs 命令用于查看当前终端的所有后台进程。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。常用选项如下:

参数含义
-l显示进程号
-p仅任务对应的显示进程号
-n显示任务状态的变化
-r仅输出运行状态(running)的任务
-s仅输出停止状态(stoped)的任务

在这里插入图片描述

进程控制命令

kill 命令

命令功能: 发送指定的信号到相应进程,常用于用于删除执行中的程序或工作。使用格式:

kill [-signal] pid

signal 是信号值,pid为进程号

示例:kill 9133 中 9133 为应用程序所对应的进程号,没有信号值,默认为 SIGTERM。

在这里插入图片描述

kill 常见用法

  • kill -l:查看所有信号的编号在这里插入图片描述

  • kill -SIGKILL/(-9) 进程号: 有些进程不能直接杀死(如后台进程),这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束(9号信号为SIGKILL)。
    在这里插入图片描述

killall 命令

Linux 中每个进程号是唯一的,但是可能存在进程名相同的进程,如下所示:

在这里插入图片描述

killall 命令可以根据进程名杀死进程,这样可以杀死所有进程名相同的进程。

在这里插入图片描述

前后台进程相关控制命令

Linux下,需要经常使用进程的前后台调度命令,比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作;而一些服务型的命令进程我们则希望能把它们长期运行于后台。

  • Ctrl + C 组合键:终止并退出前台命令的执行,回到当前终端;

  • Ctrl + Z 组合键:暂停前台命令的执行,将该进程放入后台,回到当前终端;

  • & 命令:运行命令时,在命令末尾加上 & 可让命令在后台执行。但关闭当前终端导致该后台进程退出;

  • nohup 命令:不挂断地运行命令。用来让进程始终在后台执行,即使关闭当前的终端也一样并输出日志,这点 & 命令做不到;

    【补充】在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

  • fg N:将任务号为 N 的后台进程放到前台执行;

  • bg N:将任务号为 N 的暂停的后台进程,继续执行。

示例 1:

yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ jobs -l  # 列出后台进程,无后台进程
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ ./server # 运行程序
Accepting connections ...
^Z															# 执行 ctrl + z,暂停并转为后台
[1]+  Stopped                 ./server
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ jobs -l	# 列出后台进程,存在后台进程
[1]+ 20743 Stopped                 ./server
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ bg 1	# 将暂停的后台进程恢复运行
[1]+ ./server &
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ fg 1	# 将后台进程转为前台
./server
^C															# 执行 ctrl + c 结束进程
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ 

示例 2:

yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ jobs -l # 列出后台进程,无后台进程
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ nohup ./server & # 以非挂起的方式运行程序
[1] 21292
yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ nohup: ignoring input and appending output to 'nohup.out'

yxm@192:~/myshare/NetworkIO/BIO/mul_process_server$ jobs -l # 列出后台进程,无后台进程
[1]+ 21292 Running                 nohup ./server &
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐