最近我创建了一个bash脚本,我应该在cron中运行.
在准备好bash脚本及其正常工作之后,我把它放在Cron中,发现它失败了.和第二步一样,我删除了所有的环境依赖,而不仅仅是file.txt,我指定了/home/blah-blah/file.txt
我仍然发现脚本仍然失败了一步.该步骤是一种数据处理工具.
我执行的命令是/ bin / blah-blah / processing_tool -parameter $INDEX,其中$INDEX是在bash脚本中计算的变量.
第三步是在bash脚本的开头添加bash配置文件作为源.瞧!!!!该脚本从cron开始完美执行.
我的问题是,为什么即使在我从脚本中删除了所有环境依赖项后,这种情况也会发生.我也听说不建议将bron作业转换为bash配置文件.如果是这样,有没有其他方法可以避免这样做.
最佳答案 基本上:从cron开始的任何东西都以完全干净的方式开始.
您不能对环境变量的内容或任何从cron运行的脚本开头的当前文件夹中的任何文件夹做任何假设.
最简单的解决方案
cd到所需的目录,以确保您的路径在所需的位置.
源/ etc / profile确保您获得系统范围的环境变量设置.
source~myuserid / .profile来读取您的个人环境设置. (〜/ .profile将不起作用,因为它表示cron用户.)
然后开始执行实际的脚本.
当然,上面的方法要求cron进程具有对你的home-dir的读访问权,并且它可能正在做更多的实际需要的工作.
稍微复杂一点:找出脚本需要哪些环境变量以及脚本调用的任何内容.
在cron脚本的开头显式导出这些.
(P.s.将/ etc / profile和~myuserid / .profile替换为您选择的shell的相应文件.)