博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crontab计划任务无法执行(小结)
阅读量:6149 次
发布时间:2019-06-21

本文共 1406 字,大约阅读时间需要 4 分钟。

最近在与朋友梳理运维中遇到的坑的时候,发现大家都遇见过crontab计划任务没法正常执行的情况,如是简单的整理下,主要有如下几种情况:

1、环境变量是否定义

说明:crontab执行shell时,只能识别为数不多的环境变量,所有在脚本中最好使用export重新声明下该变量

说明:shell脚本rman备份oracle,直接执行脚本中的命令,可以备份,但写到脚本并放入crontab中,计划任务就无法执行(后来在脚本中source环境变量),再次执行就OK了

2、脚本是否有可执行权限

说明:对于shell脚本,如果没有可执行权限的话,最好能够使用/bin/sh 脚本绝对路径

3、crontab中无法执行php的解决方法

1
2
3
4
*
/5 
* * * * 
/usr/local/php/bin/php 
/shells/cron/delete_redis
.php >
/dev/null 
2>&1
检查发现,php并没有正常执行,可能是因为php中没配置绝对路径
解决方法:
*
/5 
* * * * 
cd 
/var/www/cron 
&& 
/usr/local/php/bin/php 
/shells/cron/delete_redis
.php >
/dev/null 
2>&1

4、crontab下防止脚本运行冲突

CentOS6下(使用lockf或者flock):

1
2
3
4
5
*
/10 
* * * *   (
/usr/bin/lockf  
-s -t 0  
/tmp/test
.lock    
/usr/local/php/bin/php 
test
.php >
/dev/null 
2>&1)
lockf下参数说明:
-k: 一直等待获取文件锁
-s:不发出任何信息,即使拿不到文件锁
-t seconds:设定timeout超时时间是seconds秒,如果超过时间,则自动放弃

CentOS7下(使用flock)

1
2
3
4
5
6
7
8
9
10
11
12
*
/10 
* * * * root flock -xn 
/tmp/mytest
.lock -c 
'cd /var/www/cron && /usr/local/php/bin/php /shells/cron/delete_redis.php'
>
/dev/null 
2>&1
这样当任务未执行完成,下一任务判断到
/tmp/mytest
.lock被锁定,则结束当前的任务,下一周期再判断。
flock参数说明:
-s, --shared:    获得一个共享锁
-x, --exclusive: 获得一个独占锁
-u, --unlock:    移除一个锁,通常是不需要的,脚本执行完会自动丢弃锁
-n, --nonblock:  如果没有立即获得锁,直接失败而不是等待
-w, --timeout:   如果没有立即获得锁,等待指定时间
-o, --close:     在运行命令前关闭文件的描述符号。用于如果命令产生子进程时会不受锁的管控
-c, --
command
:   在shell中运行一个单独的命令
-h, --help       显示帮助
-V, --version:   显示版本
本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1924382,如需转载请自行联系原作者
你可能感兴趣的文章
直播视频流技术名词
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
php小知识
查看>>
Windows下安装、运行Lua
查看>>
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(二)
查看>>