【发布时间】:2013-09-10 00:30:46
【问题描述】:
我正在尝试使用 node.js 制作一个需要能够提取新更新并自行重新启动的程序。为此,我制作了一个包含以下代码的 auto.sh 脚本:
screen -S GNode -X quit
screen -dmS GNode -L node server
不幸的是,当我尝试从节点运行该脚本时,似乎发生的是第一行运行并且我的节点应用程序关闭(因为它正在该会话中运行)但是第二行没有得到被执行了,这很糟糕。
我最终做的是使用命令运行另一个名为 ScriptRunner 的屏幕会话
screen -dmS ScriptRunner sh auto.sh
但由于某种原因,当我运行该命令然后检查打开的屏幕会话时,没有。所以第一行再次被执行,但第二行没有。这似乎不是我的节点程序的问题,因为当我直接在终端中运行最后一个命令时,会发生同样的事情。
有谁知道可能出了什么问题?我对 Linux 和终端的东西很陌生。
【问题讨论】:
-
你可以在没有会话的情况下只运行
screen -dmS GNode -L node server吗?通过auto.sh,而不是从终端手动。 -
正如我所说,只有第一行被执行。终止正在运行脚本的屏幕会话的那个。
-
我只是在考虑可能是
screen -S GNode -X quit导致screen -dmS GNode -L node server无法运行,这就是为什么最好验证screen -dmS GNode -L node server即使单独运行也确实不起作用。只要确保没有会话正在运行,您必须先退出它。 -
它单独工作。事实上,当我从终端调用我的脚本时(所以调用它的会话不会终止)它按预期工作。
标签: linux node.js bash terminal