php 周期任务,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/目录下,只要没有被执行,即使时间过了,它还是会被执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值