用过*nix 系统的同学对crontab一定不陌生,最近系统重装之后一直被command not found这个错误给困扰,本来打算work around,通过绝对路径解决,无奈天生比较懒惰,不想一个一个的去改脚本,于是各种资料,后面通过如下方法很容易解决:
运行crontab -e ,进入编辑状态,然后在最上面设置PATH=你要的path路径,和shell语法一样,就OK了,是不是超级简单。。。。
小技巧: crontab 执行任务的时候,如果命令报错,不会输出到日志,这为排查问题带来了不少难度,这时候可以通过shell 重定向,将脚本的执行输出,写到log文件,例子如下(exec 可以方便的给整个shell重定向):
exec 3>&1 #把fd 3 重定向到标准输出
exec >>$dlog/export.log 2>&1 #把标准输出和错误输出重定向到日志文件,把
###执行命令
echo "------exec here------" ##随意加点日志
exec 1>&3 3>&- ##恢复shell重定向