可能与此有关上一个问题,我希望能够在指定的时间内运行任务,然后停止/终止它,然后重新启动它。
具体来说,我在 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')