解决Crontab无法正常运行source和svn等命令,适合mac和Linux

crontab运行时,由于运行时环境与手工在终端里使用的不同,常会导致一些代码执行失败。比如 source, svn 等命令,常无法使用;一些定义在~/.profile 或者 ~/.bashrc里的全局命令也不起作用。

小方总结一下,希望可以帮助你解决问题。

 

#!/bin/bash

# 上面那行必须加的哦~~而且不能是 !/bin/sh,原因么~~不太清楚

# 使用shell环境
SHELL=/bin/bash

# 先在本地终端手工打出 echo PATH,然后把PATH值填写到下面,比如我打出的是
# /usr/lib/jvm/jdk1.7.0_25/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
# 最后还得累加个{PATH}
export PATH="/usr/lib/jvm/jdk1.7.0_25/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${PATH}"

# 是的,你需要把mac/linux下面的所有可能定义全局变量或者别名的文件全部加载一遍。
source ./.bashrc
source ./.bash_profile
source ./.profile

# 接下去就写你的代码吧

如果还不行,你可能需要手工自己打log查原因了,方法是设定crontab 如下

比如 10 13 * * * /PATH/myscript.sh > /tmp/myscript.log