本文共 1423 字,大约阅读时间需要 4 分钟。
Crontab
Crontab是一个Unix/Linux系统下的常用定时执行任务
安装Crontab
yum install vixie-cron crontabs //vixie-cron软件包为cron的主程序,crontabs是用来安装、卸载、列举进程表格的程序
chkcofig crond on //开机自启动
service crond start //启动
添加crontab定时任务
crontab -e //打开crontab文件,会默认以vi方式打开
格式 | Minute | Hour | Dayofmonth | Month | Dayofweek | Command |
注释 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
取值范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7(0和7都代表周日) |
|
常用符号
符号 | 注释 |
* | 所有有效的值 |
, | 分割开设定多个值 |
- | 一段时间范围 |
/n | 隔n长时间 |
eg:*/3 9-17 1,15,25 * * command //每个月的1、15、15号的9点至17点每隔3分钟执行一次command命令
查看crontab定时任务
crontab -l
flock锁
为防止上次脚本没有执行完,下个脚本重复执行可以使用flock锁防止进程冲突
使用方法,创建crontab定时任务时,指定flock,eg:
*/1 * * * * flock -xw 10 command //每一分钟执行一次command,如果上次任务没有完成等待10s后重试
flock常用参数:-h,--help
-s,--shared 获取一个共享锁
-x,--exclusive 获取一个独占锁
-n,--nonblock 没有立即获得锁,直接失败
-w,--timeout 没有立即获得锁,等待指定时间,单位为秒
-c,--command 在shell中运行一个单独的命令
命令案例详解
命令1:(不加锁/加锁 绝对路径)
* * * * * /bin/php /home/run.php >> /home/run.log 2>&1
* * * * * flock -xn /tmp/run.lock -c '/bin/php /home/run.php >> /home/run.log 2>&1'
注释: /temp/run.lock 用于判断文件是否已加锁,一般命名为: filename.lock
/bin/php php可执行文件的位置
/home/run.php 要执行的php文件的具体位置,文件名为filename.php
>> 表示将运行php文件的输出以追加的方式进行重定向
/home/run.log 执行脚本产生的日志文件的位置,一般命名为filename.log
(同一条命令中最好保持filename相同)
标准输入stdin 、标准输出stdout 、 标准错误stderr,对应的系统文件的文件描述符为0、1、2
& 等同与,2>&1 表示标准错误重定向到标准输出中
命令2:(不加锁/加锁 相对路径)
* * * * * cd /home; /bin/php run.php >> ./run.log 2>&1
* * * * * cd /home; flock -xn /tmp/run.lock -c '/bin/php run.php >> ./run.log 2>&1'
Crontab任务不执行
转载地址:https://blog.csdn.net/meng_dream_fly/article/details/101463229 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!