大家好,我正在尝试每天 23:55 运行我的脚本。这是我的代码:
# m h dom mon dow command
PATH=/usr/sbin:/sbin:/usr/bin:/bin
55 23 * * * bash -l /home/as/bin/backupAutoEtc.sh
在 中,这个命令运行正常crontab -e
,但如果我将其放入 中,它就不起作用了sudo crontab -e
。
文件末尾有一个空行(我也尝试过不使用bash -l
)。对于 root,日志文件是相同的定时任务和正常定时任务(没有错误),所以我不明白为什么第一个有效而后者无效。我已经阅读了很多关于这个主题的答案,但没有一个对我有用。你有什么想法吗?
先感谢您
PS 脚本如下(/etc 目录的简单每日备份):
#!/bin/bash
dayOfTheWeek=$(date +%u)
nomeFile=backupEtc${dayOfTheWeek}.tar.gz
tar -czvf ~/${nomeFile} /etc
答案1
你可以把它放入sudo
crontab 中。像这样:
55 23 * * * sudo /home/as/bin/backupAutoEtc.sh
但是需要将脚本添加sudoers
为例外,以便 cron 可以运行它而不提示您输入 root 密码。如果您不知道,请执行以下操作:
sudo visudo -f /etc/sudoers.d/rewrite
在里面使用此行:
user ALL = NOPASSWD: /home/as/bin/backupAutoEtc.sh
使用您自己的用户名而不是用户。问题解决了!