【问题标题】:linux cron job isn't runninglinux cron作业没有运行
【发布时间】:2012-08-18 23:15:11
【问题描述】:

我有一个 Ubuntu Server 10。

在根 cron 中,我有一个脚本可以每天在同一时间运行。

手动运行脚本可以正常运行,但在 cron 中却无法运行。

在系统日志中我得到了这个:

Aug 23 09:22:01 database CRON[6884]: (root) CMD (./bkp.sh >> /tmp/bkp.log)
Aug 23 09:22:01 database CRON[6883]: (CRON) error (grandchild #6884 failed with exit status 2)

我找到了问题的可能根源,我在脚本中添加了一些 LOG(回显)...

在脚本执行期间,它在“函数”定义中退出...

似乎我无法访问命令“function”

我该如何解决这个问题?

【问题讨论】:

  • cron 环境与您的登录 shell 环境不同。系统环境变量各不相同,如 PATH 和库搜索路径。您的脚本可能正在使用从 cron 运行时不可用的东西。
  • 我该如何解决这个问题?我可以指定运行作业的用户吗?
  • 另一种想法...最近我尝试用“sudo su”和“passwd”更改su密码....运行此命令后,我注意到没有效果....这可能是我的 cron 作业问题的原因吗?
  • 对我来说听起来不像是编程问题。这是服务器故障的工作。

标签: linux cron ubuntu-server


【解决方案1】:

cron 启动的 Shell 脚本必须仔细指定它们运行的​​环境。在 cron 内运行的 Shell 将是非交互式的,这意味着它们不会读取 /etc/profile,其中 $PATH 通常是放。这意味着您需要指定脚本中调用的所有可执行文件的路径。

如果您运行大量 cron 脚本,可能值得您花时间编写一个小型 shell 脚本,该脚本将定义和导出要在脚本中使用的环境变量,以 $PATH 开头。

【讨论】:

    【解决方案2】:

    这是我在谷歌搜索“cron 环境变量”时得到的link。它可能会有所帮助。还有很多人喜欢它:)

    【讨论】:

    • cron 工作 100%,但是.... 最近我尝试使用“sudo su”和“passwd”更改 su 密码...运行此命令后,我注意到有没有效果 su 密码继续相同...我忽略了这一点,现在我遇到了问题...
    【解决方案3】:

    将您的脚本放在以下目录中,然后它应该每天运行。

    /etc/cron.daily/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 2012-09-28
      • 2014-04-20
      • 2018-06-11
      • 2014-04-04
      • 2012-01-13
      • 2012-02-26
      相关资源
      最近更新 更多