在 中/etc/cron.d/myjob
,我创建了一个运行 bash 脚本的 cron 任务,并将其 stdout 和 stderr 重定向到日志文件。该脚本包含一行sudo
运行命令。
在日志文件中:
sudo: no tty present and no askpass program specified
这是否会导致一些需要我注意的问题?
我想知道/etc/cron.d/
文件中的 cron 任务是否应该不包含sudo
?
谢谢。
答案1
“假设”是一种判断。
调用的命令/etc/cron.d/
以指定用户身份运行(无论是用户root
还是任何其他用户;它在 cron 行中定义)。所以,一般情况下,是没有必要的sudo
。
但是如果你做有一个调用的脚本,sudo
那么您需要确保sudoers
输入正确。尤其:
- 确保该条目已分配给运行脚本的用户(这可能是
root
) - 确保该条目已
NOPASSWD
设置属性,以便无需任何人输入密码即可运行。
您看到的错误是因为该sudo
命令需要密码,但没有终端可以提供密码。
编写良好的脚本会检测它是否以正确的权限运行,并且sudo
根本不会调用,但有很多糟糕的脚本:-)