0

我的脚本在 /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 文件中没有得到任何更新 :( 。请帮助...。

4

2 回答 2

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。如果您也想重定向stderr2>&1 ,请在行尾添加。

于 2012-09-17T08:16:59.403 回答
0

通常这是由PATH问题引起的。很有可能调用cron 运行时myscript.sh不可用的命令。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

于 2016-01-03T22:29:35.803 回答