我对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)。
答案 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
只需评论一下即可发送邮件或测试找到的值。