通知已激活超过X次的进程

时间:2018-10-22 18:56:58

标签: shell scripting

我对linux脚本还很陌生,但是我正在尝试创建要添加到crontab中的脚本,以检查用户进程是否已经运行了x倍以上的时间。

#! /bin/sh
#This feeds the list of process over 1 hour and strips the colons and sees 
#if it is over 12 hours. If so, then mails it to me.
if $(( (ps exo time,pid | grep -v "00:00:" | awk '{print $1}' | sed s/://g) >= 001200 )); then
    mailx -s "$(hostname) Long Process Detection" me@example.com
fi

截至目前,它正在产生一个错误,它缺少一个')',但是我已经看了很多遍了,而且看不到任何未封闭的括号。任何帮助,将不胜感激。该错误显示为

"missing ')' (error token is "exo time,pid |grep -v "00:00:" | awk '{print }' | sed s/://g) >= 001200 ")"

上面的方法是通过在打开的括号内移动$来解决的,但它会在条件计算时反馈一个错误。 (即我的示例中000106> = 000010)。

1 个答案:

答案 0 :(得分:0)

实际上,不确定您的代码,但这应该是您想要的,我希望如此:

#!/bin/sh
#This feeds the list of process over 1 hour and strips the colons and sees
#if it is over 12 hours. If so, then mails it to me.
for i in $(ps exo time,pid | grep -v "00:00:" | grep -v "TIME" | awk '{print $1}' | sed 's/://g');do
    if [ $i -ge 001200 ]; then
            #echo $i
            mailx -s "$(hostname) Long Process Detection" me@example.com
    fi
done

只需评论一下即可发送邮件或测试找到的值。