如何获取指定Python脚本pisokjo.py对应的子进程PID?
解决提取Python脚本PID及终止进程的问题
先梳理你之前命令的问题
- 所有使用
awk '{print $1}'的命令都存在列号错误:ps -ef输出的第一列是运行进程的用户,PID实际在第二列,应该取$2 - 第二个命令里
pid=...和echo $pid之间没有分隔符(分号或换行),属于语法错误 - 第三个命令逻辑完全偏离,查找
$3里的|位置和提取PID毫无关系
正确的解决方法
方法1:用pgrep直接提取PID
pgrep是专门用于查找进程ID的工具,比ps+grep组合更简洁精准:
# 提取目标脚本的PID pid=$(pgrep -f "pisokjo.py") echo $pid # 若需要终止进程,执行以下命令 sudo kill -9 $pid
-f参数表示匹配整个命令行,能精准定位到运行pisokjo.py的Python进程。
方法2:修正ps+grep+awk的组合命令
如果你习惯使用ps系列命令,修正列号和语法即可:
# 提取PID pid=$(ps -ef | grep -i "[p]ython.*pisokjo.py" | awk '{print $2}') echo $pid # 终止进程 sudo kill -9 $pid
[p]ython.*pisokjo.py的写法能避免grep进程自身被匹配到awk '{print $2}'正确提取第二列的PID值
方法3:用pkill直接终止进程(无需手动提取PID)
如果你的需求只是终止目标进程,直接用pkill一步完成:
sudo pkill -9 -f "pisokjo.py"
-f参数确保匹配整个命令行,精准定位到运行pisokjo.py的进程。
内容的提问来源于stack exchange,提问作者Gal_Zoli
相关产品推荐
相关产品推荐

