如何获取在屏幕会话中启动的脚本的退出代码

如何获取在屏幕会话中启动的脚本的退出代码

我目前正在创建一个备份脚本,该脚本使用 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

相关内容