解决手动运行shell命令成功,但在crontab中运行失败但问题

最近遇到了一个问题就是在终端中手动运行shell脚本成功但是在crontab中就会运行失败,检查之后,发现有三个主要原因

1.环境变量设置不对,cron默认使用的环境变量是PATH=/usr/bin:/bin
2.使用的shell不一样,cron默认使用的shell是/bin/sh
3.shell里面使用了alias,但是cron等非交互式shell不能使用alias,需要把alias还原为其原始值。

解决方法如下:
首先在命令行里敲

echo $PATH

然后把输出的内容加到你的shell脚本中:

export PATH="你之前输出的内容"

之后使用以下命令查看你的默认终端shell

cat /etc/passwd

比如,你当前的用户是ubuntu输出以下内容:

ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash

可以看到最后一列是/bin/bash
那么你就在自己脚本的开头加上:

#!/bin/bash

之后应该就没问题了。
也可以设置crontab的默认shell

SHELL=/bin/bash
* * * * * your cmd

或者
也可以设置crontab的默认shell

* * * * * bash -c "your cmd"

如果是环境变量的问题,需要手段设置PATH

PATH=xxxx:xxxx
* * * * * your cmd

也可以使用点命令.(相当于source)来导入环境变量点配置

* * * * * . ~/.bash_profile &&your cmd
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值