Linux定时任务crontab

Posted 追风逐月

tags:

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

 crontab命令,用于设置周期性被执行的指令。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。[ps -ef|grep cron]

  1、创建crontab文件

    在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。编辑$HOME目录下的.profile文件,在其中加入这样一行:
       EDITOR=vi; export EDITOR    然后保存并退出。
      注: 不妨创建一个名为<user>cron的文件,其中<user>是用户名,为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:
        crontab davecron
   现在该文件已经提交给cron进程,同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即,dave)。

  2、编辑crontab文件

    crontab -e

    可以像使用vi编辑其他任何文件那样修改crontab文件并退出。

  3、删除crontab文件

    crontab -r

  4、cron服务
    cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
    service crond start    //启动服务
    service crond stop     //关闭服务
    service crond restart  //重启服务
    service crond reload   //重新载入配置
    service crond status   //查看服务状态 

  5、一个cron脚本

    0 */2 * * * /bin/bash -l -c ‘. ~/.bashrc; pm2 restart idsp-wxqy>> /tmp/cron.log 2>&1‘
    每两个小时执行 pm2 restart idsp-wxqy 命令,并把执行日志写入cron.log文件
 
   minute hour day month dayofweek command
      minute - 从0到59的整数 
      hour - 从0到23的整数 
      day - 从1到31的整数 (必须是指定月份的有效日期)
      month - 从1到12的整数 (或如Jan或Feb简写的月份)
      dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
      command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 
 
  例子:
  每天早上6点 
  0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

  每两个小时 
  0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

  晚上11点到早上8点之间每两个小时和早上八点 
  0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

  每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
  0 11 4 * 1-3 command line

  1月1日早上4点 
  0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ 

  每小时执行/etc/cron.hourly内的脚本
  01 * * * * root run-parts /etc/cron.hourly
  每天执行/etc/cron.daily内的脚本
  02 4 * * * root run-parts /etc/cron.daily 

  每星期执行/etc/cron.weekly内的脚本
  22 4 * * 0 root run-parts /etc/cron.weekly 

  每月去执行/etc/cron.monthly内的脚本 
  42 4 1 * * root run-parts /etc/cron.monthly 

  注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。   

  每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 
  5,15,25,35,45,55 16,17,18 * * * command

  每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
  00 15 * * 1,3,5 shutdown -r +5

  每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 
  10,40 * * * * innd/bbslink 

  每小时的1分执行用户目录下的bin/account这个指令: 
  1 * * * * bin/account

  每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 
  20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

  每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。 
  12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt 
 
 

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

linux定时任务

Linux系统计划任务之系统定时重启任务

Linux Crontab命令定时任务基本语法

Linux命令crontab定时任务

linux定时任务每天的0点执行一次,怎么写

Linux crontab 定时任务命令详解