由于生产环境权限限制的比较严格.,在定时任务执行的命令都使用 sudo命令.
如: sudo echo 123 >/home/xx
但是发现,定时任务并没有执行, crond 服务运行正常,执行的文件权限也没有问题,crontab的日志也没有开启. 一时间无从从查起.
在定时任务后,加入日志输出,如下:
* * * * * sudo echo 123 >> /sdc/x >/sdc/123.log
定时任务执行后,会把执行结果写入 /sdc/123.log 中.
结果发现日志中文件有如下内容:
sudo: sorry, you must have a tty to run sudo
解决办法:
编辑 /etc/sudoers
方法 1:
Defaults requiretty,修改为 #Defaults requiretty,表示不需要控制终端。
方法2:
Defaults requiretty,修改为 Defaults:app !requiretty,表示仅 app 用户不需要控制终端。