Linux:crontab命令学习


 

         之前听说过这个命令,但没有研究过;最近因为业务需要,要做系统自动定时执行脚本任务,于是进行了以下测试:

1.crontab基础知识

[root@rac2 sbin]# service crond start ---查看crontab服务是否启动
Starting crond: cannot start crond: crond is already runnin[FAILED]
[root@rac2 sbin]# ps -ef|grep crond ---查看crontab进程
root      2959     1  0 21:47 ?        00:00:00 crond
root      3509  3457  0 21:51 pts/1    00:00:00 grep crond
[root@rac2 sbin]# crontab --help ---查看使用帮助
crontab: invalid option -- -
crontab: usage error: unrecognized option
usage:    crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]
        (default operation is replace, per 1003.2)
    -e    (edit user's crontab)
    -l    (list user's crontab)
    -r    (delete user's crontab)
    -i    (prompt before deleting user's crontab)
    -s    (selinux context)
[root@rac2 sbin]# crontab -u root -l ---查看root用户当前是否有自动执行计划
no crontab for root
[root@rac2 sbin]# crontab -l
no crontab for root

 

2.编写一个自己的自动定时执行计划

[root@rac2 sbin]# crontab -e
no crontab for root - using an empty one
crontab: no changes made to crontab

 看别人这样就可以进入vi界面编写计划,我编写后,但提示  no changes made to crontab。

[root@rac2 sbin]# crontab -l
no crontab for root

查看一下,依然还是没有。应该是编辑失败了,不知道为什么?

 

突然想到,可以这样试试:

[root@rac2 sbin]# crontab -u root -e
no crontab for root - using an empty one
crontab: installing new crontab

在弹出的vi界面 编写了:* */1 * * * echo "Have a good dream" >> /tmp/test.txt 

-------意思是每各一分钟,向 /tmp/test.txt 文件里面插入一条“Have a good dream” 信息。

-------注:/tmp/test.txt 这个test.txt 是会自动生成的。

这次提示:crontab: installing new crontab,应该是ok了。

[root@rac2 sbin]# crontab -l

* */1 * * * echo "Have a good dream" >> /tmp/test.txt 
[root@rac2 sbin]# 

自动定时脚本编辑成功了。

 

检查一下/tmp/test.txt,执行结果也正确。

[root@rac2 ~]# cd /tmp
[root@rac2 tmp]# ls
gconfd-root     keyring-NcCgMA  keyring-YCitrn  virtual-root.2D8HSv  virtual-root.i8tzq0
keyring-fbdP86  keyring-UJUfuW  mapping-root    virtual-root.DKtizo  virtual-root.ppMHJx
keyring-jq9tuZ  keyring-WoIlNb  test.txt        virtual-root.GQc6wM  virtual-root.vDHQoi
[root@rac2 tmp]# tail -f test.txt
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream

 

3.crontab语法介绍

      /etc/crontab文件语法如下:

      Minute     Hour   Day    Month  Dayofweek      command
      分钟         小时     天        月         天每星期           命令

每个字段代表的含义如下:
• Minute             每个小时的第几分钟执行该任务
• Hour               每天的第几个小时执行该任务
• Day                 每月的第几天执行该任务
• Month             每年的第几个月执行该任务
• DayOfWeek     每周的第几天执行该任务
• Command       指定要执行的程序

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
同时,cron支持类似正则表达式的书写,支持如下几个特殊符号定义:

• "*"代表取值范围内的数字,
• "/"代表"每",
• "-"代表从某个数字到某个数字,
• ","分开几个离散的数字

 

例子:

0       6       *          *     *    echo "Good morning." >> /tmp/test.txt     每天早上6点 
5       *       *          *     *     ls             指定每小时的第5分钟执行一次ls命令
30     5       *          *     *     ls             指定每天的 5:30 执行ls命令
30     7       8          *     *     ls             指定每月8号的7:30分执行ls命令
 
 
30 3 * * 1,4,7 reboot   每周的1,4,7的凌晨3点半重启服务器  

17 5 * * 0 /etc/cleanup > /dev/null   每周星期日5:17清除系统上的某些日志文件

0 2 * 1 * rm -rf /usr/userbk*.log   每月1日2:00删除/usr/userbk下的日志文件

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM