Crontab没有完全执行Shell脚本

时间:2012-02-20 12:59:53

标签: shell cron

这是来自海德拉巴的Srikanth。

我是一家公司的Linux管理员。我们有一个squid服务器,所以我准备了一个Backup squid服务器,这样当LIVE Squid服务器关闭时我就可以把备份服务器放到LIVE中。

我的squid服务器配置了Centos 5.5。我准备了一个脚本来备份/ etc / squid / LIVE服务器中的所有配置文件到备份服务器。即它会将所有文件从Live服务器的/ etc / squid /复制到备份服务器的/ etc / squid /

这是在目录/ opt /中保存为squidbackup.sh的脚本,权限为755(rwxr-xr-x)

#! /bin/sh
username="<username>"
password="<password>"
host="Server IP"

expect -c "
spawn /usr/bin/scp -r <username>@Server IP:/etc/squid /etc/
expect {
        "*password:*"{
        send $password\r;
        interact;
                     }
   eof{
  exit
      }
}

**请注意,这将在备份服务器中执行,该服务器将检查脚本中提到的用户。我在实时服务器中创建了一个用户,并在脚本中也给出了相同的用户。

当我使用以下命令执行此命令时

[root@localhost ~]# sh /opt/squidbackup.sh

到目前为止一切正常,此脚本将所有文件从LIVE服务器的/ etc / squid /目录下载到备份服务器的/ etc / squid /

现在问题引发了,如果我在crontab中设置如下或其他时间

50 23 * * * sh /opt/squidbackup.sh

不知道什么是错的,它不是下载所有文件。即Cronjob只从/ etc / squid / LIVE服务器下载少量文件到/ etc / squid /备份服务器。

**当cron执行脚本时,只下载了几个文件,如果我手动运行这个脚本,那么它会完全下载所有文件,没有任何错误或警告。

如果您还有其他问题,请继续发布。

如果有任何解决方案,我现在请求提供。

拜托,请提前谢谢。


感谢您的关注。我已经尝试了你所说的,它显示如下,但以前我用来获得相同的输出到用户在squid备份服务器的邮件。

即使在cron日志中也显示相同,但​​我无法理解以下行中的确切错误。

请注意,只有少数文件可以通过cron下载。

spawn /usr/bin/scp -r <username>@ServerIP:/etc/squid /etc/
<username>@ServerIP's password:

请检查您是否可以提出任何其他建议。

1 个答案:

答案 0 :(得分:1)

  1. 首先尝试简单的选项。捕获stdout和stderr,如下所示。这些文件应指向问题。

  2. 查看脚本,您需要指定expect的位置。这可能是一个问题。

  3. 50 23 * * * sh /opt/squidbackup.sh >/tmp/cronout.log 2>&1