我想在每天的某个时间运行一个脚本,所以我发现我可以使用cron
它。
按照本教程,我crontab
像这样编辑了文件:crontab -e
并添加:
26 13 * * * ./home/user/backup.sh && echo "Backup done: $(date +"%Y%m%d%H%M%S")" >> /home/user/log.txt
13:26 是 2 分钟前,但在 /home/user 中没有 log.txt
怎么了?
答案1
如果你在终端中运行:
./home/user/backup.sh
你可能会得到如下错误:
bash: ./home/user/backup.sh: No such file or directory
.
因为在这种情况下,在脚本路径前使用 (点) 是错误的( )。另外,请通过运行以下命令/home/user/backup.sh
确保是可执行的:backup.sh
chmod +x /home/user/backup.sh
此外,请确保您user
在任何地方都更改您的用户名。
最后,确保/home/user/backup.sh
脚本的退出状态为 0。如果退出状态相差 0,则第二条命令(echo "Backup done: $(date +"\%Y\%m\%d\%H\%M\%S")"
- 必须转义所有%
字符)将永远不会执行,因为&&
操作员。
正如我所说的,您必须转义%
crontab 条目中的所有(百分比),因为在这种情况下它具有特殊含义:
%
命令中的百分号 ( ),除非使用反斜杠 (\
) 进行转义,否则将被更改为换行符,并且第一个 % 之后的所有数据都将作为标准输入发送到命令。来源:计划任务