我目前正在创建一个备份脚本,该脚本使用 screen 在 screen 会话内使用 rsync 启动备份作业。备份作业按如下方式启动。
屏幕 -dmS 备份 /usr/bin/rsync ...
一旦 rsync 作业完成,screen 会话就会自动终止。为了确保备份成功,我想检查 rsync 作业的退出代码,但不幸的是,我真的不知道如何在 screen 终止后获取退出代码。
有人知道如何自动检查 rsync 作业是否成功吗?
如果有人愿意的话就太好了。
我已经考虑过使用临时文件但是像这样:
screen -dmS myScreen "rsync -av ... ; echo $? > /tmp/myExitCode" 但不幸的是,这不起作用。然后我想到使用 stderr,如下例所示:
screen -dmS myScreen "rsync -av ... >2 /tmp/rsync-sterr
到目前为止,我的想法都没有奏效,因为当我使用上述命令时,stderr 没有被写入。:-(?
如果有人有一个好主意甚至解决方案那就太好了。
干杯,
贝蒂娜
答案1
sh -c "commands"
如果您想使用重定向等,请传递到屏幕:
screen -dmS name sh -c '{ rsync -av ... 2>&1; echo $?; } >~/rsync-status'
此外,它是fd>file
,而不是>fd file
。要重定向 stderr,您可以使用2>foo
。