我使用的是 CentOS 7,并安装了“cronie”
yum install cronie
Run Code Online (Sandbox Code Playgroud)
我有一个shell来备份我的主文件夹,shell的内容(当然,backup.sh是775)
#!/bin/bash
#START
TIME=`date +%Y-%m-%d_%Hh%M`
FILENAME=backupHome_123.30.150.29_$TIME.tar.gz
SRCDIR=/home
DESDIR=/backup
tar -cpvzf $DESDIR/$FILENAME $SRCDIR
#END
Run Code Online (Sandbox Code Playgroud)
并添加到 crontab -e
00 2 * * * /bin/bash /backup/backup.sh
Run Code Online (Sandbox Code Playgroud)
但 crontab 不执行任何操作。当我仅检查 /var/log/cron 处的日志时,出现类似的情况,并且没有更多错误或处理日志
May 1 00:26:08 app crontab[12041]: (root) END EDIT (root)
May 1 00:33:21 app crontab[12086]: (root) BEGIN EDIT (root)
May 1 00:34:25 app crontab[12086]: (root) END EDIT (root)
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一些让 crontab 工作的建议吗?谢谢。
我发现最有用的信息实际上是由
systemctl status crond
Run Code Online (Sandbox Code Playgroud)
结果表明,由于“未经授权的 SELinux 上下文”错误,它无法正确加载。
您希望确保 cron 已启动并且在服务器重新启动时也启动,因此您需要在 CentOS 7 上执行两个命令来确保这一点:
systemctl enable crond && systemctl restart crond
Run Code Online (Sandbox Code Playgroud)
如果你习惯使用sudo,可以在上面的命令前面加上sudo。像这样:
sudo systemctl enable crond && systemctl restart crond
Run Code Online (Sandbox Code Playgroud)
您将从系统获得确认,例如:
创建从 /etc/systemd/system/multi-user.target.wants/crond.service 到 /usr/lib/systemd/system/crond.service 的符号链接。
最后检查 cron 是否正在运行 pgrep cron