0

这是我的 crontab -e 文件的内容

#!/bin/bash
6 14 * * * /home/rishi/cront.sh

此外,cront.sh 文件只有这个

mkdir foo

自过去 2 天以来,我一直在努力完成这项工作。cront.sh 命令在从终端运行时有效。但是,在 crontab 中不起作用。

编辑

事实证明,只需使用 root 编辑 crontab -e 就可以了。没有什么需要做的了。

4

3 回答 3

3

在 下cron,不能保证您的环境变量(最重要的是PATH)会正确设置。

尝试在 crontab 顶部添加这样的行:

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

此外,最好使用 mkdir 的完整路径:

mkdir /path/to/my/dir

此外,确保您的 cront.sh 是可执行的也无妨:

chmod +x /home/rishi/cront.sh

在那之后,它应该工作。

编辑

调试 crontab 问题的通用方法

  • 在要调试的脚本顶部,添加一行:

    set    # this should print all environment variables
    
  • 手动执行您的脚本,将输出重定向到某个日志文件1。

  • 现在,将 crontab 编辑为如下所示:

    * * * * * /path/to/my/script 2>&1 > /path/to/log/file2
    

确保日志文件对您的脚本是可写的。此外,请确保您的脚本设置了可执行位。

  • 比较 log file1 和 log file2,密切关注 env。变量。如果它们不同,请使用您希望将它们设置为相同的任何方法。它可以在 中添加行crontab,或export var=value在您的脚本中使用。

  • 在那之后,没有理由不能正常工作。

于 2013-01-14T08:52:55.987 回答
1

你不需要第一行

#!/bin/bash <--- remove this line
6 14 * * * /home/rishi/cront.sh

你的脚本是可执行的吗?

如果不是。尝试在终端中运行以下命令。

 chmod +x /home/rishi/cront.sh

带有注释字段的格式示例crontab如下:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
    0        2          12             *               0,6           /your/path/yourscript.sh
于 2013-01-14T08:44:31.630 回答
0

尝试

6 14 * * * sh /home/rishi/cront.sh

或在 cront.sh 中添加第一行

#!/bin/bash

或 chmod a+x /home/rishi/cront.sh

于 2013-01-14T08:53:33.433 回答