我正在使用启用了 SELinux 的 CENTOS 7。服务器有root帐户和1个用户帐户,一般来说,我使用root访问并做所有事情。
今天我尝试使用以下命令配置每天晚上运行的 cron 作业
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
========== Job 1 - Clear the access log ===========
55 23 * * * root truncate -s 0 /var/log/phpweb-datasync-access.log >/dev/null 2>&1
# ======== Job 2 Delete temp download photo from php web site===================
57 23 * * * root find /app/photo_store/ -mtime +1 -exec rm -f {} \; >/dev/null 2>&1
# ======== Job 3 Restart httpd Server ===========
59 23 * * * root sudo service httpd restart >/dev/null 2>&1
一切正常,但我很好奇我真的需要在 Job 3 中使用 sudo 吗?万一我尝试在终端中运行“service httpd restart”,它没有权限问题,但我看到一些教程网站上的 cron 作业示例也有“sudo”。
从crontab(5) 的手册页:
在您的文件中,您正在定义 user
root
,因此该命令将已经以提升的权限执行。sudo
是不必要的。如果您从
crontab
of中运行它root
,看起来就像您一样,那么不,您不需要sudo
在cronjob
. 它将以适当的权限和权限从 root 的 shell 运行,并且您也已经root
在 cronjob 本身中指定了。事实上,如果您从
crontab -e
as运行作业,root
那么您甚至不需要指定root
为用户。使用sudo
不会造成任何伤害,但不是必需的。