【问题标题】:sh with crontab is not working in Centos带有 crontab 的 sh 在 Centos 中不起作用
【发布时间】:2014-12-09 17:46:03
【问题描述】:

我正在使用 crontab 测试一个 sh 脚本,它只是创建一个文件

 #!/bin/bash
    PATH=$PATH:/bin:/usr/bin
    TMP_FILE=/home/hmm/AppFlatForRent/i_am_running
    touch "$TMP_FILE"

现在我想在 crontab 上运行它并使用了以下但失败了

18 10 * * * sh /home/hmm/AppFlatForRent/hello.sh

还有这个

18 10 * * * usr/bin/sh /home/hmm/AppFlatForRent/hello.sh

我也在尝试这个

23 12 * * * /usr/bin/sh /home/hmm/AppFlatForRent/hello.sh
23 12 * * * sh /home/hmm/AppFlatForRent/hello1.sh
23 12 * * * /home/hmm/AppFlatForRent/hello2.sh

谁知道问题出在哪里?

解决方案: 23 12 * * * sh /home/hmm/AppFlatForRent/hello1.sh

这行得通!

【问题讨论】:

  • $TMP_FILE 是在哪里定义的?如果它在你自己的环境中,那么 cron 不知道它。
  • 规范 shell 位置是 /bin/sh,而不是 /usr/bin/sh
  • 我只需要创建一个文件来检查 shell 运行。我认为它没有定义:(

标签: linux shell cron sh crontab


【解决方案1】:

给出从 cron 到 shell 的完整路径,以 '/' 开头:

18 10 * * * /usr/bin/sh /home/hmm/AppFlatForRent/hello.sh

或者,如果脚本是可执行的,则直接将 shell 放在外面,直接运行脚本:

18 10 * * * /home/hmm/AppFlatForRent/hello.sh

【讨论】:

  • 但是您没有以“/”开头。你有“usr/bin/sh”,而不是“/usr/bin/sh”
  • 尝试不使用 sh。不工作。测试脚本有什么问题吗?
  • 正如@glenn jackman 指出的那样,TMP_FILE 定义在哪里?如果没有定义,你什么都没有。
  • 你能推荐我另一个简单的测试吗?我认为 TEMP_FILE 有问题
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2019-10-12
  • 2011-12-19
  • 2013-11-12
  • 2018-12-21
  • 2017-10-03
  • 2016-07-11
相关资源
最近更新 更多