在 Linux 中运行脚本一段指定的时间,然后停止并重新启动

在 Linux 中运行脚本一段指定的时间,然后停止并重新启动

可能与此有关上一个问题,我希望能够在指定的时间内运行任务,然后停止/终止它,然后重新启动它。

具体来说,我在 Linux 工作站上运行 Folding@Home 应用程序。它有时会无法登录家庭服务器,并且会长时间处于闲置状态,但不会释放它占用的内存/资源(是的,我知道这很可能是该工具的一个错误,但目前我无法修复它)。通常,只需终止并启动该工具即可让它再次登录。

因此,我希望能够运行类似这样的操作:

run_for <time> ./fah6

是否存在这样的工具,或者我应该编写一个包装器,然后fah6在一周后销毁客户端并重新启动它?

答案1

我可能比较老派,但这听起来像是 cron 的工作。只需按照适当的时间表使用 cron 将其终止/重新启动即可。您必须考虑 fah6 是否可以轻松“从中断的地方继续”,但我认为每天重新启动不会有什么问题。

布袋

答案2

超时工具。

超时 - 运行具有时间限制的命令

超时 [选项] 持续时间 命令 [参数]...
超时 [选项]

启动 COMMAND,如果 DURATION 之后仍在运行则将其终止。

例如:

    timeout 15s ./fah6 

答案3

sleep 60 & VAR=$! ; sleep 10 ; kill $VAR

在此示例中,“睡眠 60' 是您想要提前终止的命令的占位符。替换 '10' 以及您希望运行定时命令的时间(最多),以秒为单位。上面的命令应在 10 秒后退出,从而终止 '睡眠 60' 过程。

请注意,这是针对 bash 的。

答案4

就我个人而言,我会在脚本中实现运行、等待和终止子进程的功能。

在 python 中有类似这样的内容:

http://docs.python.org/dev/library/multiprocessing.html

如果它不在 Pyton 中,请在处理 wait/stop/restart 的脚本代码中使用 os.system('./fah6')

相关内容