Une solution qui ne nécessite pas d'outils supplémentaires serait préférable.
Réponse acceptée :
Presque comme la réponse de nsg :utilisez un répertoire de verrouillage . La création de répertoires est atomique sous Linux et Unix et *BSD et beaucoup d'autres systèmes d'exploitation.
if mkdir $LOCKDIR
then
# Do important, exclusive stuff
if rmdir $LOCKDIR
then
echo "Victory is mine"
else
echo "Could not remove lock dir" >&2
fi
else
# Handle error condition
...
fi
Vous pouvez placer le PID du sh de verrouillage dans un fichier du répertoire de verrouillage à des fins de débogage, mais ne tombez pas dans le piège de penser que vous pouvez vérifier ce PID pour voir si le processus de verrouillage s'exécute toujours. De nombreuses conditions de course se trouvent sur cette voie.