我的脚本位于/ u01 / software / aditya / script /目录下。脚本名称是myscript.sh。我能够运行此脚本并获得输出。我想在每天早上6:30为这个脚本设置一个cronjob。我以root用户身份执行此操作。我已经完成了以下步骤但没有获得输出。
crontab -e
30 06 * * * sh /u01/software/aditya/script/myscript.sh >> /u01/software/aditya/hello.log
:wq
但没有在hello.log文件中获得任何更新:(。请帮助....
答案 0 :(得分:1)
首先检查您的cron日志文件,该文件通常位于/var/log/syslog
。应该有类似于
Sep 17 06:30:01 localhost CRON[17725]: (root) CMD (sh /u01/software/aditya/script/myscript.sh >> /u01/software/aditya/hello.log)
如果没有,您的脚本从未运行过。这可能是由于crontab
文件损坏。您应确保此文件始终以换行符结尾,最好在末尾插入多个文件,以便意外删除一个文件不会破坏文件。
如果日志文件中存在此行,则表示您的脚本已运行,但未生成任何输出。当通过cron
运行时,由于环境不同,可能会发生这种情况。
另请注意,>>
仅重定向 stdout ,而不是 stderr 。如果您想重定向 stderr ,请在该行的末尾添加2>&1
。
答案 1 :(得分:0)
通常这是由PATH
问题引起的。 myscript.sh
很有可能调用cron运行的PATH
中没有的命令。解决此问题的一些选项是:
myscript.sh
中的每个命令都是完整路径引用(繁琐)source ~/.bashrc
添加到myscript.sh
export PATH=$PATH:<colon delimited list of paths necessary for myscript.sh to run correctly>
选择上述其中一项,或者您也可以在此处选择其中一个选项:Hourly cron job did not run