退出SCREEN会话不会结束正在运行的程序

时间:2015-03-17 23:27:27

标签: node.js bash gnu-screen

我有一个简单的脚本试图杀死正在运行的屏幕会话,等待5秒,然后重新启动它。试图把它放在一个cron工作上,但有一个奇怪的问题。这是脚本:

#!/bin/bash
screen -S test -X quit
sleep 5
screen -dmS text node test.js

因此,第一次运行它时,会出现“No session named test”错误......没关系。然后它以分离模式启动会话并运行节点脚本。

下次运行脚本时,它会找到会话,发出quit命令,如果运行'screen -ls',则不会列出会话。

然而程序仍在运行......但是,如果你打开浏览器然后点击该网站,那么该过程就会消失,你会收到服务不再运行的错误......所以网络服务器会继续运行会话已经退出,只有当您尝试通过Web浏览器访问它时才会消失。

我在Max OSX 10.9.5(Mavericks)上测试所有这些

我是屏幕新用户并且正在使用它,因为我需要能够连接到远程服务器并通过控制台监视/管理脚本。

我已尝试以下操作向屏幕会话发出Ctrl-C命令以退出程序,但没有运气:

screen -S text -X stuff "^C"

我需要能够确保节点脚本在会话结束时退出运行。任何方向将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明原始脚本在服务器(CentOS 6)上工作得很好。我确实使用你的建议只是杀死进程并重新启动它,但客户端需要会话被杀死(无论出于何种原因插入....)谢谢!