在我的bash脚本中,如果在放弃之前失去了与目标的连接,我将尝试让rsync重试10次。
我知道这段代码会捕获所有错误,但我现在可以接受。
我的代码是:
lops="0"
while true; do
let "lops++"
rsync $OPT $SRCLINUX $TRG 2>&1 | tee --append ${LOGFILE}
if [ "$?" -eq "0" ]; then
echolog "rsync finished WITHOUT error after $lops times"
break
else
echolog "Re-starting rsync for the ${lops}th time due to ERRORS"
fi
if [[ "$lops" == "10" ]]; then
echolog "GAVE UP DUE TO TOO MANY rsync ERRORS - BACKUP NOT FINISHED"
break
fi
done
它没有按预期工作,下面是第一个错误发生的情况:
TDBG6/
rsync: connection unexpectedly closed (131505 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
rsync finished WITHOUT error after 1 times
这是因为美元吗?包含T形三通的返回值,而不是rsync?
我怎样才能解决这个问题?(我个人Linux语法有限:)
我认为状态是管道中最后一个命令的状态。
一般来说,我不知道如何处理这个问题,但对于这种特定情况,您可以重定向整个循环的输出:
while true; do
...
done | tee -a "$LOGFILE"
根据它的用途,这也可能意味着你不需要“回声”功能。
除了其他关于处理混淆退出代码的管道的建议外,您还可以通过使用如下流程替换来避免管道:
rsync "$OPT" "$SRCLINUX" "$TRG" &> >( tee --append "${LOGFILE}" )
这将重定向stdout
和stderr
(这是
我认为至少有两种可能解决您的问题:
>
使用管道状态:
一个数组变量,包含最近执行的前台管道中进程的退出状态值列表(可能只包含一个命令)。
将其用作:
rsync $OPT $SRCLINUX $TRG 2>&1 | tee --append ${LOGFILE}
if (( PIPESTATUS[0] == 0 )); then
使用rsync
的--log-file
选项。
笔记:
我试图解决Dijkstra算法上的一个hackerrank问题--https://www.hackerrank.com/challenges/dijkstrashortreach。我在使用我自己的Dijkstra代码逻辑。虽然我的代码解决了更容易的测试用例,但它在更高的测试用例上失败了。我猜我的代码在某个地方缺少了一些传递性,并且我得到的某个节点的值高于预期。你能帮我找出我的错误吗?问题:输入格式
我正在为Phonegap开发设置一个环境,我遇到了一些麻烦,最终构建和运行适用于Android的应用程序。 当我尝试执行Android构建时,出现以下错误: 一些细节: 我在 Windows 8.1 上运行; 我使用的是Android SDK 22; 我已经为 JDK、Android(工具、构建工具和平台工具)、Ant 和 Gradle 创建了环境变量。 任何想法为什么我会收到此错误? 谢谢。
问题内容: 嗨,我是一名初学者应用程序开发人员,我选择了phonegap,请在将android作为我的项目平台添加时查看问题。代码如下: 更新:谢谢,我认为它向前移动了一点,但现在它显示了这一点: 问题答案: 请在您的PATH变量中添加 C:\ Windows \ System32
我是科尔多瓦的新手,所以如果我的问题不相关,请原谅我。我的Windows7x64机器中有一个cordova项目。昨天,我通过构建了我的cordova应用程序。但是我需要添加新的插件来更新我的cordova项目。我做了什么来添加这个插件到我的cordova应用程序; null 构建失败C:\android\sdk\tools\ant\BUILD.xml:720:执行这一行时发生以下错误:C:\and
问题内容: 我是科尔多瓦的新手,所以如果我的问题不相关,请原谅我。我在Windows 7 x64计算机上有一个cordova项目。昨天,我通过构建了Cordova应用。但是我需要添加新的插件来更新我的cordova项目。我将该插件添加到我的cordova应用程序中所做的工作; 我在win7 x64 env上安装了git应用程序。 我在cmd上写了这个命令。 我打开Windows环境变量/路径窗口并
问题内容: 科尔多瓦构建失败,错误代码:EACCESS 已将android平台添加到 尝试重新安装,但无法正常工作 问题答案: 由于某种原因,build当前不是可执行文件。要解决此问题,请打开终端并输入以下命令: