请分享命令来查找在 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 - 如果是,则您知道它是一个脚本。