我有以下简单命令可以使用 nohup 在后台启动备份过程:
nohup rsync -a /src /target &
Run Code Online (Sandbox Code Playgroud)
我正在尝试找到正确的解决方案来捕获退出代码并将失败或成功消息发送到日志文件或邮件中。为了实现这一目标,我尝试了以下方法:
nohup rsync -a /src/ /target/ &
oldpid=$!
wait $oldpid
if [[ $? -eq 0 ]]
then
echo "SUCCESS"
else
echo "FAILED"
fi
Run Code Online (Sandbox Code Playgroud)
该代码似乎工作正常,但如果这是一种可靠的方法,我现在实际上不工作。我有两个担忧:
$?当中间执行另一个命令时,该变量是否会被覆盖?wait $oldpidnohup的异步方式搞乱了?或者也许这个逻辑只是愚蠢的并且有更好的方法?