在 Linux 系统中查找任何运行时间超过 30 分钟的脚本

在 Linux 系统中查找任何运行时间超过 30 分钟的脚本

请分享命令来查找在 Linux 系统中运行时间超过 30 分钟的任何脚本。

答案1

ps命令有一个etimes字段,它以秒为单位显示自给定进程启动以来的时间。

以下 bash 脚本将输出运行时间超过 30 分钟的进程的 PID。

#!/bin/sh
MIN=30
SEC=$((MIN*60))
ps -eo etimes=,pid= | while read sec pid; do
 if [ ${sec} -gt ${SEC} ]; then
   echo ${pid}
 fi
done

答案2

假设 GNU date + ps,这将为您提供超过 30 分钟的 pid 列表:

# weird format to match ps -o lstart
cutoff=$(date -d '30 minutes ago' +'%a %b %e %T %Y')
ps -e -o lstart,pid |
awk '$0 < "'"$cutoff"'" {print NF}'

在 Linux 上,您可以检查 /proc/$pid/exe 是否解析为已知的解释器,如 /bin/sh、/bin/bash 或 /usr/bin/python - 如果是,则您知道它是一个脚本。

相关内容