Hiển thị không gian trống của hệ thống tập tin có sẵn cho người dùng root


12

Theo mặc định, Linux dành một phần hệ thống tệp cho người dùng root, ít nhất là trên ext4 (để ngăn người dùng thông thường lấp đầy ổ đĩa hoàn toàn và làm sập hệ thống và để giảm phân mảnh). Tuy nhiên, dfchỉ hiển thị không gian trống rõ ràng cho người dùng thông thường (ngay cả khi chạy dưới quyền root). Làm thế nào để bạn hiển thị không gian trống "thực", có thể truy cập vào root?

Câu trả lời:


6

Tôi không chắc chắn có một công cụ được tích hợp, nhưng giả sử bạn đã để dành riêng ở mức 5% mặc định thì điều này sẽ cho bạn biết:

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

dfgốc, grepđối với dòng có dev trong đó (để loại bỏ tiêu đề), cutkích thước và các trường có sẵn, sau đó sử dụng awktập lệnh để tính 5% kích thước đĩa được thêm vào.

Bạn có thể lấy phần đặt trước thực tế từ tune2fs -l <device>và kết hợp điều này với phần trên trong tập lệnh.


2
Đúng vậy, vì vậy lệnh sau sẽ cho chúng ta biết bao nhiêu không gian phân vùng được dành riêng cho người dùng đặc quyền : tune2fs -l /dev/DEVICE | egrep "Block count|Reserved block count". Ví dụ: phân vùng "bộ đệm đa phương tiện" của tôi: Block count: 2621440Reserved block count: 128449: 4,9% các khối có sẵn (cài đặt bảo thủ để giúp ngăn ngừa sự phân mảnh).
tuk0z

Không cần sử dụng cutlệnh: bạn có thể chọn các trường bằng cách awktrực tiếp. Trong thực tế, cutlệnh không làm việc cho tôi như mong đợi. Dù sao, tôi đã đưa ra một câu trả lời khác nên đưa ra câu trả lời chính xác hơn.
jarno

1
Thực thi tune2fs -m <percentage> <device-name>để thay đổi không gian đĩa chỉ dành cho sử dụng root.
luka5z

1
Lấy cảm hứng từ những điều trên tôi đã nghĩ ra điều này để tính toán không gian dành riêng cho khối lượng gốc trong MB:sudo tune2fs -l $(df | grep -E '/$' | cut -d\ -f 1) | egrep "Reserved block count|Block size" | paste -sd\ | awk '{print ($4 * $7 / ( 1024 * 1024 ) ), "MB"}'
mp3 Scratchey

Đây không phải là một câu trả lời di động. Kiểm tra bên dưới để biết câu trả lời bạn cần (spoiler: tune2fs /dev/sda1hoặc thậm chí tốt hơnstat -f -c '%a blocks free and %f blocks free for root (%S bytes per block)' /
trs

17

Bằng cách sử dụng lệnh Tune2fs (được tìm thấy trong / sbin / Tune2fs ), bạn có thể dễ dàng xác định không gian dành riêng : (và hơn thế nữa!)

tune2fs -l /dev/sda1

Tôi sẽ cung cấp thông tin hệ thống của tôi để tham khảo, tôi sẽ xóa các dòng không liên quan đến câu hỏi này:

Tiêu đề ... và tên âm lượng, tôi gắn nhãn tất cả các ổ đĩa của mình, giúp chúng dễ dàng xác định nếu cần.

tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name:   xenon
Last mounted on:          /
...

THỰC SỰ muốn điều này nói "sạch" trong khi hệ thống đang chạy. Thật thà!

Filesystem state:         clean

Đây là nơi thông tin dung lượng lưu trữ dữ liệu bắt đầu:

Ở đây bạn có thể thấy rằng tôi có tổng số 121.179.648 khối ... với kích thước khối là 4K (4096), nhân với một số lớn (462-ish GB). (Kích thước khối được ghi chú bên dưới)

Block count:              121179648

Và các khối dành riêng ... bằng cách nhìn vào số ở trên và số bên dưới .. bạn sẽ có thể nhanh chóng nhận ra tôi có 1% dành riêng. Trong trường hợp này (4,62-ish GB)

Reserved block count:     1211796

Hiện tại có bao nhiêu không gian trống? Ngay ở đây!

Free blocks:              104090586
...

Và tất cả các kích thước khối quan trọng. Hữu ích cho nhân.

Block size:               4096
...

Những dòng này cho biết WHO các khối được dành riêng cho ... người dùng 0, root, trong trường hợp này

Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
...

Có rất nhiều thông tin có sẵn ở đây, nhưng điều này sẽ cung cấp cho bạn khả năng nhanh chóng xác định số lượng có sẵn và bao nhiêu dành riêng cho root. Toán đơn giản.

Hi vọng điêu nay co ich. Hãy nhớ rằng ... trang nam là bạn của bạn.


2

Điều này hiển thị không gian trống theo byte trong phân vùng liên quan đến "/ path"

printf '%s' $(($(stat -f --format='%f*%S' /path)))

Bạn không cần phải là siêu người dùng để chạy nó.

BTW Tôi không hiểu sự khác biệt giữa

Kích thước khối% s (để chuyển nhanh hơn)

Kích thước khối cơ bản% S (đối với số khối)

trong việc sử dụng stat.


Thật tuyệt - tài khoản này có dành cho không gian dành cho root không?
Paul

@Paul có, nó được bao gồm
jarno

Đầu ra của bạn thực sự là một tổng - vì vậy bạn có thể dẫn đầu ra vào bcđể lấy số byte hoặc thậm chí sử dụng --format='%f*%S/1024/1024/1024' | bcđể lấy kilobyte / megabyte / gigabyte tùy thuộc vào số lượng phân chia bạn chọn.
Paul

@Paul Vâng, tôi sẽ gọi nó là một sản phẩm. Các tiền tố nhị phân được gọi là kibibytes, mebibytes và gibibytes, tương ứng. Việc mở rộng số học xung quanh $(( ... ))thực hiện phép tính, nhưng kết quả chỉ là phần nguyên của thương số (nếu bạn thêm phép chia). Hay bạn có nghĩa là vỏ của bạn không hỗ trợ mở rộng số học?
jarno

@Paul Nhưng, nếu bạn sử dụng bc, thay vào đó, bạn có thể lấy thương số với độ chính xác tùy ý, nếu bạn cần điều đó.
jarno
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.