Há uma discussão sobre como implementar um bloqueio mutex nas FAQs do Bash aqui:
Você pode implementar algo semelhante, mas faça o loop de script de reinicialização até que o bloqueio esteja livre. Eu não testei o seguinte, mas aqui está um ponto de partida:
Roteiro de alcatrão:
#!/bin/bash
lockdir=/tmp/myscript.lock
if mkdir "$lockdir"
then # directory did not exist, but was created successfully
echo >&2 "successfully acquired lock: $lockdir"
trap 'rm -rf "$lockdir"' 0 # remove directory when script finishes
# continue script
else
echo >&2 "cannot acquire lock, giving up on $lockdir"
exit 0
fi
# DO YOUR ORIGINAL TAR SCRIPT HERE
Script de reinicialização:
#!/bin/bash
lockdir=/tmp/myscript.lock
while true; do
if mkdir "$lockdir"
then # directory did not exist, but was created successfully
trap 'rm -rf "$lockdir"' 0 # remove directory when script finishes
break # continue with script
else
sleep 5 # sleep for 5 seconds and try again
fi
done
# RUN YOUR REBOOT COMMANDS HERE