Linux命令下crontab命令

 更新时间:2016年11月15日 09:17:57   作者:Chentf  
crontab是一个用来设置、删除或显示供守护进程cron执行的定时任务的命令。下面给大家介绍linux命令下crontab命令,需要的朋友一起看看吧

crontab是一个用来设置、删除或显示供守护进程cron执行的定时任务的命令。每一个用户都可以拥有属于自己的定时任务,定时任务文件默认以用户名命名,并放在/var/spool/cron目录,该目录普通用户无访问权限。

  可以通过cron.allow 和 cron.deny文件管理用户使用crontab的权限。如果cron.allow存在,用户必须列在其中才会被允许使用cron;如果cron.deny存在,被列在其中的用户禁止使用cron;如果两者都不存在,只有超级用户才能使用cron。在CentOS中,这两个文件放在/etc中,默认只存在cron.deny文件,且为空。这就表示在CentOS中,默认所有的用户均有cron的使用权限。

1. 命令格式

  crontab [-u user] file
  crontab [-u user] [-l | -r | -e] [-i] [-s]
  crontab -n [ hostname ]
  crontab -c

2. 命令功能

  为个人用户维护定时任务文件

3. 命令选项

  -u user

    编辑某个用户的cron,只用root可以使用此参数为别的用户设置cron服务。也可用于给用户指定crontab文件。

  -l

    列出当前用户的crontab。

  -r

    删除当前用户的crontab。

  -e

    编辑当前用户的crontab,默认使用vi,或者是由 VISUAL或EDITOR环境变量指定的编辑器。

  -i

    与-r一起使用,用来询问用户是否直接删除crontab。

4. 实例

  实例1:列出当前用户的定时任务

[22:30:17][dodmaster@mha3 ~]$ crontab -l
0 1 * * 1 $HOME/.DailyShell/hislogclear.sh
0 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/voice
20 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/data/
40 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/sms/

  实例2:root用户编辑用户martin的定时任务

[22:30:17][root@mha3 ~]# crontab -u martin -e

  实例3:为用户martin指定定时任务文件

[22:30:17][root@mha3 ~]# crontab -u martin martincron

5. cron文件语法

  首先,我们打开/etc/crontab文件,我们将会看到如下内容:

[20:40:30][dodmaster@mha3 etc]$ cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

  该文件是存放系统执行的定时计划,其中前四行用于设置cron服务运行的环境变量:SHELL、PATH、HOME分别指定了cron服务运行时的SHELL环境变量、PATH环境变量和HOME环境变量,这里不再赘述。MAILTO则表示cron运行的任务输出以电子邮件的形式发送到指定用户,如果该变量的值为空,则不会发送邮件。余下几行的内容说明了系统定时任务的具体书写格式。

       1)星号(*)表示取值范围内的所有值。例如,*在hour的位置,表示每小时执行一次。

  2)连字符(-)表示一个范围。例如,8-12表示8、9、10、11、12。

  3)逗号(,)表示分割指定的数值。例如:3,5-7,9表示3,5,6,7,9。

  4)正斜杠(/)表示步进值。例如,分钟的位置为*/5,表示每五分钟执行一次。

  除了root用户以外的所有用户定义的crontab计划任务都存放在/var/spool/cron目录,通过crontab -e命令编辑,格式与/etc/crontab相同,可以不用指定user-name。

  cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的所有文件,并依此执行。

6. 实例

  实例1:每周末的凌晨一点钟执行一次系统的raid-check

0 1 * * Sun root /usr/sbin/raid-check 

实例2:每天的4:02am分root用户执行/etc/cron.daily目录下的所有脚本,run-parts参数表示执行后面目录中的所有脚本。

02 4 * * * root run-parts /etc/cron.daily 

实例3:每天的8-18每四小时,dodmaster用户执行hislogclear.sh脚本,即8:44,12:44,16:44,20:44四个时间点,会执行该脚本。

