Chcę mieć plik używany jako licznik. Użytkownik A zapisze i zwiększy ten numer, podczas gdy użytkownik B poprosi o odczytanie pliku. Czy to możliwe, że użytkownik A może zablokować ten plik, aby nikt nie mógł go odczytać ani zapisać, dopóki użytkownik A nie zakończy zapisu?
Przyjrzałem się temu, flock
ale wydaje mi się, że nie mogę go uruchomić tak, jak się tego spodziewam.
flock -x -w 5 /dev/shm/counter.txt echo "4" > /dev/shm/counter.txt && sleep 5
Jeśli istnieje bardziej odpowiedni sposób na zdobycie tego podobnego do atomu pliku inkrementacyjnego, to też byłby świetny do usłyszenia!
Mój cel to:
LOCK counter.txt; write to counter.txt;
podczas gdy w tym samym czasie
Read counter.txt; realize it's locked so wait until that lock is finished.
&& sleep 5
jest wykonywany po zwolnieniu blokady przez stado).
flock
, ale postawię to jako osobne pytanie. Dzięki, John!