Tôi có một tập hợp các tập lệnh shell thực hiện sao lưu trên hệ thống của tôi bằng cách sử dụng truecrypt và rsync. Tôi muốn tránh bất kỳ khả năng nào của các tập lệnh khác nhau này chạy cùng một lúc.đàn (1) không thể nhả khóa
Họ sử dụng flock
trong một subshell, như mô tả trong manpage:
(
flock -n 9 || exit 1
# ... commands executed under lock ...
) 9>/var/lock/mylockfile
Tuy nhiên, khóa luôn thất bại trong việc mua lại cho chạy tiếp theo (với trạng thái thoát 1).
Tuy nhiên fuser /var/lock/mylockfile
và lsof /var/lock/mylockfile
không hiển thị gì.
Bây giờ, nếu tôi thêm các lệnh flock -u
để mở khóa, như thế này:
(
flock -n 9 || exit 1
# ... commands executed under lock ...
flock -u 9
) 9>/var/lock/mylockfile
Sau đó, kịch bản làm việc.
Tôi có sử dụng flock
chính xác không? Có an toàn khi gọi flock -u
bên trong khối không?
FYI Các tập lệnh phiền hà là các tập lệnh gọi là truecrypt trong khối lệnh.
Tuyệt vời, cảm ơn! Bạn thực sự là chính xác. Tôi đã đóng bộ mô tả tập tin khi gọi truecrypt (và loại bỏ các cuộc gọi 'flock -u') và nó hoạt động hoàn hảo ngay bây giờ. – QuasarDonkey