crontab 源文件

Vin*_*eth 5 linux cron

最近我创建了一个 bash 脚本,我应该在 cron 中运行它。

准备好bash脚本并正常工作后,我将其放入Cron中,发现它失败了。作为第二步,我删除了所有环境依赖项,即file.txt我指定的不仅仅是/home/blah-blah/file.txt

我仍然发现脚本在某一步骤仍然失败。该步骤是一个数据处理工具。我执行的命令是/bin/blah-blah/processing_tool -parameter $INDEXbash$INDEX脚本中计算的变量。

第三步是将 bash 配置文件添加为 bash 脚本开头的源。瞧!!!!该脚本从 cron 开始完美执行。

我的问题是,即使我从脚本中删除了所有环境依赖项,为什么还会发生这种情况。我还听说不建议将 cron 作业外包给 bash 配置文件。如果是这样,有没有其他方法可以避免这样做。

Sri*_*ram 0

Acron可以被认为是一个单独的用户。因此,这个“用户”可能不会像您一样“看到”或“读取”相同的文件。因此,所有路径名等必须以绝对路径定义。

每个脚本都在其自己的进程中运行。因此,当您运行脚本时,您可以更改$SHELL和其中的任何其他变量,但一旦退出脚本,它就会丢失。我的猜测是,$INDEX变量计算可能已在脚本内成功计算,但在脚本外使用可能会失败。如果没有更多关于这是什么工作或你想做什么的信息,很难说。

有两种方法可以运行 cron 作业:

  1. 作为 root,您可以su -user -c < job > 运行root crontab.
  2. 正如您所做的那样,明确地获取您的个人资料。
  3. 您还可以在 crontab 中设置环境变量。
  4. 作为用户 crontab 中的用户,您可以像这样运行它: "/home/blah/.profile && myScript"

也就是说,您的环境变量中必须有一些东西(除了文件扩展名)在您运行 cron 作业时不存在。您必须执行该脚本-x flag (in bash),然后仔细研究输出。diff在环境变量和 of 之间使用 aroot/cron可能是一个指针。另外,检查脚本中是否使用了一些实用程序,这些实用程序的位置不属于$PATHcron/root 变量的一部分。