加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux下周期性的定时任务有哪些应用,如何展开设置

发布时间:2023-09-07 20:05:51 所属栏目:Linux 来源:未知
导读:   关于“linux下周期性的定时任务有哪些应用,如何进行设置”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能
  关于“linux下周期性的定时任务有哪些应用,如何进行设置”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。
 
  之前有遍文章介绍过了at这个命令,它用来设置只执行一次的定时任务。今天,和大家看看周期性执行的定时任务。工作中,周期性的定时任务会经常用到,比如系统文件的定时备份、数据库文件的定时备份、处理那些长时间没付款的订单等等。
 
  用户设置周期性计划任务crontab
 
  一般用户想要设置周期性计划任务的话,需要使用crontab这个命令。和at一样,crontab也有黑白名单,对于的配置文件分别是——/etc/cron.deny、/etc/cron.allow。
 
  当用户设置了定时任务,该任务就会以文本文件的方式记录到/var/spool/cron目录下。
 
  # ll /var/spool/cron/
 
  total 4
 
  -rw------- 1 root root 98 Jul 28 03:58 root
 
  关于crontab,我们只需要记住两个命令
 
  crontab -e 设置定时任务
 
  crontab -l 查看定时任务
 
  设置定时任务的格式如下:
 
  基本格式:分       时    日期    月份    星期    命令
 
  取值范围:[0-59]  [0-23]  [1-31]   [1-12]   [0-7]
 
  除此之外,我们还需要记几个特殊字符的含义:
 
  * 表示任意时刻都可以
 
  , 表示分隔时间段的含义
 
  - 表示连续一段时间
 
  /n 表示每隔n单位间隔
 
  下面通过几个例子来看看上面特殊字符的用法:
 
  # 每隔5分钟,执行下检测内存的脚本
 
  */n * * * * /root/script/check_memory.sh
 
  # 每个月1号凌晨5点20分,重启下服务器
 
  20 5 1 * * /usr/sbin/reboot
 
  系统的配置文件/etc/crontab、/etc/cron.d/*
 
  关于周期性的计划任务,主要对应的有三个地方的配置文件,分别是
 
  /var/spool/cron/,针对用户来设置的
 
  /etc/crontab,针对系统的计划任务
 
  /etc/cron.d/ 针对某个软件、系统的定时任务,比如针对一个网站,可能会有多个定时任务,那么建议在/etc/cron.d/目录下,新建立一个配置文件
 
  crontab -e是针对用户级别设计的,对于系统级别的周期性任务,建议写在/etc/crontal 文件中,或/etc/cron.d/目录下。
 
  下面看看/etc/crontab文件内容
 
  # cat /etc/crontab
 
  SHELL=/bin/bash
 
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
  MAILTO=root
 
  # 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
 
  # * * * * * root /usr/bin/date  >> /root/cron.txt
 
  可以看到,和crontab -e稍微有点区别,这里需要指定用户名。
 
  接下来,我们再来看看/etc/cron.d/目录下有哪些文件
 
  # ll /etc/cron.d
 
  total 8
 
  -rw-r--r--. 1 root root 128 Aug  3  2017 0hourly
 
  -rw-------  1 root root 235 Aug  3  2017 sysstat
 
  假如,服务器上有一个网站,对于该网站,我们需要定时备份数据库、网站文件,另外还需要定时处理些数据,那么,我们就可以在/etc/cron.d/目录下建立一个相关文件。我们再看看0hourly文件内容:
 
  # Run the hourly jobs
 
  SHELL=/bin/bash
 
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
  MAILTO=root
 
  01 * * * * root run-parts /etc/cron.hourly
 
  该脚本的意思是,每小时去执行/etc/cron.hourly目录下的脚本文件。
 
  估计眼尖的朋友已经发现了,除了cron.hourly目录,还有cron.daily、cron.monthly、cron.weekly目录。但是这三个目录还是有点区别的,这三个目录是anacron所执行的。这个anacron表示唤醒未执行的定时任务并执行它。举个例子,当你使用crontab -e设置了定时任务后,因为关机或其他原因,时间过了单任务并没执行,那么就只能错过就错过了,但如果将脚本放置在/etc/cron.daily/目录下,只要没有被执行,即使时间过了,它还是会被执行。
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章