这是我的 crontab -e 文件的内容
#!/bin/bash
6 14 * * * /home/rishi/cront.sh
此外,cront.sh 文件只有这个
mkdir foo
自过去 2 天以来,我一直在努力完成这项工作。cront.sh 命令在从终端运行时有效。但是,在 crontab 中不起作用。
编辑
事实证明,只需使用 root 编辑 crontab -e 就可以了。没有什么需要做的了。
在 下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
在您的脚本中使用。
在那之后,没有理由不能正常工作。
你不需要第一行
#!/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
尝试
6 14 * * * sh /home/rishi/cront.sh
或在 cront.sh 中添加第一行
#!/bin/bash
或 chmod a+x /home/rishi/cront.sh