form1.cn
Make a little progress every day

Linux中crontab系统定时任务配置方法

30th of August 2017 Linux Command 2524

1、crond服务管理与访问控制

service crond restart#启动cron服务
chkconfig crond on#开启cron自启动
注:ubuntu为cron没有d如下:
service cron restart


2、用户的crontab设置

crontab [选项]
选项:
    -e:编辑crontab定时任务
    -l:查询crontab任务
    -r:删除当前用户所有的crontab任务
例子:
crontab -e#进入crontab编辑界面。会打开vim编辑你的工作。
格式:*     执行的任务


五个星号的含义:

项目含义范围
第一个“*”一小时当中的第几分钟0-59
第二个“*”一天当中的第几小时0-23
第三个“*”一个月当中的第几天1-31
第四个“*”一年当中的第几月1-12
第五个“*”一周当中的星期几0-7(0和7都代表星期日)


特殊符号含义

*代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
,代表不连续的时间。比如“0 8,12,16    命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
-代表连续的时间范围。比如“0 5   1-6 命令”,代表在周一到周六的凌晨5点0分执行命令
*/n代表每隔多久执行一次。比如“*/10     命令”,代表每隔10分钟就执行一遍命令


例子:

时间含义
45 22    命令在每天的22点45分执行命令
0 17   1 命令每周1的17点0分执行命令
0 5 1,15   命令每月1号和15号的凌晨5点0分执行命令
40 4   1-5 命令每周一到周五的凌晨4点40分执行命令
*/10 4    命令每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15  1 命令每月1号和15号,每周1的0点0分都会执行命令。或的关系。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。


例子:

*/5     /bin/echo "11" >> /tmp/test
5 5   2 /sbin/shutdown or now
0 5 1,10,15   /root/sh/autobak.sh


创建编辑autobak.sh文件:

#!/bin/bash
date=$(date +\%y\%m\%d)
size=$(du -sh /etc)
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Date size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf etc_$date.tar.gz /etc /tmp/dbbak/dbinfo.txt &>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt

这个脚本里注意一点:date命令里的百分号前必须有转义符,因为百分号在cron里有特殊含义,所以必须取消这种特殊含义。


比如你可以这样

* * * * * /usr/bin/curl -o temp.txt http://127.0.0.1/nh/index.php/Plan/addLevel


Larabel定时任务:

* * * * *   /usr/local/php/bin/php /datafile/test_douliao_api/artisan schedule:run >> /datafile/crontab.log 2>&1