我在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更新期望路径不是存储库名称。
好的 - 因此找到了解决方案
使用以下
添加了stderrsvn update $1 2>&1
显示该命令未将UTF-8转换为本地语言
失败发现BASH脚本使用Posix,当root Login使用UTF-8
时将以下内容添加到bash脚本中以修复
export LC_CTYPE="en_US.utf8"
现在一切正常