例1:每分钟打印一次自己的名字拼音全拼到“/server/log/自己的名字命名的文件”中。
[root@ningjiancheng1 ~]# mkdir -p /server/log/
[root@ningjiancheng1 ~]# echo "ningjiancheng" >>/server/log/ningjiancheng
[root@ningjiancheng1 ~]# cat /server/log/ningjiancheng
ningjiancheng
[root@ningjiancheng1 ~]# crontab -e
crontab: installing new crontab
[root@ningjiancheng1 ~]# crontab -l
##print name to file
* * * * * /bin/echo "ningjiancheng" >>/server/log/ningjiancheng
方法1:
#print my name to log by ningjiancheng at 2017211
* * * * * /bin/echo "ningjiancheng" >>/server/log/ningjiancheng
方法2:
#print my name to log by ningjiancheng at 2017211
*/1 * * * * /bin/echo "ningjiancheng" >>/server/log/ningjiancheng >dev/null 2>&1
提示:这是一个错误的定时任务,请同学们思考错在了哪里?
解答知识小结:
1,定时任务要加注释
2,如果已经要定向到文件中,结尾不要有>/dev/null 2>&1
3,/server/log目录必须要存在才能出结果,如没有创建这个目录。
4,定时任务中的路径一定要绝对路径
5,crond服务必须首先开启
6,查看定时任务日志tail /var/log/cron
例2: 每周六,日上午9点和下午14点(执行/server/scripts/chensiqi.sh)
要求:/server/scripts/chensiqi.sh脚本的功能是打印当天的日期,格式为2017-02-11可以随意。
00 9,14 * * 0,6 /bin/sh /server/scripts/chensiqi.sh >/dev/null 2>&1
步骤:
1,创建对应的目录
mkdir /server/scripts -p
2,命令行测试
date +%F 2017-02-11
3,书写脚本
echo 'date +%F' >/server/scripts/chensiqi.sh
cat /server/scripts/chensiqi.sh
4,命令行测试脚本
/bin/sh /server/scripts/chensiqi.sh
2017-02-11
5,编辑定时任务(让他快速执行*****)
crontab -e
#sync time chensiqi at 20170211
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >>/server/log/chensiqi.log 2>&1
注意:
测试的时候最好定向到一个文件中。
6,测试
tail -f /server/log/chensiqi.log
2017-02-11
7,按照原来的要求更改定时任务的时间
#go to chensiqi trainning by chensiqi at 20170211
00 09,14 * * 0,6 /bin/sh /server/scripts/chensiqi.sh >>/server/log/chensiqi.log
技巧:
定时任务一定要尽量用脚本实现。
命令行操作成功,然后放入脚本执行(/bin/sh 脚本全路径)成功,最后在配置任务
复制操作成功的命令行脚本,再定时任务里黏贴配置。
加/bin/sh执行脚本 /bin/sh /server/script/chensiqi.sh
要把脚本的执行结果定向到空或者是一个文件中,不要什么都不加。
例3:每天晚上 00:30 点,打包站点目录/etc/rc.local,/var/spool/cron,/etc/hosts,备份到/server/backup 目录下,每次备份按时间生成不同的备份包,删除 3 天以前的备份包。
[root@kelong /]# mkdir /server/backup -p
[root@kelong /]# vim /server/scripts/backup-rm.sh
#!/bin/bash
cd / &&\
/bin/tar zcfh /server/backup/lch-$(date +%F-%H).tar.gz ./etc/rc.local ./var/spool/cron ./etc/hosts &&\
/bin/find /server/backup/ -type f -name "lch*.tar.gz" -mtime +3 -exec rm -f {} \;
[root@kelong /]# /bin/sh /server/scripts/backup-rm.sh
[root@kelong backup]# ll /server/backup/
total 4
-rw-r--r-- 1 root root 606 Mar 30 10:23 lch-2016-03-30-10.tar.gz
[root@kelong backup]#
[root@kelong /]# crontab -e
#backup /etc/rc.local /var/spool/cron /etc/hosts to /server/backup
30 0 * * * /bin/sh /server/scripts/backup-rm.sh >/dev/null 2>&1