我有一堆不同的进程(主要是shell脚本)需要在特定时间启动,然后需要在几个小时后被杀死。现在我通过cron启动它们,然后使用另一个cron作业来获取进程ID并杀死它们。不是最干净的方式,特别是如果有相同脚本的多个副本在运行。
我想知道是否有某种包装可以启动进程(在子shell中?或fork?)然后在给定时间杀死它。谷歌搜索并没有带来太大的收益,所以我想在深入了解自己的情况之前先咨询一下全知的stackoverflow社区。 p>
谢谢!
答案 0 :(得分:0)
您已经拥有的是正确的解决方案。从cron开始,以cron结尾。关于同一脚本的多个实例的问题,这是您的需要。您的要求是否需要运行同一个脚本的多个实例?
获取进程ID并将其杀死。当你说你的意思是脚本将他们的pids记录在你用来阻止他们的文件中?或者您使用 ps / pidof ?
答案 1 :(得分:0)
Monit是一个很好的工具,可用作控制/监控进程的包装器。
您的情况属于服务测试功能,您可以根据process uptime采取行动。
check process myapp with pidfile /var/run/myapp.pid
start program = "/etc/init.d/myapp start"
stop program = "/etc/init.d/myapp stop"
if uptime == 3 hours then stop