最近我创建了一个 bash 脚本,我应该在 cron 中运行它。
准备好bash脚本并正常工作后,我将其放入Cron中,发现它失败了。作为第二步,我删除了所有环境依赖项,即file.txt我指定的不仅仅是/home/blah-blah/file.txt
我仍然发现脚本在某一步骤仍然失败。该步骤是一个数据处理工具。我执行的命令是/bin/blah-blah/processing_tool -parameter $INDEXbash$INDEX脚本中计算的变量。
第三步是将 bash 配置文件添加为 bash 脚本开头的源。瞧!!!!该脚本从 cron 开始完美执行。
我的问题是,即使我从脚本中删除了所有环境依赖项,为什么还会发生这种情况。我还听说不建议将 cron 作业外包给 bash 配置文件。如果是这样,有没有其他方法可以避免这样做。
Acron可以被认为是一个单独的用户。因此,这个“用户”可能不会像您一样“看到”或“读取”相同的文件。因此,所有路径名等必须以绝对路径定义。
每个脚本都在其自己的进程中运行。因此,当您运行脚本时,您可以更改$SHELL和其中的任何其他变量,但一旦退出脚本,它就会丢失。我的猜测是,$INDEX变量计算可能已在脚本内成功计算,但在脚本外使用可能会失败。如果没有更多关于这是什么工作或你想做什么的信息,很难说。
有两种方法可以运行 cron 作业:
su -user -c < job > 运行root crontab. "/home/blah/.profile && myScript"也就是说,您的环境变量中必须有一些东西(除了文件扩展名)在您运行 cron 作业时不存在。您必须执行该脚本-x flag (in bash),然后仔细研究输出。diff在环境变量和 of 之间使用 aroot/cron可能是一个指针。另外,检查脚本中是否使用了一些实用程序,这些实用程序的位置不属于$PATHcron/root 变量的一部分。