CentOS crontab 执行 shell 脚本,shell 脚本中的命令不执行

前言

最近有一个工作,就是写一个 shell 脚本,然后早晚一次去查服务器的部分指标,超过 xxx 的时候通知管理员。

就在我 shell 脚本实现了,且直接运行无误后,为了贪方便,直接在 crontab 里丢个脚本执行,第二天发现居然没有生效,于是有了这篇备忘。

正文

经过查看 crontab 的日志(/var/log/cron),发现执行了,且没有返回异常。

于是开始怀疑是不是命令没执行成功,于是写了个简单的 shell,打印当前时间,在 crontab 加入任务后,发现真的不生效,mmp。

然后经过多次试验,验证了确实没有任何的环境变量。此时,第一反应就是直接把代码里调用了 linux 程序都写成绝对路径。看了下,放弃了(多啊 =_=)。

Emmmm……..

最后,头疼半天,突然想到配置完 JDK 环境后会载入一次配置,那我在 shell 脚本里载入会不会就可以了,于是我在 shell 脚本的第二行,加上了以下的一句

1
source /etc/bashrc

完结撒花。

结言

嗯,问题解决了。就是不晓得这种写法有什么弊处,我琢磨着重新载入配置而已,应该没事的,网管系统还没搭起来,这个就是临时用的,也就不去弄优化了。
后面有写 shell 脚本的时候还是尽可能的写成绝对路径吧。