如何每隔一小时间隔杀死日志运行的作业?

时间:2017-02-06 09:57:49

标签: linux shell unix

我想搜索所有运行超过一小时的作业。杀了他们。然后睡60分钟。再次搜索是否有任何工作超过60?循环过程。

1 个答案:

答案 0 :(得分:0)

如果你想在linux盒子上找到运行超过60分钟的进程的PID,你可以使用一个非常简单的基本bash脚本,如下所示:

#!/bin/sh
MIN=60
SEC=$((MIN*60))
ps -eo etimes=,pid= | while read sec pid; do
 if [ ${sec} -gt ${SEC} ]; then
   echo ${pid}
   #kill -9 ${pid} # remove the # at the beginning of the line to actually kill those processes
 fi
done

这将显示正在运行的进程的PID,每行一个

假设您将此脚本命名为 60min.sh ,则可以使用cron作业每60分钟运行一次:

0 * * * * /bin/bash /path_to/60min.sh

此cron作业将每60分钟(或每小时)运行 60min.sh 脚本

请注意,您可能会意外终止系统进程,系统可能会变得不稳定或无法使用,因此您必须重新启动。

如果您使用特定的Linux用户运行不同的进程,我建议您仅搜索属于该用户的进程,而不是用户root。