Minhas desculpas para embobo, mas eu copiei seu roteiro e o modifiquei para eliminar a condição de corrida que notei em meu comentário à sua resposta:
#!/bin/sh
LOCKDIR=/var/run/myprog.lock
mkdir --mode=700 $LOCKDIR || exit 0
trap "{ rm -rf $LOCKDIR ; exit 0; }" EXIT
# do stuff
Basicamente, estamos contando com o fato de que a criação de diretórios é atômica, de modo que apenas uma cópia desse script seja executada simultaneamente pode criar com êxito $LOCKDIR
. Provavelmente, é melhor certificar-se de que $LOCKDIR
esteja em uma unidade local, não em um disco NFS ou em uma montagem Samba, etc.