我有一个想运行几次的 Python 脚本,我无法将其设置为转到它之后的命令,因为 Python 脚本最终会给出错误
nohup python3 em.py &&killall chrome && sleep 60 &&nohup python3 em.py&
这正是我想要的,但是由于第一个 python 脚本引发错误,其余脚本无法开始。
我尝试通过以下方法解决:
nohup python3 em.py ;killall chrome;sleep 60;nohup python3 em.py&
nohup python3 em.py ;killall chrome;sleep 60;nohup python3 em.py;
当我离开 SSH 会话(或 CTRL+C)时这些都会失败,我运行 Ubuntu 20,我该如何解决?
任何帮助都将受到赞赏。
答案1
了解em.py
正在做什么以及如果失败如何可能会有所帮助,因为它可能会影响管道。
我在这里看到两个问题。
首先,nohup
shell 命令作用于当前语句,而不是整行。因此,虽然您在调用中使用了 nohup em.py
,但您不能在其他两个调用中使用。尝试运行一个带有 nohup 的 bash。我建议使用它,setsid
因为它更可靠。
第二,退出时控制终端可能无法正确重置。您应该正确重定向 stdin/out/err。我发现这里有两个问题。
setsid $SHELL -c 'python3 em.py; killall chrome; sleep 60; python3 em.py' </dev/null >/tmp/em.out 2>&1 &
您还可以在终端多路复用器内运行命令,例如screen(1)
或tmux(1)
以避免所有这些问题。