【问题标题】:Does nohup work as long as the server is running?只要服务器正在运行,nohup 就可以工作吗?
【发布时间】:2018-05-13 05:57:18
【问题描述】:

我最近决定将我的程序从 AWS 迁移到本地服务器(运行 Raspbian 的 Raspberry Pi 3 B+)。我通过 SSH 连接到现在发送以下命令的本地服务器(如果我错了,请纠正我)。

nohup ./Eye.sh & nohup ./Hand.sh & nohup ./Foot.sh &

该程序在周末不执行任何操作(此处当前为周日凌晨 2 点),直到周一上午 9:30 才会开始执行其任务。我需要知道,我希望永远不必通过 SSH 回到服务器来重新执行命令,因为程序始终运行至关重要。

我有什么需要担心的吗?只要系统有电,程序就会运行吗?

【问题讨论】:

  • 这看起来有点像 XY 问题。请参阅:What is the XY problem? 你想要完成什么?使用nohup 运行只需以不受hangup 影响的方式运行每个脚本。很大程度上取决于脚本本身——没有更多,很难看出您期望使用nohup 运行脚本有什么好处。为什么不将每个正在运行的脚本的PID 写入pidfile 并验证该进程是否/仍在运行?
  • 另一种选择是简单地将crontab 设置为每周一9:30 运行。
  • 我将不得不做更多的研究。这些程序都是用 Python 编写的,并且都有一个需要连续运行的 while 循环,这就是我编写 .sh 文件的原因(如果程序失败,请再次执行)。如果您认为您有答案,请发布,否则我将调查 XY 问题。
  • 没有看到脚本,我无法回答,但如果我站在你的立场上,我会让脚本将它们的 PID 写入一个 pidfile,比如 /var/tmp,然后一个单独的脚本,用于检查每个 pidfile 并确认每个进程正在运行或根据需要重新启动每个进程——或者——当我需要它们运行时,我只需在 crontab 中调用它们。我想你已经解释了需要——只是为了确保它们持续运行。如果脚本没有运行,你应该搜索这个站点以重新启动脚本——有几个很好的方案。

标签: linux raspberry-pi3 raspbian


【解决方案1】:

是的。只要服务器正在运行,您就可以关闭 SSH 连接,您的程序将继续使用nohup 命令运行。如果您的服务器重新启动,无论出于何种原因,您都应该考虑使用 respawn。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多