[21:57:56][dodmaster@mha3 ~]$ crontab -l
44 8-20/4 * * * $HOME/.DailyShell/hislogclear.sh
  实例4:每五分钟执行一次(两种写法)

*/5 * * * * echo "every five minute to do it" >> time.txt
5 * * * * echo "every five minute to do it" >> time.txt  

实例5:每个工作日下午八点执行

0 20 * * 1-5 echo "every workday 20:00 to do it" >> time.txt 

实例6:每分钟的30秒时执行,因为cron服务是每分钟被唤醒一次,所以要执行精确到秒的任务需要借助sleep命令。

* * * * * sleep 30; echo "every minute 30 second to do it" >> time.txt
  实例7:每20秒执行一次,即表示在每分钟的0秒、20秒、40秒各执行一次(也可以是其他的步长是20秒的值,例如:5s、25s、45s)

* * * * * echo "every 20 second to do it" >> time.txt
* * * * * sleep 20; echo "every 20 second to do it" >> time.txt
* * * * * sleep 40; echo "every 20 second to do it" >> time.txt

以上所述是小编给大家介绍的Linux命令下crontab命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Centos8下django项目部署 nginx+uwsgi的教程

    Centos8下django项目部署 nginx+uwsgi的教程

    这篇文章主要介绍了Centos8下django项目部署 nginx+uwsgi的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Apache访问出现501 Method Not Implemented错误解决

    Apache访问出现501 Method Not Implemented错误解决

    这篇文章主要介绍了Apache访问出现501 Method Not Implemented错误解决,有些导致该错误的情况可以用文中修改配置文件的方法来解决,需要的朋友可以参考下
    2015-07-07
  • Apache POI案例代码详解

    Apache POI案例代码详解

    Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作,本文介绍Apache POI案例代码,感兴趣的朋友一起看看吧
    2024-04-04
  • Ubuntu linux 安装 PHP5.3.0的命令

    Ubuntu linux 安装 PHP5.3.0的命令

    5.3.0 的正式版已经发布有段时间了,看到脚本之家上面有个windows下的安装php5.3的教程,所以想起写一个关于linux的PHP5.3的安装教程。
    2009-09-09
  • CentOS7 配置Nginx支持HTTPS访问的实现方案

    CentOS7 配置Nginx支持HTTPS访问的实现方案

    这篇文章主要介绍了CentOS7 配置Nginx支持HTTPS访问的实现方案的相关资料,这里实现该功能的步骤进行了详解,需要的朋友可以参考下
    2016-11-11
  • 详解Xampp和wordpress在Centos7上的搭建与使用

    详解Xampp和wordpress在Centos7上的搭建与使用

    通过实例给大家详细分析了Xampp和wordpress在Centos7上的搭建与使用,对此有需要的朋友可以学习下。
    2018-02-02
  • Centos8(最小化安装)全新安装Python3.8+pip的方法教程

    Centos8(最小化安装)全新安装Python3.8+pip的方法教程

    这篇文章主要介绍了Centos8(最小化安装)全新安装Python3.8+pip的方法教程,本文给大家整理了一份命令,需要的朋友可以参考下
    2020-02-02
  • Linux系统重启后MySQL数据丢失问题的解决步骤

    Linux系统重启后MySQL数据丢失问题的解决步骤

    今天分享一个在Linux系统中经常遇到的问题:系统重启后发现MySQL无法启动,而且数据似乎丢失了,这个问题可能会让人惊慌失措,但别担心,通常情况下这只是因为数据盘没有正确挂载导致的,现在我们将深入探讨这个问题的原因、解决方法以及如何预防它的再次发生
    2024-09-09
  • Ubuntu20.04安装Python3的虚拟环境教程详解

    Ubuntu20.04安装Python3的虚拟环境教程详解

    这篇文章主要介绍了Ubuntu20.04安装Python3的虚拟环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 详解Linux下出现permission denied的解决办法

    详解Linux下出现permission denied的解决办法

    这篇文章主要介绍了详解Linux下出现permission denied的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论