Dowiedz się, jakie procesy zapisują na dysku twardym


31

W moim Lenovo T400 i Ubuntu lampka zapisu na dysku twardym wciąż miga. Zastanawiałem się, czy w systemie Linux można dowiedzieć się, jakie procesy wykonują operacje we / wy na dysku twardym? Podobnie jak wcześniej top, możesz dowiedzieć się, które procesy wykorzystują najwięcej procesora i pamięci.

Odpowiedzi:


41

Iotop to dobre narzędzie do tego, czego chcesz. Pozwala także na wyświetlenie skumulowanej liczby operacji we / wy na dowolnym z funkcji ODCZYT DYSKU, ZAPIS DYSKU, SWAPIN i IO (całkowity procent). Odbywa się to poprzez sprytny interfejs:

  • Po prostu naciskasz aklawiaturę, a to posortuje najbardziej głodne procesy na górze.
  • Odwracając zamówienie, wystarczy nacisnąć r.
  • Jeśli chcesz sortować według innych kolumn, po prostu naciśnij lewy / prawy klawisz.

Jak top, prezentacja jest dość zajęty. Inną rzeczą jest to, że nie ma niezliczonych opcji top(np. Nie mogę ukryć żadnej kolumny, w której mnie nie interesuje), ale narzędzie jest wystarczająco dobre do określonego celu.


3
Powertop jest również przydatny, aby znaleźć, co zużywa baterię w laptopie; iotop jest nadal pierwszym miejscem, w którym można uzyskać dostęp do dysku.
Gilles „SO- przestań być zły”

można przekazać -o( --only), aby odfiltrować wszystkie zadania, które nie wykonują żadnych operacji we / wy. To sprawia, że ​​lista jest mniej zatłoczona
Marcin Orłowski

15

Możesz użyć lsof( man lsof ). Poniższe spowoduje zwrócenie listy wszystkich plików, które można otworzyć:

lsof | grep -e "[[:digit:]]\+w"

1
Jakie pliki są otwarte i jakie pliki są faktycznie dostępne, to dwie różne rzeczy.
psusi

@psusi Bardzo prawdopodobne jest, że „otwarty plik” do zapisu. Ponadto można uzyskać więcej informacji, ucząc się lsof na jego stronie podręcznika.
James Sumners

5
Pliki otwarte do zapisu mogą w pewnym momencie zostać zapisane, ale niekoniecznie teraz. Wiele plików jest otwartych, ale rzadko są zapisywane. Z drugiej strony, zapisywane pliki mogą być szybko otwierane i zamykane, więc nie będą wyświetlane w lsof. Tak czy inaczej, niewiele pomaga dowiedzieć się, jaki proces aktualnie zapisuje się na dysku.
psusi

Powyższe wpolecenie powoduje grep dla plików, które są otwarte tylko do zapisu . Pliki otwarte do zapisu i odczytu ( u) nie będą wyświetlane, ale można je również zapisać. Jeśli chcesz, aby pliki były otwarte do zapisu oraz do odczytu i zapisu, wierzę, że tego właśnie szukasz:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
Martijn

1
@Martijn Będziesz chciał użyć, grep -e**w**aby uniknąć dopasowania [0-9]\+[wu]w innych kolumnach


2

Szczególnie w przypadku niskiej aktywności dysku konieczne jest użycie iotop w trybie wsadowym, aby zapobiec szybkiemu znikaniu krótkich linii dostępu. Odpowiedź: Jak zalogować system plików do odczytu / zapisu według nazwy pliku w systemie Linux? pokazuje, jak to zrobić.

Jak dotąd iotopjest to najlepsze ogólne rozwiązanie. Poniższe polecenie zapewnia dane wyjściowe wszystkich procesów korzystających z dysku w czasie rzeczywistym.

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

Po uzyskaniu identyfikatora procesu możesz także znaleźć pliki za pomocą

 lsof -p $PID

1
Czym różni się ta odpowiedź od powyższych (bardzo starych) odpowiedzi? Dobrze jest odpowiedzieć na stare pytanie, aby wyjaśnić, w jaki sposób Twoja odpowiedź różni się od poprzednich odpowiedzi. Pomaga to czytelnikowi w sortowaniu odpowiedzi.
Stephen Rauch,

Dzięki za zwrócenie na to uwagi. Zredagowałem tę odpowiedź, biorąc pod uwagę twój komentarz.
Frank Breitling,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.