Nareszcie ze mną, bo jestem nowy w tym flock
narzędziu i o ile wiem, nie używałem deskryptorów plików.
Mam skrypt bash, który wysyła żądanie cURL i zapisuje dane wyjściowe w pliku o nazwie resp.txt
. Muszę utworzyć wyłączną blokadę, aby móc pisać do tego pliku i nie martwić się o to, że wielu użytkowników jednocześnie uruchamia skrypt i edytuje plik tekstowy.
Oto kod, który oczekuję, aby zablokować plik, wykonać żądanie i zapisać w pliku tekstowym:
(
flock -e 200
curl 'someurl' -H 'someHeader' > resp.txt
) 200>/home/user/ITS/resp.txt
Czy to jest właściwy sposób, aby to zrobić? Mój rzeczywisty skrypt jest nieco dłuższy, ale wydaje się, że się psuje, gdy dodam flock
składnię do skryptu bash.
Gdyby ktoś mógł wyjaśnić, jak działają te deskryptory plików i poinformować mnie, czy poprawnie blokuję plik, byłoby to niesamowite!
flock
działa? Jestem nowy w deskryptorach plików: /curl
nadal można zapisać do pliku. Zauważ, że może to być niebezpieczne (lub nawet nie działać) z NFS, ale nie używaj skryptu powłoki do blokowania plików przez NFS. Za pomocąbash
można również otworzyć plik do odczytu i zapisu:200<> resp.txt
ale to nic nie powinno zmienić.