我创建了一个脚本来做一些事情(我将其简化为仅用于测试目的以回显“IS FINALLY WORKING”)。如果我输入
#bash /var/www/html/somedir/script.sh
它运行正常。
问题是我需要一个 cron 来访问它但它不起作用。
要设置 cron,我使用了:
crontab -e
15 * * * * /var/www/html/somedir/script.sh
或者
15 * * * * bash /var/www/html/somedir/script.sh
我根本看不到任何结果。
我也尝试记录它
15 * * * * /var/www/html/somedir/script.sh > cronscriptlog.log
日志是空的。
操作系统是CentOS 5.5。
答案1
确保/var/www/html/somedir/script.sh
不依赖 cron 默认 PATH 之外的任何内容。CentOS 将默认 PATH 设置为/sbin:/bin:/usr/sbin:/usr/bin
。
您可能希望创建如下的 cron 作业:
15 * * * * ( . /etc/profile && /var/www/html/somedir/script.sh )
或者
15 * * * * su - user /var/www/html/somedir/script.sh
获得类似于命令行的执行环境。
答案2
有时候很容易忽略简单的事情。
要检查的另一件事是 cron 环境,它会每分钟运行一次,因此只需在给出一次输出后将其注释掉即可。
* * * * * root env > /tmp/cronenv.log
Bash 环境和 cron 环境之间总是存在差异。
答案3
/var/log/cron
CentOS 系统上的cron 日志文件中是否有任何相关信息?
检查尝试运行脚本的帐户的邮件,这就是 cron 发送从脚本获得的任何输出的地方。
您只能从您的脚本中捕获 stdout,但您也可以使用 捕获 stderr &> cronscriptlog.log
。