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


文章目录

  • 进程查看命令
  • ps 查看命令
  • top 动态查看命令
  • jobs 命令
  • 进程控制命令
  • kill 命令
  • killall 命令
  • 前后台进程相关控制命令


进程查看命令

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

获得帮助

linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_c++

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

jobs 命令

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

参数

含义

-l

显示进程号

-p

仅任务对应的显示进程号

-n

显示任务状态的变化

-r

仅输出运行状态(running)的任务

-s

仅输出停止状态(stoped)的任务

linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_c语言_02

进程控制命令

kill 命令

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

kill [-signal] pid

signal 是信号值,pid为进程号

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

linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_unix_03

kill 常见用法

  • kill -l:查看所有信号的编号
  • linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_c++_04

  • kill -SIGKILL/(-9) 进程号: 有些进程不能直接杀死(如后台进程),这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束(9号信号为SIGKILL)。
  • linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_c语言_05

killall 命令

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

linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_unix_06

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

linux ps查看进程是属于哪个容器的 查看进程 linux ps -ef_linux_07

前后台进程相关控制命令

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 &