我试图让我的Ubuntu服务器上运行的应用程序,以便Google有时间ping它,但是当我注销时,应用程序一直closures。
我使用supervisor启动Nodejs应用程序来监视更改(通过shell脚本)
我发现了像nohup这样的命令,但是在运行后台服务方面,除了input诸如service httpd start类的简单命令之外,我真的无能为力,这似乎对CentOS上的Apache非常有用!
我是否需要创build另一个用户来运行服务? 我有一个Ubuntu 10.04的Linode实例
run.sh
cd myapp/src/main/node supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js
尝试这个:
nohup supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js &
其他一些方法:
它退出的原因是因为当你注销并终止父shell时,脚本收到一个HUP信号,并失去了写入STDOUT和STDERR的能力。
你有4个选项,(按照“正确性”和“清洁度”的顺序):
screen会话中运行脚本 nohup运行脚本 这里有另一种方法来做到这一点没有nohup :disown它。
例如:
$ jobs $ sleep 300 & [1] 79844 $ jobs [1] + running sleep 300 $ disown %1 $ jobs $ pgrep sleep 79844
阐释:
jobs来显示后台作业,没有 sleep 300 jobs 。 用于sleep PID是79844,是作业#1 jobs 。 没有后台工作。 pgrep来查找任何名为sleep进程。 有一个,与PID 79844(相同的PID) 您可以closuresterminal和/或注销,而不会影响无主的工作。
这样做的好处是不会留下nohup.out文件,但是也会丢失写入STDOUT任何内容。