bash, nohup sh 文件启动节点并且节点在注销时挂起?
bash, nohup sh file launches node and node hangs up on logoff?
我有一个 bash 脚本 test.sh
node ~/script1.js && \
node ~/script2.js && \
node ~/script3.js
我启动 bash 脚本
nohup ~/test.sh &
然后由于失去与服务器的连接而断开连接。我希望脚本在我使用 nohup 时继续,但是节点脚本收到挂断信号。
正确的做法是什么?
如果您知道您经常会断开连接,那么最好的办法是使用 screen
或 tmux
或类似的方式,这样您就可以在以后需要时断开连接并重新连接。要做到这一点,如果你在交互式 shell 中,你可以说 运行 screen
,然后 运行 你的命令(不需要 nohup
或将其置于后台)然后键入 ctrla 然后 d 以从该屏幕会话中分离。然后您可以退出,屏幕会话和命令将继续。
使用 screen
如果只有一个 screen
会话,您可以通过 运行ning screen -x
重新连接到会话,或者您可以给 -x
来指定要重新连接到哪个(你可以在开始 screen
时用 -S
标志给它起一个名字,这样更容易记住要重新连接到哪个)。您可以看到当前 运行 宁 screen
会话列表 screen -ls
.
tmux
也支持所有这些,但我自己更熟悉 screen
。
如果您想像当前尝试那样使用 nohup
完成此操作,您还需要 disown
命令,这将从您当前的 shell 中删除该作业.如果那是唯一一个你可以 disown -a
到 disown
你所有的工作。
我有一个 bash 脚本 test.sh
node ~/script1.js && \
node ~/script2.js && \
node ~/script3.js
我启动 bash 脚本
nohup ~/test.sh &
然后由于失去与服务器的连接而断开连接。我希望脚本在我使用 nohup 时继续,但是节点脚本收到挂断信号。
正确的做法是什么?
如果您知道您经常会断开连接,那么最好的办法是使用 screen
或 tmux
或类似的方式,这样您就可以在以后需要时断开连接并重新连接。要做到这一点,如果你在交互式 shell 中,你可以说 运行 screen
,然后 运行 你的命令(不需要 nohup
或将其置于后台)然后键入 ctrla 然后 d 以从该屏幕会话中分离。然后您可以退出,屏幕会话和命令将继续。
使用 screen
如果只有一个 screen
会话,您可以通过 运行ning screen -x
重新连接到会话,或者您可以给 -x
来指定要重新连接到哪个(你可以在开始 screen
时用 -S
标志给它起一个名字,这样更容易记住要重新连接到哪个)。您可以看到当前 运行 宁 screen
会话列表 screen -ls
.
tmux
也支持所有这些,但我自己更熟悉 screen
。
如果您想像当前尝试那样使用 nohup
完成此操作,您还需要 disown
命令,这将从您当前的 shell 中删除该作业.如果那是唯一一个你可以 disown -a
到 disown
你所有的工作。