1、查看root用户身份下正常运行的定时任务
crontab -l -u XXX 列出XXX用户的所有定时任务,如有没有会提示 no crontab for XXX
列出所有的用户:
cat /etc/passwd |cut -f 1 -d :
2、编写定时任务脚本xxx.sh:
#/bin/bash set -x srcdir=/cgdl/local-svn/rpm-svn/transplant-apps/v2.1/desktop-x86/ destdir=/cgdl/desktop-repos/v2.1/unstable/desktop-x86/third-part/ cd $srcdir svn update rsync -avz --delete $srcdir $destdir if [ ! -d $destdir/repodata ];then createrepo_c --workers 36 . else createrepo_c --workers 36 --update $destdir fi logdir=/var/log/ logfile=update_third-part_repo.log cd $logdir if [ ! -f "$logfile" ];then touch $logfile echo `date` > $logdir/$logfile else echo `date` >> $logdir/$logfile fi
其中logdir部分是为了验证定时任务是否实际执行,每执行一次,就会向一个日志文件中追加日期信息;
3、将定时脚本搬移至/etc/crontab中
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 0 * * * * /bin/sh /usr/local/bin/xxx.sh
4、重新启动定时任务
systemctl restart crond.service
5、查看定时任务执行状态
systemctl status crond
可以根据输出具体信息判断定时任务的是否正常执行,如果出现”bad command“说明,/etc/crotab脚本格式书写有问题(前提是定时脚本手工执行无问题哈);