Làm thế nào để người ta tìm thấy các tệp đang chiếm 80% dung lượng trên máy chủ web Linux?


15

Các ổ đĩa liên tục được lấp đầy. Bạn đã săn lùng tất cả các tập tin dự phòng và ngẫu nhiên bạn có thể. grep'd cho các tập tin coredump và thậm chí loại bỏ một số bản sao lưu không cần thiết ...

Điều gì sẽ là bước tiếp theo của bạn.

Máy chủ thực tế được đề cập có 10GB tệp trang web và HĐH không nên lấy quá 10 GB, vậy làm thế nào để bạn theo dõi những gì lấp đầy ổ 50 GB (ảo)?


Câu trả lời:


9

Tôi thấy ncdu ( http://dev.yorhel.nl/ncdu ) khá hữu ích cho việc này.


Hoàn hảo. Giao diện rực rỡ và khả năng thao tác các tập tin từ bên trong chương trình. Chúc mừng!
Gareth

23

Chắc chắn có nhiều cách phức tạp hơn, nhưng cách tôi nhớ là

du --max-sâu = 1 -h /

Bây giờ lấy thư mục sử dụng hầu hết dung lượng (du --max-depth=1 -h /yourdir)và đi sâu hơn cho đến khi bạn tìm thấy thủ phạm của mình.
Nếu muốn đầu ra của bạn được sắp xếp theo kích thước và không quan tâm đến định dạng có thể đọc được, bạn cũng có thể làmdu --max-depth=1 /your_dir | sort -n


Vâng. Tôi làm khá nhiều điều tương tự "du -S | sort -n -r | less". Tôi thực sự rất thích xem một chương trình trông giống như htop và cron'd như mlocate nhưng khi chạy đã cung cấp cho bạn thông tin chính xác và hiện đại về các tệp trên hệ thống của bạn.
Gareth

1
Thay vì bắt đầu từ / trên máy chủ web, hãy thử bắt đầu từ http_root. Nếu không có thành công ở đó thì người ta có thể đi '/'. Thư mục chạy du trên '/' sẽ mất nhiều thời gian.
Saurabh Barjatiya

4

Tôi sử dụng baobab chương trình Gnome. Bạn có thể chạy nó trên máy tính để bàn của bạn và t có thể kết nối qua SSH với máy chủ. Nó cho thấy một bản đồ đồ họa dễ đọc của việc sử dụng không gian đĩa. Nó được cài đặt dưới Gnome là "Trình phân tích sử dụng đĩa"



2

df -k cho thấy fs nào là vấn đề. Sau đó, cd đến thư mục cấp cao nhất cho nó và chạy du -xk | sắp xếp -n | đuôi -25 này sẽ hiển thị 25 thư mục hàng đầu, được sắp xếp, cho mặt trời 9 hoặc sớm hơn, thay thế x bằng một d.


Vâng, tương tự như những gì tôi vừa đề cập trong câu trả lời của @Marie Fischer. Tại sao sử dụng -k (kích thước khối) thay vì -h cho con người?
Gareth

-k được sử dụng để tất cả các kích thước được báo cáo bằng kb. Điều này hữu ích cho việc sắp xếp khác sẽ đặt 10kb trước 20mb trong khi sắp xếp.
Saurabh Barjatiya

1

Lưu ý rằng các tệp có thể bị xóa trong khi vẫn được ghi vào, vì vậy chúng sử dụng không gian đĩa trong khi quá trình tạo của chúng đang chạy, nhưng không có tên tệp.

Điều này làm cho nó không bị ràng buộc với các công cụ thông thường - bạn có thể sử dụng lsof để điều tra quá trình nào có tệp mở.


Tôi sử dụng /usr/sbin/lsof | grep deletedđể có được điều này.
Kevin M

0

Nếu bạn có thể chạy phần mềm trên hệ thống, thì xdiskusage sẽ hiển thị bằng đồ họa cho bạn những thư mục / tệp nào đang chiếm dung lượng của bạn. Vô cùng hữu ích.

Tôi tin rằng KDE có chứa một cái gì đó tương tự.

Nếu nó chỉ có văn bản và bạn không thể cài đặt phần mềm bổ sung, thì việc sử dụng sáng tạo ducó thể cũng sẽ đưa bạn đến đó.


0
  1. cd vào thư mục nhà của máy chủ web (thư mục chính của apache)
  2. chạy lệnh "du -a | head -30 | sort -nr"
  3. nó sẽ cung cấp cho bạn 30 tệp / thư mục tiêu thụ đĩa lớn nhất
  4. bạn có thể tìm thấy chúng và xóa (nếu không hữu ích)

Điều này sẽ không hoạt động trừ khi bạn thay đổi thứ tự headsort. Ngoài ra, bạn nên sử dụng các tính năng định dạng.
kasperd

0

Bạn có thể sử dụng các lệnh sau để tìm tệp hoặc thư mục nào chiếm quá nhiều dung lượng.

Ví dụ: để hiển thị 20 thư mục lớn nhất trong thư mục hiện tại, hãy sử dụng một trong các thư mục sau:

du -ah . | sort -rh | head -20

hoặc là:

du -a . | sort -rn | head -20

Đối với 20 tệp lớn nhất trong thư mục hiện tại (đệ quy):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

hoặc với kích thước có thể đọc được của con người:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Lệnh thứ hai để hoạt động trên OSX / BSD đúng cách (như sortkhông có -h), bạn cần cài đặt sorttừ coreutils. Sau đó thêm thư mục bin vào của bạn PATH.

Bạn có thể định nghĩa các lệnh này dưới dạng bí danh (ví dụ: thêm vào các tệp RC của bạn như .bash_profile):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Sau đó chạy bighoặc big-filesbên trong các thư mục mà bạn nghĩ sẽ diễn ra (ví dụ: trong /home).


0

đây là một cái gì đó tôi đã cùng nhau tìm ra một số quy trình giả mạo trên các máy chủ cơ sở dữ liệu của chúng tôi: rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

nó hơi độc và không mạnh lắm, nhưng nó hoạt động rất tốt:

  1. tạo một danh sách cây đệ quy của thư mục hiện tại
  2. đợi 5 giây
  3. tạo một danh sách khác
  4. so sánh hai đầu ra
  5. fuser các tập tin đã thay đổi kích thước và
  6. ps -lFp sẽ hiển thị các tệp mà quá trình sở hữu chúng

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
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.