Ani*_*esh 3 process background-process
我有一个想要在后台运行的 python 脚本。所以我这样做:
$ nohup python script.py &
Run Code Online (Sandbox Code Playgroud)
如果我经常对脚本进行更改,则需要终止进程并再次运行脚本。
$ kill -9 <pid_of_bg_process>
$ nohup python script.py &
Run Code Online (Sandbox Code Playgroud)
是否可以在不终止进程的情况下重新加载进程?
简短的回答 - 不。
长答案:您实际上是在调用 python 解释器。该解释器加载 script.py 并解析它。
如果您更改脚本,它必须重新加载文件并从头开始,因为解释器无法知道更改了哪一部分。
现在,如果您的目标是简单地向 python 发出信号以重新加载/重新启动脚本,您可以将其包装到一个 shell 脚本中:
#!/bin/sh
LINE="python script.py"
stop()
{
pkill -f "$LINE"
}
clean()
{
stop
exit 0
}
trap stop 1
trap clean 9 15
while true
do
$LINE &
wait
done
Run Code Online (Sandbox Code Playgroud)
您现在可以启动该 shell 脚本(在后台,如果您愿意,可以使用 nohup)。如果您向它发送 HUP 信号,它将重新启动您的 python 进程。
如果您终止包装进程,python 脚本也将终止。
我没有测试我的脚本 - 但这个想法应该很清楚。