【问题标题】:How to modify script to exclude some processes?如何修改脚本以排除某些进程?
【发布时间】:2014-04-21 11:16:37
【问题描述】:

欢迎,我有一个简短的脚本来杀死比 UID 更大的 UID 工作时间长于指定时间的进程。如何排除例如 mc 命令的杀戮?

#!/bin/bash
#
#Put the minimum(!) UID to kill processes
UID_KILL=500

#Put the time in seconds which the process is allowed to run below
KILL_TIME=300

KILL_LIST=`{
    ps -eo uid,pid,lstart | tail -n+2 |
    while read PROC_UID PROC_PID PROC_LSTART; do
SECONDS=$[$(date +%s) - $(date -d"$PROC_LSTART" +%s)]
if [  $PROC_UID -ge $UID_KILL -a $SECONDS -gt $KILL_TIME ]; then
    echo -n "$PROC_PID "
fi
done
}`

#KILLING LOOP
while sleep 1
do
    if [[ -n $KILL_LIST ]]
    then
        kill $KILL_LIST
    fi
done

【问题讨论】:

  • 你在认真使用这个脚本吗?
  • 以后想用。

标签: bash time process kill


【解决方案1】:

像这样改变内部命令:

ps -eo comm,uid,pid,lstart | tail -n+2 | grep -v '^your_command' | ...

这将从列表中排除'your_command'

有关ps -o 的更多信息,请参阅man ps 中的STANDARD FORMAT SPECIFIERS

【讨论】:

  • 对不起,但是当我在你的命令中输入 mc 时,mc 仍然被杀死。
猜你喜欢
  • 2021-03-14
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 2015-04-14
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多