定时任务

第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章 定时任务总结

  1. 定时任务规则之前加注释
  2. 使用脚本替代命令行定时任务

超过两条命令,都是用脚本     命令的集合 命令大礼包

  1. 定时任务脚本中的程序命令及路径尽量使用绝对路径
  2. 运行脚本一定要用/bin/sh或sh

统一脚本的位置 /server/scripts

  1. 定时任务中-命令或脚本结果(正确及错误)定向到黑洞(> /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用户发邮键

  1. 避免不必要的程序及命令输出
  2. 打包压缩使用相对路径 (切刀目录目标的上一级打包目标)

  cd/ 进入到被打包目录的上一级目录

  1. 定时任务中date命令%百分号不识别 需要在%前面加上\
  2. 系统与命令位置有关的环境变量问

 

 

 

每分钟显示当前系统的日期 年-月-日_小时,把这个时间追加到/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)

 

 

 

posted @ 2017-11-30 17:06  巴黎斜塔  阅读(153)  评论(0编辑  收藏  举报