Linux下定时命令crontab的说明使用

时间:2022-11-18 08:01:44

一、crontab 介绍

   crontab命令的功能是在一定的时间间隔调度一些命令的执行。

linux任务调度的工作主要分为以下两类: 
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存。
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。


二、/etc/crontab 文件

在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。尽量不要直接加在/etc/crontab里面。

每个用户都会生成一个自己的crontab 文件。这些文件在/var/spool/cron目录下,我们直接查看这个文件,里面的内容和对应用户显示的crontab -l 一致。


三、Crontab 使用说明

1、Crontab语法:

usage:  crontab [-u user] file

        crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2)

        -e      (edit user's crontab):编辑用户的Crontab文件,没有就会新建

        -l      (list user's crontab):显示用户的Crontab文件的内容 

        -r      (delete user's crontab):从Crontab目录中删除用户的Crontab文件 

        -i      (prompt before deleting user's crontab):删除用户的Crontab文件前给提示 


例子:

crontab -e

第一次执行会显示:no crontab for *** - using an empty one,然后就可以自己编辑了。


crontab -l

显示:30 3 * * *  cd /usr/local/shell/;sh mysql_backup.sh


2、Crontab 格式说明:

用crontab -e 添加要执行的命令。

添加的命令必须以如下格式:

* * * * * /command path

前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

前5个字段分别表示:

       分钟:0-59

       小时:0-23

       日期:1-31

       月份:1-12

       星期:0-6(0表示周日)

还可以用一些特殊符号:

    * : 表示任何时刻

    , : 表示分割

  - :表示一个段,如第二端里: 1-5,就表示1到5点

    /n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。


例子:

crontab -e

*/1 * * * * /usr/bin/curl http://www.***.cn/

表示每分钟请求一次url对应的页面。


crontab -e

01 01 * * * /usr/***/php/bin/php /opt/webroot/index.php

表示每天1点1分执行路径下的index.php页面


crontab -e

0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 


crontab -e

50 7 * * * /sbin/service sshd start  意思是每天7:50开启ssh服务 


crontab -e

50 22 * * * /sbin/service sshd stop  意思是每天22:50关闭ssh服务  


crontab -e

0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 


crontab -e

1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件  


crontab -e

00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。 


crontab -e

30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30执行一次ls命令