Используйте mkdir
, который является атомарным процессом, чтобы заблокировать других. Только один в то время может сделать каталог:
#!/bin/bash
if ! mkdir /tmp/TheLock 2> /dev/null ; then
echo Error, user \'$(stat -c %U /tmp/TheLock)\' has the task
else
echo Yes, I got it\!
sleep 1 # do stuff
rmdir /tmp/TheLock
fi
Если вы сначала запустите скрипт, он будет прочитан:
Yes, I got it!
Если кто-то попытается запустить его одновременно, вывод будет:
Error, user 'Emmanuel' has the task