第1章 定时任务----闹钟
含义:每隔相同的时间 每天 每小时 做相同的事情(命令 脚本) 备份
第2章 定时任务的分类
2.1 atd
运行一次
2.2 anacron
非7*24小时运行的服务器
2.3 crond
一般使用这个
第3章 crond分类:用户定时任务与系统定时任务
3.1 系统的定时任务
[root@dzc ~]# ls -ld /etc/cron*
drwxr-xr-x. 2 root root 4096 Aug 10 10:52 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Aug 10 10:53 /etc/cron.daily
-rw-------. 1 root root 0 Aug 24 2016 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Aug 10 10:51 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Aug 10 10:52 /etc/cron.monthly
-rw-r--r--. 1 root root 457 Sep 27 2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 27 2011 /etc/cron.weekly
3.2 用户定时任务
[root@dzc ~]# crontab -l 查看定时任务
[root@dzc ~]# crontab -e 编辑定时任务
第4章 定时任务的使用
4.1 查看定时任务是否运行?
[root@dzc ~]# ps -ef |grep crond
root 1565 1 0 Sep05 ? 00:00:00 crond
root 3898 3757 0 22:13 pts/0 00:00:00 grep --color=auto crond
[root@dzc ~]# /etc/init.d/crond status
crond (pid 1565) is running...
4.2 查看定时任务是否开机自启动
[root@dzc ~]# chkconfig |grep crond
crond 0:off 1:off 2:onn 4:on 5:on 6:off
4.3 crontab 定时任务的使用
-l查看定时任务 -e编辑定时任务 -u是用指定的用户
4.4 定时任务相关的文件
/var/spool/cron/ 定时任务的配置文件所在的位置
/var/log/cron 定时任务的日志文件
查看日志 less /var/log/cron tail /var/log/cron
/etc/cron.deny 禁止使用定时任务的用户放入这个文件中
4.5 定时任务的书写格式
4.6 定时任务中常用符号
*每 /n */10每隔10分钟
4.7 使用
#####每五分钟同步一下系统的时间
#######第一个里程碑-用什么命令
[root@oldboyedu-40 ~]# ntpdate ntp1.aliyun.com
7 Sep 10:52:44 ntpdate[33569]: step time server 182.92.12.11 offset 2286907.971444 sec
[root@oldboyedu-40 ~]#
######第二个里程碑-定时任务
[root@oldboyedu-40 ~]# crontab -l
#sync time by li 20170101
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
######第三个里程碑-检查结果
date -s "10year"
Tue Sep 7 10:56:03 CST 2027
###每天的上午7点到上午11点 每一个小时运行CMD命令
* 07-11 * * * CMD ###错误
00 07-11 * * * CMD ###OK
00 07-11/1 * * * CMD
###OK
定时任务中表示小时 每个小时 在分钟上面加上00 表示整点
4.8 定时任务的书写流程
第一个里程碑 命令行测试-把你的名字显示到文件中
第二个里程碑 把命令放入到脚本中
第三个里程碑 测试下脚本是否可用
第四个里程碑 写定时任务
第五个里程碑 检查结果
第5章 定时任务总结
- 定时任务规则之前加注释
- 使用脚本替代命令行定时任务
超过两条命令,都是用脚本 命令的集合 命令大礼包
- 定时任务脚本中的程序命令及路径尽量使用绝对路径
- 运行脚本一定要用/bin/sh或sh
统一脚本的位置 /server/scripts
- 定时任务中-命令或脚本结果(正确及错误)定向到黑洞(> /dev/null 2>&1)或追加到文件中 >>/tmp/oldboy.txt 2>&1
【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。
n 定时任务中 命令或脚本的结果没有定向到空或文件或文件中
邮件的软件没有开启----大量小文件堆积在/var/spool/postfix/maildrop/ ----inode满了
邮件软件开启了----定时任务会不断的给root用户发邮键
- 避免不必要的程序及命令输出
- 打包压缩使用相对路径 (切刀目录目标的上一级打包目标)
cd/ 进入到被打包目录的上一级目录
- 定时任务中date命令%百分号不识别 需要在%前面加上
- 系统与命令位置有关的环境变量问
每分钟显示当前系统的日期 年-月-日_小时,把这个时间追加到/tmp/date.log
###每分钟显示当前系统的日期 年-月-日_小时 ,把这个时间追加到 /tmp/date.log
#######第一个里程碑-命令行运行命令
[root@oldboyedu-40 ~]# date +%F_%H
2017-09-08_09
[root@oldboyedu-40 ~]# date +%F_%H >>/tmp/date.log
[root@oldboyedu-40 ~]# cat /tmp/date.log
2017-09-08_09
#######第二个里程碑-把命令放入到脚本中
[root@oldboyedu-40 ~]# mkdir -p /server/scripts
[root@oldboyedu-40 ~]# cat /server/scripts/date.sh
date +%F_%H >>/tmp/date.log
[root@oldboyedu-40 ~]# sh /server/scripts/date.sh
[root@oldboyedu-40 ~]# cat /tmp/date.log
2017-09-08_09
2017-09-08_09
#######第三个里程碑-定时任务
[root@oldboyedu-40 ~]# crontab -l|tail -2
#print time to a file by li 20000101
* * * * * sh /server/scripts/date.sh >/dev/null 2>&1
[root@oldboyedu-40 ~]# tail -2 /var/log/cron
Sep 8 09:51:01 oldboyedu-40 crond[8913]: (root) RELOAD (/var/spool/cron/root)
Sep 8 09:51:01 oldboyedu-40 CROND[35678]: (root) CMD (sh /server/scripts/date.sh >/dev/null 2>&1)