我有一个bash脚本test.sh
node ~/script1.js && \
node ~/script2.js && \
node ~/script3.js
我启动bash脚本
nohup ~/test.sh &
然后由于失去与服务器的连接而断开连接。我希望脚本会随着我使用nohup的出现而继续,但是节点脚本会收到挂断信号。
正确的方法是什么?
答案 0 :(得分:1)
如果您知道经常断开连接,最好的选择是使用screen
或tmux
或类似的方法,这样可以在需要时断开连接并稍后重新连接。为此,如果您在交互式外壳上,可以先运行screen
,然后运行命令(不需要nohup
或将其放在后台),然后键入 ctrl a ,然后 d 从该屏幕会话中分离。然后您可以退出,并且屏幕会话和命令将继续。
如果只有一个screen
会话,则可以使用screen -x
通过运行screen
重新连接到该会话,或者可以给-x
赋一个参数来指定哪个一个要重新连接的对象(可以在使用screen
标志开始-S
时给它起一个名字,以便更容易记住要重新连接的对象)。您可以看到screen
当前正在运行的screen -ls
会话的列表。
tmux
也支持所有这些操作,但是我自己对screen
更为熟悉。
如果您要像当前尝试那样使用nohup
来完成此操作,则还需要disown
命令,该命令将从当前Shell中删除该作业。如果那是唯一一个,您可以disown -a
到disown
所有工作。