定时任务失效,请留意Crontab中的Path

linux系统中定时任务可以通过/etc/crontab文件配置,具体怎么定时网上有文档,就不赘述了。

注意:这里的PATH,务必和系统路径PATH保持一致

#查看系统路径
echo $PATH

示例输出:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 一般来讲,正常执行脚本命令的时候,处于系统路径下的可以省略路径,直接输入脚本名执行的。例如:/usr/bin/nginx,可以直接执行nginx -s reload来重启,而不需要进入nginx目录后用./nginx -s reload来重启。

而crontab文件的PATH其实是类似的,如果不一致可能导致定时任务失效,例如:

SHELL=/bin/bash
#此时缺少$PATH部分路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

用定时任务,执行以下命令:

#默认按cron最短间隔,1分钟执行一次
* * * * * root ipsec status >> /root/shell/output.log

保存后重启cron:systemctl restart crond

查看日志文件output.log,会发现结果为空,因为该脚本在/usr/local/sbin路径下,crontab文件没有包含这个路径,就无法省略路径执行。

单独执行ipsec status命令,就没有问题(输出表明:连接数为0)。

解决办法自然是在crontab文件中补上/usr/local/sbin路径。

总结

使用cron定时任务时,务必保证PATH参数和系统参数一致。不然有的脚本省略路径执行命令(大部分情况都会省略),手动执行没有问题,定时执行就无法保证了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值