【问题标题】:Run .sh script on reboot and leave it running [duplicate]重新启动时运行 .sh 脚本并使其运行[重复]
【发布时间】:2015-09-30 22:47:44
【问题描述】:

我正在尝试在重新启动时运行一个简单的 .sh 脚本。我想让这个脚本永远运行。我在/home/user/folder/script.sh 的用户目录中的一个文件夹中有这个脚本。它在一个简单的 vps 上运行,我可以通过 ssh 访问。如果我在同一目录中通过 ./script.sh & 运行它,它会完美运行。当我关闭 ssh 连接时,它会停止。

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

我不知道哪个是解决这个问题的最佳方法。 script.sh 就是这个(我在寻找一些解决方案以在 python start.py 崩溃时重新启动它时找到它):

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

它正是我所需要的。

感谢您的帮助!

【问题讨论】:

  • 您应该调查流程主管。有些工具旨在正确地完成这项工作,而不是 shell 脚本循环黑客。
  • 也看看这篇文章——unix.stackexchange.com/questions/109804/…。它在接受的答案中提到了几个“@reboot”陷阱。
  • 忘掉 shell 脚本和 cronjobs,它们同样很讨厌你正在尝试做的事情。在 Linux 下,init/upstart 是使服务器进程持续机器正常运行时间的方法。查看 /etc/init 和 /etc/init.d 中的条目以获取示例。
  • 在后台运行 cron 作业完全没有意义; cron 已在后台运行。

标签: python linux bash shell ssh


【解决方案1】:

当您关闭 ssh 连接时,您的脚本会收到挂断信号并退出。如果您像这样启动脚本,则可以使用nohup 忽略挂断信号:

nohup ./script.sh &

那么脚本会在你关闭连接后继续运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2018-06-11
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多