我通常使用:
nohup python -u myscript.py &> ./mylog.log & # or should I use nohup 2>&1 ? I never remember
启动一个后台Python进程,即使我注销,我也要继续运行该进程,并且:
ps aux |grep python
# check for the relevant PID
kill <relevantPID>
这很管用,但是做这些步骤很烦人。
我读过一些方法,其中您需要将PID保存在某个文件中,但这更麻烦。
是否有一个干净的方法可以轻松地启动/停止Python脚本?例如:
startpy myscript.py # will automatically continue running in
# background even if I log out
# two days later, even if I logged out / logged in again the meantime
stoppy myscript.py
或者这个长的部分nohup python -u myscript.py &> ./mylog.log &
可以用脚本的shebang编写,这样我就可以用./myscript.py
轻松地启动脚本,而不是编写长的nohup行吗?
注意:我正在寻找一个一两行的解决方案,我不想为这个操作编写一个专用的systemd服务。
据我所知,只有两个(或者三个或者四个?)在远程系统上运行后台脚本问题的解决方案。
1)nohup
1之二)否认
与上面一样,略有不同,因为它实际上将程序删除到shell作业列表中,从而阻止发送SIGHUP。
2)屏幕(或由neared建议的tmux)
Here您将找到屏幕的起点。
有关后台进程如何工作的详细说明,请参见post。另一个相关的post。
3)猛击
另一个解决方案是编写两个bash函数来完成此任务:
只需将上述函数放在
~/.bashrc
或~/.bash_profile
中,并将它们用作常规bash命令。现在你可以照你说的做了:
4)后台程序
这个daemon module非常有用:
你的意思是远程登录和退出(例如通过SSH)?如果是这样,一个简单的解决方案是安装tmux(终端多路复用器)。它为作为客户机在其下运行的终端创建一个服务器。使用
tmux
打开tmux,键入命令,键入CONTROL+B+D
以“分离”tmux,然后在主终端键入exit以注销。当您重新登录时,tmux及其运行的进程仍将运行。相关问题 更多 >
编程相关推荐