关于linux定时任务crontab不能执行等的一些问题

crontab是linux下实现定时任务的命令,但是他还是有很多坑需要我们注意,这里列举一些,如果遇到新的会再更新。
1.shell脚本能单独运行,但是计划任务里面无法运行
这种问题往往是环境变量的问题,就是你所执行的命令没有明确一些环境变量。建议的解决办法:
(1)在所写脚本上加入环境变量,如下:

export PATH=/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/home/x/bin:/usr/bin
1
或者加入这句话

source ~/.bash_profile
1
(2)将所有的涉及到文件夹的都用绝对地址而不用相对地址
虽然上面导入了环境变量,但是还是建议写完整的绝对地址,比如python,写成/usr/bin/python。特别是有写入文件的情况,比如原来的shell脚本本来是

python 1.py >> 1.txt
1
一定要写成这样

/usr/bin/python /home/1.py >> /home/1.txt
1
(3)将crontab里面的定时执行命令进行一些修改,如下:
将crontab执行的语句进行修改:
15 11 * * * /home/loganalysis/dealexcel.sh >> /home/loganalysis/error.log 2>&1
修改为:
15 11 * * * cd /home/loganalysis/ && ./dealexcel.sh >> /home/loganalysis/error.log 2>&1
这个方法引用于https://blog.csdn.net/jkunzhang/article/details/7440215 这篇文章
2.如果脚本里面带有参数,无法执行
如果你已经注意了上面的问题,但是你的脚本有参数,例如原脚本如下:

python test.py -s 123456 -p 123456
1
你在crontab里面写成了这样

* * * * * /usr/bin/python /home/test.py -s 123456 -p 123456
1
这种有参数的建议的做法是创建一个shell脚本把这个脚本全部写在shell脚本里,例如上面的例子,我们创建一个test.sh,test.sh的内容如下:

#!/bin/bash/
export PATH=/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/home/x/bin:/usr/bin
/usr/bin/python /home/test.py -s 123456 -p 123456
1
2
3
然后我们在crontab这样写

* * * * * /home/test.sh
1
这个时候如果不能执行,就是这个shell脚本没有执行权限,使用命令chmod a+x test.sh
如果还不能执行的话,就按照第一点的第三小点,改写成下面这样:

* * * * * cd /home/ && ./test.sh
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值