SVN-更新在cron.daily脚本中不适用于新结帐



我在NAS服务器上有多个结帐(总共11个),我有一个Cron.Daily脚本以更新结帐(来自另一台服务器上的存储库)。我最近设置了此设置,但是在我设置的最后三个结帐时,update命令每天运行时不会返回任何输出。

我确实从一个失败的更新中捕获了STDERR输出,而返回代码为1,我认为这是脚本中的标准"某物是错误的"响应。我不明白的是,如果我将其登录为root,请从crontab中复制运行parts命令并运行它,然后所有更新都按预期工作?

脚本将给我发送每次更新的信息。下面显示了摘录,其中显示更新" SVN-DOCOUMENTS"不起作用(无输出),但其他人确实有效。

Updating 'SVN-COAA':
At revision 2558.
Updating 'SVN-Credentials':
At revision 3.
Updating 'SVN-Development':
At revision 2573.
Updating 'SVN-Documents':
Updating 'SVN-Downloads':
At revision 167.

我创建了使用:

登录为" root"的结帐
svn checkout svn://192.168.1.19/Documents SVN-Documents

我创建了另一个脚本来捕获一个失败的结帐之一,以弄清楚怎么了

#!/bin/bash
. /frontview/bin/functions
get_language_strings
cd /c
resultA="$(svn update SVN-Documents1)"
exitA=$?
mesg="$resultArnExit  Code $exitArnn"
subject="ReadyNAS Duo SVN Documents Update "$(date +%T)
send_email_alert "$subject" "$mesg" "$EMAIL"
##save the message to status log
log_status "$subject" 0

当每天运行时,结果只是以下

Updating 'SVN-Documents1':
Exit  Code 1

但是,当我运行此脚本以root登录时,我会得到

Updating 'SVN-Documents1':
At revision 2944.
Exit  Code 0

所以 - 我认为我的真正问题是 - 如何捕获有关Cron.daille运行时发生的事情的更多信息?

我多年来一直在Windows机器上使用Tortoisesvn,但是我在Linux中使用终端没有太多经验。

这些存储库的配置可能不同;没有添加用户root

此外,SVN更新期望路径不是存储库名称。

好的 - 因此找到了解决方案

使用以下

添加了stderr
svn update $1 2>&1

显示该命令未将UTF-8转换为本地语言

失败

发现BASH脚本使用Posix,当root Login使用UTF-8

将以下内容添加到bash脚本中以修复

export LC_CTYPE="en_US.utf8"

现在一切正常

最新更新