Cách để kiểm tra là fuser -vm /mnt/dir
, phải được chạy dưới quyền root. Nó sẽ cho bạn biết các quá trình đang truy cập vào điểm gắn kết.
Một cách khác là lsof /mnt/dir
, nó sẽ hiển thị từng tệp đang mở trên mount. Một lần nữa tốt nhất chạy như root.
Bạn có thể chạy một trong hai thứ này dưới dạng không root, nhưng sau đó đầu ra sẽ bị giới hạn trong các quy trình của bạn. Những người từ những người dùng khác sẽ chỉ im lặng không được hiển thị, mặc dù chúng sẽ ngăn chặn việc ngắt kết nối hệ thống tập tin.
Thí dụ:
Watt:~# fuser -vm /mnt/Zia/src
USER PID ACCESS COMMAND
/mnt/Zia/src: root kernel mount /mnt/Zia/src
anthony 24909 ..c.. bash
anthony 25041 F.c.. gvim
Trường "truy cập" cho bạn biết cách truy cập của nó. Trong trường hợp này, kernel có nó được sử dụng như một mount (duh, nhưng unmount sẽ ổn với chỉ điều này). bash
có nó là thư mục làm việc hiện tại (sẽ phải đến cd
một thư mục khác trước khi ngắt kết nối) và gvim đều có thư mục hiện tại và có một tệp đang mở (sẽ cần phải đóng gvim đó).
Watt:~# lsof /mnt/Zia/src
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24909 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony 6u REG 0,26 16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)
Trong đầu ra này, bạn có thể thấy các thư mục hiện tại cho cả bash và gvim (dưới dạng DIR
). Bạn cũng có thể xem tập tin gvim nào đã mở để ghi.
Làm thế nào để buộc vấn đề:
fuser
có một -k
tùy chọn sẽ gửi tín hiệu (mặc định SIGKILL
:) cho mỗi quy trình bằng cách sử dụng giá treo. Đây là một cách khá mạnh mẽ để ngăn chặn thú cưỡi khỏi bận rộn. (Và tất nhiên, hãy cẩn thận với những gì bạn SIGKILL
!)
umount
có một -l
tùy chọn để thực hiện một unmount lười biếng. Gắn kết sẽ bị xóa khỏi không gian tên hệ thống tập tin (vì vậy bạn sẽ không thấy nó bên dưới /mnt/Zia/src
nữa, trong ví dụ) nhưng nó vẫn được gắn kết, vì vậy các chương trình truy cập nó có thể tiếp tục như vậy. Khi chương trình cuối cùng truy cập nó thoát, việc ngắt kết nối sẽ thực sự xảy ra.
Có một nguyên nhân có thể sửa chữa cuối cùng của sự thất bại không thể đếm được, và đó là một máy chủ NFS bị hỏng. Ở đây bạn có thể sử dụng umount -f
, nhưng bạn có nguy cơ mất dữ liệu nếu bạn làm như vậy. (Máy khách có thể đã ghi vào bộ nhớ cache mà máy chủ chưa xác nhận và những lần ghi đó sẽ bị loại bỏ. Tuy nhiên, các ứng dụng đã được thông báo rằng việc ghi là thành công.)