【发布时间】: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