近来由于要给陌陌小程序写一个定时发送订阅消息恳求,就写了如下php脚本实现定时发送。了解crond
官方文档:
(1).crond是一个daemon类程序,路径为/usr/sbin/crond。默认会以后台形式启动,service或systemd形式启动crond默认也是后台形式的。
(2).crondtab是管理crontabfile的工具linux 定时执行脚本,而crontabfile是定义定时任务条目的文件。
(3).crontabfile存在于多处,包括系统定时任务文件/etc/crontab和/etc/cron.d/*,还有独属于各用户的任务文件/var/spool/cron/USERNAME
安装crond
yum install vixie-cron #安装
yum install crontabs
安装vixie-cron包时显示没有这个包,两个办法:
yum update
//或者
yum search vixie-cron
#找到匹配项后再安装提示的文件(我这里是cronie.x86_64)
yum install cronie.x86_64
crond命令
[root@xuexi ~]# systemctl start crond.service
[root@xuexi ~]# service crond start
[root@xuexi ~]# crond
使用如上的三个命令都可以打开,并且实际上系统可能会返回:
[root@jdyjy ~]# service crond start
Redirecting to /bin/systemctl start crond.service
指定你要用
/bin/systemctlstartcrond.service
那你就用这个好了
你也可以无视忽视这个提示。由于不影响。
/bin/systemctl stop crond.service //停止
/bin/systemctl start crond.service //启动
/bin/systemctl restart crond.service //重启
/bin/systemctl status crond.service //查看目前crond运行状态
crond编辑任务
因为任务表存在于多处,不同的教程用的不同的任务文件linux操作系统,所以不要重复编辑,只要一个就好了。
crond -e:编辑定时任务文件,实际上编辑的是/var/spool/cron/*文件
#或者
nano /etc/crontab #编辑配置文件,在最后一行添加内容
使用你喜欢的编辑器vi,vim都可以。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/local/php/bin:/usr/loc$
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
# */1 * * * * root /usr/glaucoma/hello.sh >> /usr/glaucoma/sh.txt
*/1 * * * * root /usr/local/bin/php /usr/glau/Dyns.php
#* * * * * root /bin/echo "the first cron entry" >>/usr/hellotestcrond.txt
crontab格式:
基本格式:
分钟小时日月礼拜命令
* * * * * command
第1列表示分钟1~59每分钟用*或则*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标示号礼拜0~6(0表示礼拜天)
第6列要运行的命令
记住几个特殊符号的涵义:
“”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
时间是5个号组成,不过小的时间符会掩藏大的时间符。
关于具体时间设置可以查看以下:
另外一个须要注意的时间段设置是,使用号造成低级别的时间覆盖高级别的时间。诸如"*/2**“,它不表示每两小时执行一次任务,而是每分钟执行一次,虽然在小时位上设置了每隔两小时,但在分钟位上设置的是每分钟,所以它一直表示每分钟执行一次任务。同理linux 定时执行脚本linux运维招聘,”/5*/2***"分钟位上的设置覆盖小时位上的设置,表示每5分钟执行一次而忽视小时位的设置;"00*/2*/5**"表示每隔两小时的整点执行一次任务而忽视天数位的设置。
指令一定要讲到它的指令路径。我们一般会直接php一个脚本,并且这儿的指令和执行的文件二者都要写绝对路径。
/usr/local/bin/php /usr/glau/Dyns.php
你也可以先调试,调试的方式在官方文档中会有。
教程好多写的总有疏失,所以建议先看官方文档。