这是我的crontab -e文件的内容
#!/bin/bash
6 14 * * * /home/rishi/cront.sh
另外,cront.sh文件只有这个
mkdir foo
自从过去两天以来,我一直在尝试做这项工作。从终端运行时,cront.sh命令有效。但是,从crontab开始不起作用。
修改
事实证明,只需使用root编辑crontab -e 做了这个工作。没有什么必须做的了。
答案 0 :(得分: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
手动执行脚本,将输出重定向到某个日志文件。
现在,编辑crontab就是这样:
* * * * * /path/to/my/script 2>&1 > /path/to/log/file2
确保您的脚本可以写入日志文件。 另外,请确保您的脚本已设置可执行位。
比较日志文件1和日志文件2,密切关注环境。变量。如果它们不同,请使用您想要设置它们的任何方法。可以在crontab
中添加行,或在脚本中使用export var=value
。
之后,没有理由不能正常工作。
答案 1 :(得分: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
答案 2 :(得分:0)
试
6 14 * * * sh /home/rishi/cront.sh
或 在cront.sh中添加第一行
#!/bin/bash
或chmod a + x /home/rishi/cront.sh