Bash在指定时期内启动并终止Ubuntu上的进程

时间:2018-09-06 18:02:38

标签: bash ubuntu

我有这种情况:我在ubuntu终端(xfce4-terminal)上运行的php中有一个脚本作为控制台/进程(在php中有一些进程的循环)。 问题是:由于内存使用过多,此过程每两天被终止。 我需要的是:一个bash脚本,可以启动该过程,每隔48小时就会杀死该过程,然后重新启动。

1 个答案:

答案 0 :(得分:0)

最佳解决方案是修复内存泄漏,跟踪泄漏功能并在需要帮助时使用相关代码发布新问题。

现在对于这种特定情况,您可以使用类似以下的内容:

while true
do 
  timeout 12h php myfile.php
done

这是一个无限循环,它将启动您的命令并在12小时后将其杀死。 (或您想要的其他任何持续时间:30m,1d等)

更稳定的解决方案是使用诸如Supervisor或Monit之类的流程管理器来创建systemd服务或部署脚本。

Supervisor具有一个配置参数“ autorestart”,如果您指定true,则每次崩溃时都会重新启动脚本,这是一个稳定的生产就绪解决方案。

来自this post

的示例主管配置
[program:are_we_there_yet]
command=php /var/www/areWeThereYet.php
numprocs=1
directory=/tmp
autostart=true
autorestart=true
startsecs=5
startretries=10
redirect_stderr=false