flock -x -w 5 ~/counter.txt 'COUNTER=$(cat ~/counter.txt); echo $((COUNTER + 1)) > ~/counter.txt'
Bagaimana saya meneruskan beberapa perintah flock
seperti pada contoh di atas?
Sejauh yang saya mengerti, flock
mengambil bendera yang berbeda (-x untuk eksklusif, -w untuk batas waktu), kemudian file untuk mengunci, dan kemudian perintah untuk menjalankan. Saya tidak yakin bagaimana saya akan meneruskan dua perintah ke fungsi ini (setel variabel dengan konten file yang dikunci, dan kemudian tambahkan file ini).
Tujuan saya di sini adalah untuk membuat selisih atom untuk file dengan menguncinya setiap kali skrip mencoba mengakses counter.txt
file.
sumber
Atau Anda dapat menggumpal deskriptor file
Ini juga memiliki manfaat memungkinkan Anda untuk menggunakan variabel counter secara langsung, tidak seperti pendekatan berbasis subkulit.
sumber
exec {counterfd}
? Sendiri, kesalahan Debiannot found
, tetapi mengembalikan 0 dengan redirection. Sangat aneh.The
flock
alat ini sedikit rumit untuk menggunakan dan halaman manual cukup singkat. Halaman manual menyediakan tiga cara untuk menggunakan alat:flock [options] <file|directory> <command> [command args]
flock [options] <file|directory> -c <command>
flock [options] <file descriptor number>
Cara pertanyaan ini diucapkan saya pasti akan menggunakan bentuk ketiga
flock
. Jika Anda masuk lebih jauh di halaman manual karenaflock
ada beberapa contoh yang menunjukkan sintaks yang tepat untuk menggunakan formulir ketiga:Saya menambahkan
#!/bin/bash
.Saya telah berhasil menggunakan bentuk
flock
.sumber