我不确定这是否是问题所在,但让我解释一下:我有一个由bash脚本启动的python脚本。bash脚本的工作就完成了,但是当我grep ps aux时,调用仍然存在。
#!/bin/bash
export http_proxy='1.2.3.4:1234'
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1
如果我grepps aux | grep python
我得到的python -u /home/user/folder/myscript.py -some Parameters
结果。根据日志文件,python脚本已正确关闭。(结束脚本的代码在脚本本身内。)脚本每小时启动一次,我仍然看到前几个小时的所有调用。
在此先感谢您的帮助,提示或建议!
只要子进程(python脚本)正在运行,父bash脚本就会保留。如果您启动在后台运行的python脚本(在python行的末尾添加&),则父级将退出。
#!/bin/bash
export http_proxy='1.2.3.4:1234'
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1 &
如果您检查进程列表(例如'ps -elf')。它将显示子项(如果仍在运行)。子PPID(父PID)将是1(根PID),而不是父PID,因为父PID不再存在。
如果您的python脚本永不退出,最终可能会成为一个问题。您可以让父脚本等待并杀死孩子,例如等待30秒并杀死仍然存在的孩子:
#!/bin/bash
export http_proxy='1.2.3.4:1234'
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1 &
sleep 30
jobs
kill %1
kill -9 %1
jobs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句