定时任务crontab命令详解

Posted xiaodong0802

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务crontab命令详解相关的知识,希望对你有一定的参考价值。

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

 rpm -qa cronie  查询是否安装了定时任务软件,定时任务的软件名为cronie

 rpm -ql cronie  查看软件包里面的内容

 /etc/init.d/crond status  查看crond是否运行

每五分钟同步一下系统的时间
###第1个里程碑-命令
[root@oldboyedu01-nb oldboy]# ntpdate ntp1.aliyun.com
15 Jan 15:25:02 ntpdate[7921]: adjust time server 182.92.12.11 offset -0.007840 sec
[root@oldboyedu01-nb oldboy]# /usr/sbin/ntpdate ntp1.aliyun.com
15 Jan 15:25:51 ntpdate[7922]: adjust time server 182.92.12.11 offset 0.003084 sec
###第2个里程碑-写入定时任务
[root@oldboyedu01-nb oldboy]#
[root@oldboyedu01-nb oldboy]# crontab -l
#sync time by lee at 20171212
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
[root@oldboyedu01-nb oldboy]#
###第3个里程碑-检查
#1)看日志
[root@oldboyedu01-nb oldboy]# tail -f /var/log/cron
Jan 15 15:30:01 oldboyedu01-nb CROND[7945]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)
Jan 15 15:30:02 oldboyedu01-nb CROND[7955]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)
#2)看结果
[root@oldboyedu01-nb ~]# date -s "1year"
Tue Jan 15 15:29:28 CST 2019
[root@oldboyedu01-nb ~]# date
Mon Jan 15 15:30:33 CST 2018

You have new mail in /var/spool/mail/root

每天的上午7点到上午11点 每一个小时运行CMD命令
* 07-11 * * * CMD #每分钟运行CMD

00 07-11 * * * CMD #每个小时运行CMD

[root@oldboyedu01-nb oldboy]# #~每分钟把自己的名字 追加到 /oldboy/oldboy.txt
##1.命令
[root@oldboyedu01-nb oldboy]# echo oldboy >>/oldboy/oldboy.txt
[root@oldboyedu01-nb oldboy]# tail /oldboy/oldboy.txt
oldboy
##2.定时任务
[root@oldboyedu01-nb oldboy]# crontab -l
[root@oldboyedu01-nb oldboy]# crontab -l|tail -2
#print name to file by lee at 20171212
* * * * * echo oldboy >>/oldboy/oldboy.txt
#3.检查
##1)日志

tail -f /var/log/cron
Jan 15 15:49:01 oldboyedu01-nb CROND[8054]: (root) CMD (echo oldboy >>/oldboy/oldboy.txt)

##2)结果
[root@oldboyedu01-nb ~]# tail -f /oldboy/oldboy.txt
oldboy

0 07-11 * * *

oldboy

每分钟显示当前系统的时间(年-月-日)追加到/tmp/time.log中
##1.命令
[root@oldboyedu01-nb oldboy]# date +%F
2018-01-15
##2.脚本
[root@oldboyedu01-nb oldboy]# mkdir -p /server/scripts
[root@oldboyedu01-nb oldboy]# cat /server/scripts/date.sh
date +%F
[root@oldboyedu01-nb oldboy]# sh /server/scripts/date.sh
2018-01-15
[root@oldboyedu01-nb oldboy]# sh /server/scripts/date.sh >>/tmp/date.log
[root@oldboyedu01-nb oldboy]# cat /tmp/date.log
2018-01-15
##3.脚本写入定时任务
[root@oldboyedu01-nb oldboy]# crontab -e
#print date to file by lee at 20171212
* * * * * /bin/sh /server/scripts/date.sh >>/tmp/date.log
##4.检查
[root@oldboyedu01-nb oldboy]# tail -f /var/log/cron
Jan 15 16:24:01 oldboyedu01-nb CROND[8330]: (root) CMD (/bin/sh /server/scripts/date.sh >>/tmp/date.log)

[root@oldboyedu01-nb ~]# tail -f /tmp/date.log
2018-01-15

05.定时任务中-命令或脚本结果(正确及错误)定向到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/oldboy.txt 2>&1

#sync time by lee at 20171212
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

#print name to file by lee at 20171212
#* * * * * echo oldboy >>/oldboy/oldboy.txt 2>&1

#print date to file by lee at 20171212
#* * * * * /bin/sh /server/scripts/date.sh >>/tmp/date.log 2>&1
* * * * * date +\%F >>/tmp/date.log 2>&1

>/dev/null 2>&1 === >/dev/null 2>/dev/null

故障案例
【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。

###定时任务中 命令或脚本的结果 没有定向到空或文件中
#2.邮件软件开启了---------定时任务会不断的给root用户发邮件
#you have new mail in /var/spool/mail/root
You have new mail in /var/spool/mail/root

#1.邮件的软件没有开启------大量小文件堆积在/var/spool/postfix/maildrop/ ---inode满了

[root@oldboyedu01-nb oldboy]# /etc/init.d/postfix stop
Shutting down postfix: [ OK ]
[root@oldboyedu01-nb oldboy]# chkconfig postfix
[root@oldboyedu01-nb oldboy]# chkconfig postfix off
[root@oldboyedu01-nb oldboy]# chkconfig |grep postfix
postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@oldboyedu01-nb oldboy]# ll /var/spool/postfix/maildrop/
total 0

#每分钟显示当前系统的时间年-月-日_周 和当前系统的ip地址,追加到/tmp/ip.log中
http://oldboy.blog.51cto.com/2561410/1410555
linux定时任务生产java服务无法执行问题群友案例
http://oldboy.blog.51cto.com/2561410/1541515

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:~/bin

定时任务书写流程

1.开始

2.命令行检查

3.编写脚本

4.测试脚本

5.编写crontab

6.测试

7.完成

以上是关于定时任务crontab命令详解的主要内容,如果未能解决你的问题,请参考以下文章

定时任务crontab命令详解

Linux定时任务Crontab命令详解_转

Linux下的crontab定时执行任务命令详解

Linux定时任务Crontab命令详解

定时任务 Crontab命令 详解

Linux定时任务Crontab命令详解