更新: 当我在下面的脚本中回显$ res时,我得到以下内容,我想这是因为脚本本身包含了searchd这个词!所以在cronjob进程执行的瞬间,$ res变为空! 我重命名了剧本,问题解决了!
root 10769 7177 0 23:31 pts/1 00:00:00 /bin/bash /home/scripts/monitor_searchd.sh root 10770 10769 0 23:31 pts/1 00:00:00 /bin/bash /home/scripts/monitor_searchd.sh
原始问题:
我有一个shell脚本,当我在shell中调用它时可以工作,但是当按照以下方式放入crontab时,它不起作用(不发送电子邮件)。奇怪的是,cron日志显示该进程每分钟都在运行!
*/1 * * * * root /home/scripts/monitor_searchd.sh
这是脚本:
process="java" res="`ps -ef|grep $process|grep -v grep`" if [ ! -n "$res" ]; then echo "$process is down!" | mail -s "$process is down" xxx@gmail.com fi
cron log
CROND[7370]: (root) CMD (/home/scripts/monitor_searchd.sh)
答案 0 :(得分:0)
你可以补充一下:
echo "$process is down!" >> /tmp/monitor_searcd.log
在mail
行前的?它可以帮助解决问题的本地化。
和一对小言论:
请添加
#!/bin/bash
到剧本的第一行。
更改
[ ! -n "$res" ]
到
[ -z "$res" ]