根据时间启动和终止进程

时间:2012-07-03 12:42:06

标签: linux shell scripting

我有一堆不同的进程(主要是shell脚本)需要在特定时间启动,然后需要在几个小时后被杀死。现在我通过cron启动它们,然后使用另一个cron作业来获取进程ID并杀死它们。不是最干净的方式,特别是如果有相同脚本的多个副本在运行。

我想知道是否有某种包装可以启动进程(在子shell中?或fork?)然后在给定时间杀死它。谷歌搜索并没有带来太大的收益,所以我想在深入了解自己的情况之前先咨询一下全知的stackoverflow社区。

谢谢!

2 个答案:

答案 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