前言:
crontab作为Ubuntu中自动执行指令的工具, 几乎说是不可避免的会使用到
但其中的代码是否成功按照所期望的设定成功执行, 需要通过日志查看定位
Ubuntu中默认是没有打开crontab的日志输出的, 即在/var/log/目录下没有cron.log日志文件
启动crontab日志生成:
-
修改rsyslog:
这里使用vim编辑器
sudo vim /etc/rsyslog.d/50-default.conf
找到此条:
cron.* /var/log/cron.log #将cron前面的注释符去掉
-
重启rsyslog & cron
sudo service rsyslog restart sudo service cron restart
-
进入日志目录查看日志:
cd /var/log
此时目录中以存在cron.log:
No MTA installed, discarding output:
查看日志发现一个问题:
日志中并没有指令输出, 而是
No MTA installed, discarding output
参考资料:
https://shipengliang.com/software-exp/no-mta-installed-discarding-output%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.html
这里是由于crontab执行脚本时会以邮件的形式发送至指定邮箱, 而并没有直接输出至日志中
如果没有安装邮箱服务器, 则就会显示这条提示
解决的方法是在每条指令的末尾添加输出重定向并加个2>&1
, 如:
原指令 > /var/log/cron_output.log 2>&1
这样就能在另外的文件中获取到指令输出