如何每隔一小时终止日志正在运行的作业



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

如果你想在 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 的进程。

最新更新