我在一个具有cron.daily脚本的NAS服务器上有多个结帐(总共11个)(用于更新结帐)(来自另一台服务器上的存储库)。我最近进行了设置,但是对于我设置的最后三个结帐,脚本每天运行时,update命令不会返回任何输出。
我确实从其中一个失败的更新中捕获了stderr输出,返回代码为1,我认为这是脚本中标准的“出了点问题”响应。我不明白的是,如果我以root用户身份登录,然后从crontab复制run-parts命令并运行它,那么所有更新都可以按预期工作吗?
该脚本将通过电子邮件将每次更新的标准输出发送给我。下面显示了一个摘录,其中显示更新“ SVN文档”不起作用(无输出),但其他文件却起作用。
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
我创建了另一个脚本来捕获失败的检出之一上的stderr,以尝试找出问题所在
#!/bin/bash
. /frontview/bin/functions
get_language_strings
cd /c
resultA="$(svn update SVN-Documents1)"
exitA=$?
mesg="$resultA\r\nExit Code $exitA\r\n\n"
subject="ReadyNAS Duo SVN Documents Update "$(date +%T)
send_email_alert "$subject" "$mesg" "$EMAIL"
##save the message to status log
log_status "$subject" 0
由cron.daily运行时的结果如下所示:
Updating 'SVN-Documents1':
Exit Code 1
但是当我运行以root身份登录的脚本时,会得到
Updating 'SVN-Documents1':
At revision 2944.
Exit Code 0
所以-我认为我的真正问题是-我如何获取有关cron.daily运行时发生的情况的更多信息?
我已经在Windows机器上使用TortoiseSVN多年了,但是我在Linux上使用终端没有太多经验。
答案 0 :(得分:0)
这些存储库的配置可能有所不同;没有添加用户root
。
此外,svn update期望路径不是存储库名称。
答案 1 :(得分:0)
好-找到解决方案了
使用以下命令将stderr添加到stdout中
svn update $1 2>&1
哪个显示命令无法将UTF-8转换为母语
发现root登录使用utf-8时,bash脚本正在使用posix
在bash脚本中添加了以下内容以对其进行修复
export LC_CTYPE="en_US.utf8"
现在一切正常