命令
查询进程:
bash
ps -ef | grep python
bash
# 将两个 grep 命令串联,实现进一步过滤上一步的结果。
ps -ef | grep python | grep xxx.py
终止进程:
bash
kill -9 719781
讲解
ps -ef
和 grep python
是Linux系统中经常使用的两个命令,它们通常被组合在一起使用,用于查找当前系统中运行的与Python相关的进程。
下面分别解释这两个命令:
ps -ef
:ps
是 "process status" 的缩写,是用于显示当前系统进程状态的工具。-e
选项代表显示所有进程。-f
选项代表全格式显示,即显示完整的信息,包括UID(用户ID)、PID(进程ID)、PPID(父进程ID)、C(CPU占用率)、STIME(开始时间)、TTY(终端设备)、TIME(运行时间)、CMD(命令)。
grep python
:grep
是 "global regular expression print" 的缩写,是一种强大的文本搜索工具,用于搜索包含指定模式的字符串。python
是这里要搜索的模式,即搜索包含 "python" 字符串的行。
将这两个命令通过管道符 |
连接起来,即 ps -ef | grep python
,其作用是:
ps -ef
列出系统中所有的进程。- 然后通过管道符
|
将ps -ef
的输出作为grep python
的输入。 grep python
从输入中筛选出包含 "python" 字符串的行。
最终,这个命令组合会显示所有命令行中包含 "python" 的进程信息,这样用户就可以找到正在运行的Python脚本或相关程序,以及它们的进程ID等详细信息。
例如,如果你运行一个Python脚本,然后执行 ps -ef | grep python
,你可能会看到类似以下的内容:
root 719781 719775 0 20:28 pts/9 00:00:02 python my_script.py
这里,root
是运行该进程的用户,719781
是进程ID,719775
是该进程的父进程ID,0
是CPU使用百分比,20:28
是进程开始的时间,pts/9
是进程所在的终端,00:00:02
是进程已经运行的时间,python my_script.py
是进程启动的具体命令。
这条输出表示 root 用户在晚上20点28分通过伪终端 pts/9 启动了一个名为 python 的进程,该进程的ID是 719781,其父进程ID是 719775,该进程目前没有使用CPU(或者CPU使用率为0),并且已经运行了0小时0分钟2秒,它的目的是运行位于当前目录下的 my_script.py 脚本。
kill -9 719781
是一个在Unix-like系统中使用的命令,用于强制终止进程。
下面解释这个命令的各个部分:
kill
:kill
是一个用于发送信号到进程的命令。默认情况下,如果没有指定信号,kill
命令会发送SIGTERM
信号,这是一个请求进程终止的信号,允许进程进行清理和正常退出。
-9
:-9
是kill
命令的一个选项,它代表发送SIGKILL
信号。SIGKILL
是一个无法被捕获、阻塞或忽略的信号,它会强制终止指定的进程。数字9
是SIGKILL
信号的编号。
719781
:719781
是你想要终止的进程的进程ID(PID)。每个进程都有一个唯一的PID,用于在系统中标识该进程。
所以,kill -9 719781
的作用是向PID为719781
的进程发送SIGKILL
信号,这将导致该进程立即终止,不进行任何清理操作。这通常用于那些无法正常终止的进程,或者当你需要立即停止某个进程时。
需要注意的是,使用kill -9
应该谨慎,因为被终止的进程不会有机会保存任何未完成的工作,也不会有机会释放它所占用的资源。如果可能,首先尝试使用kill
命令(不指定信号,默认为SIGTERM
)来请求进程正常终止,如果进程没有响应,再考虑使用kill -9
。