我将一些配置文件存储在版本控制中。最近我尝试设置每日 anacron 作业,这样我就不必手动更新文件了。我以前从未使用过 cron 或 anacron,但阅读cron 文档我决定将脚本放入/etc/cron.daily
。以下是我的脚本,名为dot-files
(更改为可执行文件chmod +x
):
#!/bin/sh
cd /home/dell/dot-files && /usr/bin/git add . && /usr/bin/git commit -a -m 'daily update' && /usr/bin/git push -u origin master
然而,最近两天它似乎没有运行。以下是来自 的几行/var/log/syslog
:
Aug 21 10:42:02 dell-Studio-1535 anacron[1023]: Job `cron.daily' terminated (exit status: 1) (mailing output)
Aug 21 10:42:02 dell-Studio-1535 anacron[1023]: Can't find sendmail at /usr/sbin/sendmail, not mailing output
有人能看出这有什么问题吗?我是否使用了错误的设置?
附言我正在使用 ubuntu 12.04 系统,它并不总是运行。
答案1
好的,首先要做的事情是。您看不到哪里出了问题,因为 cron 无法将输出发送给您。但是,您无需配置 sendmail,只需修改脚本,使其存储命令的输出:
#!/bin/sh
export workdir=/home/dell
export logfile=$workdir/dot-files.log
export errfile=$workdir/dot-files.err
date >> $logfile
date >> $errfile
{ cd $workdir/dot-files && /usr/bin/git add . && /usr/bin/git commit -a -m 'daily update' && /usr/bin/git push -u origin master ; } >> $logfile 2>> $errfile
另外,您不需要以 root 身份直接将其放入 cron,您可以以用户身份运行 crontab。
man crontab
PS 当您手动运行该脚本时会发生什么?