问题:
在linux中,使用普通账户创建定时任务执行shell脚本时,任务会自动执行,但总执行失败(shell脚本编写确认无误)。
如下:使用sudo crontab -e 创建一个每分钟执行一次的定时任务,创建后提示有新邮件(一般是有错误才会出现该提示)
使用cat命令查看邮件内容
sudo cat /var/spool/mail/root
滑到最底下,发现提示定时任务执行的脚本Permission denied。这是由于普通用户权限不足,无法运行shell脚本
解决办法:
使用 /bin/sh /xxxx/xxxx.sh 命令创建定时任务, 即在刚才指定脚本文件路径前面加上/bin/sh
添加定时任务:sudo crontab -e
定时任务内容:* * * * * /bin/sh /tmp/httpdmonitor.sh
查看添加的定时任务
sudo crontab -l
查看httpdmonitor.sh脚本中输出的日志文件,发现脚本执行成功,即定时任务成功创建且正常执行
还有一点需要注意,使用crontab命令执行的shell脚本,无法将 echo " " 中的文本内容直接输出到屏幕上,需要将其输入到指定日志文件,通过查看日志文件信息检测脚本执行情况
echo "$(date) httpd id ok!!! " >> /tmp/httpd_suc.log