>我有这种情况:我有一个在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