在重新启动时运行.sh脚本并保持运行
问题描述:
我试图在重新启动时运行一个简单的.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
而且它正是我需要的。
谢谢你的帮助!
答
当您关闭ssh连接时,脚本会收到挂断信号并退出。
nohup ./script.sh &
脚本将继续运行在关闭连接后:如果你开始这样的脚本可以忽略使用nohup
挂机信号。
您应该查看流程主管。有些工具可以正确完成这项工作,它们不是shell脚本循环的黑客。 –
看看这篇文章 - http://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root。它在接受的答案中提到了几个“@reboot”陷阱。 – matthewatabet
忘记shell脚本和cronjobs,它们同样吸吮你正在尝试做的事情。在Linux下,init/upstart是使服务器进程延续机器正常运行时间的方式。例如,查看/ etc/init和/etc/init.d中的条目。 – msw