笔者在公司里实际项目开发中遇到过一个问题,就是在开发多进程模型的程序里,好家伙,进程名都是
python
,有种“双兔傍地走,安能辨我是雄雌”的感觉,因为涉及到运行时态要动态的kill
掉某个进程,搞进程通讯又显得复杂……直接通过进程名kill
不香么,于是便有了本文中的方法……
1 环境介绍
- 操作系统环境,笔者使用的是CentOS 7.8 ,其他发行版本Linux适用。
- python环境,
Python 3.6.8
2 安装 setproctitle
库
PS: 这里
-i https://pypi.douban.com/simple
参数为可选项,是临时使用国内镜像资源进行安装,因为笔者直接使用默认镜像会异常的慢,甚至直接卡住……
bash
pip3 install setproctitle -i https://pypi.douban.com/simple
3 使用方法及相关对比说明
3.1 创建示例python文件 test.py
PS: 这里简单的执行一个死循环
python
while True:
pass
3.2 python后台运行该文件并查看进程
PS:我们加
&
以后台形式运行该程序
- 后台运行该程序
bash
python3 test.py &
- 查看进程
bash
ps aux
3.3 修改示例文件(引用setproctitle库)
python
import setproctitle
setproctitle.setproctitle("myProcess")
while True:
pass
3.4 python 后台运行该文件并查看进程名
- 后台运行该进程
bash
python3 test.py &
- 查看进程 图3
PS: 此时
COMMAND
这一列中已经显示为我们自定义的进程名了,我们可以使用pkill
命名直接根据进程名进行kill
进程,如pkill myProcess
即可结束myProcess
进程。
bash
ps aux
4 坑点
进程名超过15个字符后,当我们使用 pkill
命令时会出现结束不了指定的进程,具体原因请参考博文