Bash在给定时间内启动并杀死Ubuntu上的进程

问题描述 投票:0回答:1

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

bash ubuntu
1个回答
0
投票

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

现在针对这种特殊情况,您可以使用以下内容:

while true
do 
  timeout 12h php myfile.php
done

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

更稳定的解决方案是使用Supervisor或Monit等流程管理器创建系统服务或部署脚本。

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
© www.soinside.com 2019 - 2024. All rights reserved.