使用crontab计划bash脚本的问题

时间:2015-06-04 01:23:25

标签: linux bash unix terminal crontab

使用:

20 21 * * *  /bin/sh /Users/username/Documents/first.sh

执行我的脚本,btw在顶部有这个:

#!/bin/sh

相反,我得到了这个:

You have new mail in /var/mail/username

使用以下输出:

/Users/username/Documents/first.sh: line 3: wget: command not found
/Users/username/Documents/first.sh: line 4: wget: command not found

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

即使你以某种方式让你的cron工作工作,我也非常想指出你的解决方案"似乎无关紧要。

  1. " bash first.sh"这不是一个好主意,因为脚本的开头以"#!/ bin / sh"开头,这意味着:你只是" first.sh"系统将使用" / bin / sh"

  2. 解释它
  3. " cd / Users / username / Documents"不解决未找到的"命令"问题。

  4. 这实际上是cron作业的常见问题。根本原因是:cron作业(在这种情况下是first.sh)运行在" clean"环境。也就是说,您的个人资料不是来源。因此,PATH env var只包含最少数量的路径,不幸的是" wget"不在那些道路上。

    解决方案:简单直接。你可以

    1. 以他们的绝对路径唤起wget等。或
    2. 在脚本开头相应地设置PATH(或相应配置文件中的源代码)。
    3. 为了安全起见,我们通常更喜欢使用绝对路径调用外部命令(wget等)。

答案 1 :(得分:-2)

谢谢大家,我找到了解决方案:

我修改了我的crontab文件:

34 21 * * * cd / Users / username / Documents&& bash first.sh