如何运行 shell 脚本并立即将其设置为 background,同时保持通过尾随
/tmp/output.txt
随时检查其输出的能力。
如果我可以稍后再前台该过程,那就太好了。
如果您还可以向我展示如何将后台进程“发送”到可能已初始化或尚未初始化的 GNU 屏幕,那就太酷了。
只需在命令后添加一个&符号(
&
)即可。
如果程序写入标准输出,它仍然会写入您的控制台/终端。
fg
命令即可。您可以使用 jobs
在后台查看职位列表。
例如:
sh -c 'sleep 3 && echo I just woke up' & jobs
如果您已经在前台启动了该进程,但想将其移至后台,您可以执行以下操作:
bg
命令来恢复进程,但让它在 background 而不是 foreground 中运行。另一种方法是使用
nohup
命令,并在行尾添加 &
。
类似这样的事情
nohup whatevercommandyouwant whateverparameters &
这将在后台运行它并将其输出发送到 nohup.log 文件。
hapless 实用程序是一种易于使用的方法,允许管理多个进程并具有漂亮的终端 UI。
使用
pip install hapless
(或 python3 -m pip install hapless
)安装并运行
$ hap run my-command # e.g. hap run python my_long_running_script.py
$ hap status # check all the launched processes
$ hap logs 4 # output logs for you 4th background process
$ hap logs -f 2 # continuously stream logs for the 2nd process
请参阅文档了解更多信息。
我尝试了
nohup
,但我的进程在一两天后停止了,所以我尝试了这个简单的bash脚本来在它停止后重新运行我的命令
运行.sh
while true; do
[ -e stopme ] && break
python3 main.py # your command here
done
然后做
nohup bash run.sh &