定时任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务相关的知识,希望对你有一定的参考价值。
定时任务的使用* * * * * command to be executed
分 时 日 月 周 需要执行的命令/脚本
0-59 0-23 1-31 1-12 0-6
-
-
-
-
- 命令 :每分钟执行一次
/10 * 命令:每隔十分钟运行一次
- 命令 :每分钟执行一次
-
-
-
定时任务书写流程
2.1 测试命令是否正确
2.2 把命令写入脚本
2.3 测试脚本是否能执行成功
2.4 把脚本写入定时任务
定时任务练习题
3.1 每5分钟同步一次系统的时间
3.1.1 第一个里程碑--命令行测试命令是否能执行成功
[[email protected] ~]# /usr/sbin/ntpdate ntp1.aliyun.com
3.1.2 第二个里程碑-- 写入定时任务
#sync time by zhao 2017
/5 * /usr/sbin/ntpdate ntp1.aliyun.com
3.1.3 第三个里程碑--检查结果
修改系统时间,查看是否会自动恢复
[[email protected] ~]# date -s "+100year"
Tue Nov 9 09:32:32 CST 2117
查看定时任务是否执行
3.2 每分钟追加oldboy到/oldboy/oldboy.txt
[[email protected] ~]# #每分钟显示系统的时间(年-月-日小时) 追加到/oldboy/time.log
3.2.1 第1个里程碑-命令
[[email protected] ~]# date +%F%H
2017-11-0910
[[email protected] ~]# date +%F%H >>/oldboy/time.log
[[email protected] ~]# cat /oldboy/time.log
2017-11-0910
3.2.2 第2个里程碑-把命令写入脚本中并运行
[[email protected] ~]# mkdir -p /server/scripts
[[email protected] ~]# cat /server/scripts/time.sh
date +%F%H
[[email protected] ~]#
[[email protected] ~]# cat /server/scripts/time.sh
date +%F_%H
[[email protected] ~]# sh /server/scripts/time.sh
2017-11-09_10
3.2.3 第三个里程碑--把脚本写入定时任务
[[email protected] ~]# crontab -l
#print time to file xx xxxxxxxx
-
-
-
-
- /bin/sh /server/scripts/time.sh
-
-
>/oldboy/time.log
[[email protected] ~]#
[[email protected] ~]# crontab -l |tail -2
#print time to file xx xxxxxxxx -
-
-
-
-
- /bin/sh /server/scripts/time.sh
-
-
-
>/oldboy/time.log
3.2.4 第4个里程碑-检查
[[email protected] ~]# tail /var/log/cron
Nov 9 11:05:01 oldboyedu42-lnb CROND[12091]: (root) CMD (/bin/sh /server/scripts/time.sh
>>/oldboy/time.log)
[[email protected] ~]# tail -f /oldboy/time.log
2017-11-09_10
2017-11-09_11
2017-11-09_11
第4章 打包备份/etc/services (每天凌晨2点) 要求每天的名字不同
4.1 第1个里程碑-命令
#tar zcf /tmp/ser.tar.gz /etc/services
#tar zcf /tmp/ser-2017-11-11.tar.gz /etc/services
#tar zcf /tmp/ser-date +%F命令的结果.tar.gz /etc/services
#tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
[[email protected] ~]# tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
tar: Removing leading `/‘ from member names
[[email protected] ~]# tar tf /tmp/ser-2017-11-09.tar.gz
etc/services
[[email protected] ~]#
4.2 第2个里程碑-创建脚本
[[email protected] ~]# cat /server/scripts/bak-ser.sh
tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
[[email protected] ~]# sh /server/scripts/bak-ser.sh
tar: Removing leading `/‘ from member names
[[email protected] ~]#
[[email protected] ~]# ll /tmp/ser-2017-11-09.tar.gz
-rw-r--r-- 1 root root 127314 Nov 9 12:19 /tmp/ser-2017-11-09.tar.gz
[[email protected] ~]# date
Thu Nov 9 12:20:20 CST 2017
4.3 第3个里程碑-写入定时任务-每分钟运行
[[email protected] ~]#
[[email protected] ~]# crontab -l
#backup /etc/services xx xxxxxxxx
-
-
-
-
- /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1
[[email protected] ~]# ll /tmp/
-rw-r--r-- 1 root root 127314 Nov 9 12:28 ser-2017-11-09.tar.gz
[[email protected] ~]# date
Thu Nov 9 12:28:11 CST 2017
[[email protected] ~]#
[[email protected] ~]# tail /var/log/cron
Nov 9 12:27:01 oldboyedu42-lnb CROND[35602]: (root) CMD (/bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1 )
Nov 9 12:28:02 oldboyedu42-lnb CROND[35610]: (root) CMD (/bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1 )
4.4 第4个里程碑-修改定时时间
[[email protected] ~]# crontab -l|tail -2
#backup /etc/services xx xxxxxxxx
00 02 * /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1
- /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1
-
-
-
9句箴言
5.1 定时任务规则之前加注释
5.2 使用脚本代替命令行任务(超过两条命令都是用脚本)
5.3 定时任务中date命令%百分号
5.4 运行脚本一定要用/bin/sh或sh
5.5 定时任务中-命令或脚本结果(正确或错误)定向到黑洞或追加到文件
5.6 避免不必要的程序及命令输出
5.7 打包压缩使用相对路径
5.8 定时任务脚本中的程序命令/文件 尽量使用绝对路径
5.9 系统与命令位置有关的环境变量问题
第6章 【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1
6.1 定时任务中-命令或脚本结果(正确及错误)定向到黑洞(>/dev/null 2>&1)
##定向到 >dev/null 2>&1 ==== >dev/null 2>/dev/null
##追加到文件 >>/tmp/oldboy.txt 2>&1
2>&1 很容易导致硬盘inode空间被沾满,从而系统服务不正常
定时任务中 命令脚本的结果 没有定向到空或文件中
6.2 邮件软件配置文件 /etc/init.d/postfix status 查看是否运行
6.3 .邮件的软件没有开启---大量小文键堆积在/var/spool/postfix/maildroop--导致inode满了
6.4 邮件软件开启了-----定时任务会不断的给root用户发邮件
以上是关于定时任务的主要内容,如果未能解决你的问题,请参考以下文章