2015-07-12 196 views
2

我试图在重新启动时运行一个简单的.sh脚本。我想让这个脚本永远运行。我在/home/user/folder/script.sh的用户目录中的一个文件夹中有这个脚本。它运行在一个简单的vps上,我可以通过ssh访问。如果我在./script.sh &中运行它,而我处于同一个目录中,它可以很好地工作。当我关闭ssh连接时,它停止。在重新启动时运行.sh脚本并保持运行

我试着添加一个像这样的crontab条目:@reboot /home/user/folder/script.sh &(正如其他答案中的建议),然后只是键入sudo reboot,但它不起作用。

我不知道哪一个是这个问题的最佳解决方案。该script.sh是这一个(我发现它,而寻找一些解决办法,如果它崩溃重启蟒蛇start.py):

until ./start.py; do 
    echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2 
    sleep 1 
done 

而且它正是我需要的。

谢谢你的帮助!

+1

您应该查看流程主管。有些工具可以正确完成这项工作,它们不是shell脚本循环的黑客。 –

+2

看看这篇文章 - http://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root。它在接受的答案中提到了几个“@reboot”陷阱。 – matthewatabet

+0

忘记shell脚本和cronjobs,它们同样吸吮你正在尝试做的事情。在Linux下,init/upstart是使服务器进程延续机器正常运行时间的方式。例如,查看/ etc/init和/etc/init.d中的条目。 – msw

回答

2

当您关闭ssh连接时,脚本会收到挂断信号并退出。

nohup ./script.sh & 

脚本将继续运行在关闭连接后:如果你开始这样的脚本可以忽略使用nohup挂机信号。