在给定的时间段内在 Ubuntu 上启动和终止进程



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

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

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

while true
do 
timeout 12h php myfile.php
done

这是一个无限循环,启动您的命令并在 12 小时后终止它。(或您想要的任何其他持续时间:30 分钟、1 天等(

更稳定的解决方案是创建 systemd 服务或使用某些进程管理器(如 Supervisor 或 Monit(部署脚本。

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

这篇文章中的示例主管配置

[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

最新更新