【cron & anacron 】


 ===== cron 计划任务 =====
计划任务主要是作一些周期性的任务,目前最主要的用途是备份数据
[root@station230 ~]# ps aux |grep cron |grep -v 'grep'
root      3078  0.0  0.0   5632  1108 ?        Ss   08:44   0:00 crond
[root@station230 ~]# chkconfig crond --list
crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

crond进程每分钟检查一次,以运行相应的任务
crond日志文件/var/log/cron

==系统级的计划任务 
更新whatis数据库,日志轮转,/tmp,/var/tmp清理
# vim /etc/crontab
01 * * * * root run-parts /etc/cron.hourly   //run-parts 后面是目录
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[root@station230 ~]# ls /etc/cron.hourly/
[root@station230 ~]# ls /etc/cron.daily/   //下面都是一些脚本程序
0anacron   cups       makewhatis.cron  prelink  rpm
0logwatch  logrotate  mlocate.cron     rhsmd    tmpwatch
[root@station230 ~]# ls /etc/cron.weekly/
0anacron  99-raid-check  makewhatis.cron
[root@station230 ~]# ls /etc/cron.monthly/
0anacron

=============用户级的计划任务==========
[root@station230 ~]# crontab -e          //创建计划任务
* * * * * /bin/ls
[root@station230 ~]# crontab -l          //查看计划任务
* * * * * /bin/ls
[root@station230 ~]# ls /var/spool/cron/     以各自用户名字定义的计划任务
root
[root@station230 ~]# cat /var/spool/cron/root
* * * * * /bin/ls

时间表:
*          *            *         *      *
分          时          日          月          周
0-59     0-23     1-31     1-12     1-7          0,7表示周日

*      *     *     *     *     命令(绝对路径),脚本,目录    
*      *     *     *     * /bin/date >/date.txt     2>/dev/null
*      *     *     *     *     /bin/date &>/dev/null
*      *     *     *     *     /bin/date
====================================
00 02 * * * ls          //每天2:00整
00 02 1 * * ls       //每月1号2:00整
00 02 14 2 * ls          //每年2月14号2:00整
00 02 * * 7 ls       //每周日2:00整
00 02 14 2 7 ls      //每年2月14号2:00整  或者  每周日2:00整,这两个时间都执行
===============================================================
00 02 * * * ls          //每天2:00整
* 02 * * * ls          //每天2:00中的每一分钟
* * * * * ls          //每分钟执行ls
* * 14 2 * ls          //2月14号的每分钟
===============================================================
*/5 * * * * ls          //每隔5分钟
00 02 1,5,8 * * ls     //每月1,5,8号的2:00整
00 02 1-8 * * ls     //每月1到8号的2:00整


RHEL5:
[root@station230 ~]# service crond restart
停止 crond:                                               [确定]
启动 crond:                                               [确定]
[root@station230 ~]# tail /var/log/cron    //查看日志

0 2 * * * touch /home/`date +%F`-file    失败的,最好把命令放到脚本中,减少出错率

练习:备份etc目录
要求:
1. 每天4:00备份etc目录到/var/back
2. 将备份命令写在脚本中,如/root/back.sh  加执行权限
3. 每天备份的文件名包含当天的日期,如2012-11-09.etc.tar.gz
4. 计划任务执行时,屏幕不产生任何输出 &>/dev/null
5. 只保留最近5天的备份 find /var/back -mtime +5 -exec rm -rf {} \;

date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date -s 14:00   //修改时间
date 110814002012   //修改日期,格式:月日时分年.秒

[root@station230 ~]# vim /root/back.sh
tar -czf /var/back/`date +%F`.etc.tar.gz /etc   //将/etc目录打包压缩成/var/back/以日期命名的tar.gz包
find /var/back -mtime +5 -exec rm -rf {} \;
[root@station230 ~]# chmod a+x back.sh

测试脚本:
date 110814002012   //修改时间
[root@station230 ~]# /root/back.sh
date 110914002012
[root@station230 ~]# /root/back.sh

[root@station230 ~]# crontab -e        //编辑计划任务,将脚本也写进去
0 4 * * * /root/back.sh &>/dev/null    //为了不在终端上输出任何信息
[root@station230 ~]# crontab -l         //查看计划任务
0 4 * * * /root/back.sh &>/dev/null
[root@station230 ~]# service crond restart


=== =anacron ====这个是“捡漏的”,就是出看每天的计划任务有没有执行,执行了就算了,没执行就按照延时时间去执行
# vim /etc/anacrontab
1             65      cron.daily              run-parts /etc/cron.daily
7             70      cron.weekly            run-parts /etc/cron.weekly
30           75      cron.monthly         run-parts /etc/cron.monthly
执行频率  延时     描述                    执行的任务

每隔10秒执行命令date
* * * * * date >/dev/pts/1
* * * * * sleep 10; date >/dev/pts/1
* * * * * sleep 20; date >/dev/pts/1
* * * * * sleep 30; date >/dev/pts/1
* * * * * sleep 40; date >/dev/pts/1
* * * * * sleep 50; date >/dev/pts/1

=======将我的笔记每天备份到/home,覆盖===
[root@station5 home]# crontab  -e
crontab: installing new crontab
1 55 20 * * * /bin/cp -rf  /root/laoshi/  /home/      //每天的早上和晚上都备份一下
2 30 09  * * * /bin/cp -rf  /root/laoshi/  /home/
[root@station5 home]# service crond restart
停止 crond:                                               [确定]
启动 crond:                                               [确定]
root@station5 home]# chkconfig  crond  on
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值