LFC Monitorowanie przetwarzania Linux i ustawiaj limity procesu na zasadzie dla użytkownika - Część 14

LFC Monitorowanie przetwarzania Linux i ustawiaj limity procesu na zasadzie dla użytkownika - Część 14

Z powodu ostatnich modyfikacji w celach certyfikacyjnych LFCS skuteczne od 2 lutego 2016, Dodajemy potrzebne artykuły do ​​opublikowanej tutaj serii LFCS. Aby przygotować się do tego egzaminu, zdecydowanie zachęcamy również do przejścia przez serię LFCE.

Monitoruj procesy Linux i ustaw limity procesu na użytkownika - Część 14

Każdy administrator systemu Linux musi wiedzieć, jak weryfikować integralność i dostępność sprzętu, zasobów i kluczowych procesów. Ponadto ustalanie limitów zasobów na zasadzie dla użytkownika musi również być częścią swojego zestawu umiejętności.

W tym artykule zbadamy kilka sposobów zapewnienia, że ​​system zarówno sprzęt, jak i oprogramowanie zachowuje się poprawnie, aby uniknąć potencjalnych problemów, które mogą powodować nieoczekiwane przestoje produkcyjne i utratę pieniędzy.

Statystyki procesorów zgłaszających Linux

Z MPSTAT Możesz wyświetlić czynności dla każdego procesora indywidualnie lub systemu jako całości, zarówno jako jednorazową migawkę lub dynamicznie.

Aby użyć tego narzędzia, musisz zainstalować Sysstat:

# Yum Update && Yum Instal Sysstat [on Centos systemy oparte] # aptitutde aktualizacja && aptitude instaluj sysstat [on Ubuntu Systemy oparte] # Zypper Aktualizacja && Zypper Instal Sysstat [ON OpenSuse systemy] 

Przeczytaj więcej o Sysstat I to narzędzia w nauce Sysstat i jego narzędzia MPSTAT, PIDSTAT, IOSTAT i SAR W LINUX

Po zainstalowaniu MPSTAT, Użyj go do generowania raportów statystyk procesorów.

Do wyświetlenia 3 Globalne raporty dotyczące wykorzystania procesora (-u) dla wszystkich procesorów (jak wskazuje -P Wszystko) w 2-sekundowym odstępie czasu:

# mpstat -p all -U 2 3 
Przykładowy wyjście
Linux 3.19.0-32-generalny (Tecmint.com) Środa 30 marca 2016 r. _x86_64_ (4 CPU) 11:41:07 IST CPU %USR %SYS %Iowait %Iowait %Iowait %Iowait %Iowait %miękki %kradzież %gości %GNICE %Idle 11:41:09 IST All 5 5 5 5 5 5 5 5 5 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %USR %ładny %Syss %Iowait %IWAIT %miękki %kradzież %gości % %bezczynność 11:41:11 IST All 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %USR %ładny %Syss %Iowait %IWAIT %miękki %kradzież %gości % %bezczynność 11:41:13 IST All 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 Średnia: CPU %usr %ładny %Syss %Iowait %IRQ %Soft %kradzież %gości % %GNICE %Idle Średnia: Wszystkie 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Średnia: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Średnia: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 Średnia: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 Średnia: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59 

Aby wyświetlić te same statystyki dla konkretnych procesor (CPU 0 W poniższym przykładzie) użyj:

# mpstat -p 0 -U 2 3 
Przykładowy wyjście
Linux 3.19.0-32-generalny (Tecmint.com) Środa 30 marca 2016 r. _x86_64_ (4 CPU) 11:42:08 IST CPU %USR %SYS %Iowait %Iowait %Iowait %Iowait %Iowait %miękki %kradzież %gości %GNICE %Idle 11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 Średnia: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23 

Wyjście powyższych poleceń pokazuje te kolumny:

  1. procesor: Numer procesora jako liczba całkowita lub słowo wszystko jako średnia dla wszystkich procesorów.
  2. %USR: Procent wykorzystania procesora podczas uruchamiania aplikacji na poziomie użytkowników.
  3. %Ładny: Taki sam jak %USR, Ale z miłym priorytetem.
  4. %Sys: Procent wykorzystania procesora, które miało miejsce podczas wykonywania aplikacji jądra. Nie obejmuje to czasu spędzonego na radzeniu sobie z przerwami lub obsługą sprzętu.
  5. %Iowait: Procent czasu, w którym podany procesor (lub wszystkie) był bezczynny, podczas którego na tym procesorze zaplanowano operację we/wy. Bardziej szczegółowe wyjaśnienie (z przykładami) można znaleźć tutaj.
  6. %IRQ: Procent czasu spędzonego w serwisie przerwania sprzętu.
  7. %miękki: Taki sam jak %IRQ, Ale z przerwami oprogramowania.
  8. %ukraść: Procent czasu spędzonego na mimowolnym oczekiwaniu (kradzież lub skradzione czas), gdy wirtualna maszyna, jako gość, „wygrywa” uwagę hiperwizora, jednocześnie rywalizując o CPU (. Ta wartość powinna być tak mała, jak to możliwe. Wysoka wartość w tym polu oznacza, że ​​maszyna wirtualna utknie - lub wkrótce będzie.
  9. %gość: Procent czasu spędzonego na uruchomieniu wirtualnego procesora.
  10. %bezczynny: Procent czasu, gdy procesory (y) nie wykonywały żadnych zadań. Jeśli obserwujesz niską wartość w tej kolumnie, jest to wskazanie, że system jest umieszczony pod dużym obciążeniem. W takim przypadku będziesz musiał przyjrzeć się bliżej listy procesów, ponieważ omówimy za minutę, aby ustalić, co to powoduje.

Aby umieścić proces procesor pod nieco wysokim obciążeniem, uruchom następujące polecenia, a następnie wykonaj MPSTAT (jak wskazano) w osobnym terminalu:

# dd if =/dev/zero = test.ISO BS = 1G liczba = 1 # mpstat -u -p 0 2 3 # ping -f localhost # przerwanie z ctrl + c po mpstat poniżej ukończy # mpstat -u -p 0 2 3 

Wreszcie, porównaj z wyjściem MPSTAT W normalnych okolicznościach:

Zgłoś statystyki związane z procesorami Linux

Jak widać na powyższym obrazku, CPU 0 był pod dużym obciążeniem podczas pierwszych dwóch przykładów, jak wskazuje %bezczynny kolumna.

W następnej sekcji omówimy sposób zidentyfikowania tych procesów głodnych zasobów, jak uzyskać więcej informacji na ich temat i jak podjąć odpowiednie działania.

Zgłaszanie procesów Linux

Aby wymienić procesy sortowanie ich według użytkowania procesora, użyjemy dobrze znanych Ps polecenie z -EO (Aby wybrać wszystkie procesy z formatem zdefiniowanym przez użytkownika) i --sortować (Aby określić niestandardową kolejność sortowania) Opcje, takie jak:

# ps -eo PID, PPID, CMD,%CPU,%MEM - -SORT = -%CPU 

Powyższe polecenie pokaże tylko Pid, PPID, polecenie związane z procesem oraz odsetek zużycia procesora i pamięci RAM posortowane według odsetka zużycia procesora w kolejności malejącej. Po wykonaniu podczas tworzenia .ISO Plik, oto kilka pierwszych wierszy wyjścia:

Znajdź procesy Linux według użytkowania procesora

Po zidentyfikowaniu procesu zainteresowania (takiego jak ten z PID = 2822), możemy przejść do /proc/pid (/Proc/2822 w takim przypadku) i wykonaj list katalogowy.

Ten katalog jest miejscem, w którym przechowywane jest kilka plików i podkatalogu ze szczegółowymi informacjami o tym konkretnym procesie podczas jego uruchomienia.

Na przykład:
  1. /proc/2822/io Zawiera statystyki IO dla procesu (liczba znaków i bajtów odczytanych i pisanych, między innymi podczas operacji IO).
  2. /proc/2822/attr/prąd pokazuje aktualne atrybuty bezpieczeństwa Selinux w procesie.
  3. /proc/2822/cgroup opisuje grupy kontrolne (w skrócie cgroups), do których należy proces, jeśli włączona jest opcja konfiguracji jądra config_cgroups, którą można zweryfikować:
# cat /boot /config -$ (uname -r) | Grep -i cgroups 

Jeśli opcja jest włączona, powinieneś zobaczyć:

Config_cgroups = y 

Za pomocą cgroups Możesz zarządzać ilością dozwolonych zużycia zasobów na zasadzie procesu, jak wyjaśniono w rozdziałach od 1 do 4 Przewodnik zarządzania zasobami Red Hat Enterprise 7, w rozdziale 9 Przewodnika analizy i strojenia systemu OpenSuse oraz w grupach kontrolnych sekcja Ubuntu 14.04 Dokumentacja serwera.

/Proc/2822/FD jest katalogiem, który zawiera jeden symboliczny link dla każdego deskryptora pliku. Proces otworzył. Poniższy obraz pokazuje te informacje o procesie rozpoczętym w Tty1 (pierwszy terminal) w celu utworzenia .ISO obraz:

Znajdź informacje o procesie Linux

Powyższy obraz pokazuje to stdin (Deskryptor pliku 0), Stdout (Deskryptor pliku 1), I Stderr (Deskryptor pliku 2) są mapowane na /dev/zero, /root/test.ISO, I /dev/tty1, odpowiednio.

Więcej informacji o /Proc można znaleźć w „ /Proc Dokument systemu plików ”prowadzony i utrzymywany przez jądro.org i w podręczniku programisty Linux.

Ustawianie limitów zasobów na zasadzie dla użytkownika w Linux

Jeśli nie jesteś ostrożny i pozwól użytkownikowi uruchomić nieograniczoną liczbę procesów, możesz ostatecznie doświadczyć nieoczekiwanego wyłączenia systemu lub zostać zablokowanym, ponieważ system wchodzi w stan bezużyteczny. Aby temu zapobiec, należy uruchomić limit liczby procesów.

Aby to zrobić, edytuj /itp./bezpieczeństwo/limity.conf i dodaj następujący wiersz na dole pliku, aby ustawić limit:

* Hard NPROC 10 

Pierwsze pole można użyć do wskazania użytkownika, grupy lub wszystkich (*), podczas gdy drugie pole egzekwuje twardy limit liczby procesu (NPROC) 10. Aby zastosować zmiany, wylogowanie się i powrót jest wystarczające.

Zobaczmy zatem, co się stanie, jeśli pewien użytkownik inny niż root (albo uzasadniony lub nie) próbuje uruchomić bomb bomby skorupowej. Gdybyśmy nie wdrożyli limitów, początkowo uruchomiłoby to dwa instancje funkcji, a następnie powielałoby każdą z nich w niekończącej się pętli. Tak więc w końcu doprowadziłoby to system do pełzania.

Jednak wraz z powyższym ograniczeniem bomba widelca nie odniesie sukcesu, ale użytkownik nadal zostanie zablokowany, dopóki administrator systemu nie zabije powiązanego procesu:

Run Shell Fork Bomb

WSKAZÓWKA: Inne możliwe ograniczenia możliwe przez Ulimit są udokumentowane w limity.conf plik.

Linux Inne narzędzia do zarządzania procesami

Oprócz omawianych wcześniej narzędzi, administrator systemu może również potrzebować:

A) Zmodyfikuj priorytet wykonania (wykorzystanie zasobów systemowych) procesu za pomocą Renice. Oznacza to, że jądro przydzieli mniej więcej zasoby systemowe na proces w oparciu o przypisany priorytet (liczba powszechnie znana jako „uprzejmość”W zakresie od -20 Do 19).

Im niższa wartość, tym większy priorytet wykonania. Zwykli użytkownicy (inni niż root) mogą tylko modyfikować uprzejmość procesów, które posiadają do wyższej wartości (co oznacza niższy priorytet wykonania), podczas gdy root może modyfikować tę wartość dla dowolnego procesu i może ją zwiększyć lub zmniejszyć.

Podstawowa składnia Renice jest następująca:

# Identyfikator Renice [-n] 

Jeśli argument po nowej wartości priorytetu nie jest obecny (pusty), domyślnie jest on ustawiony na PID. W takim przypadku uprzejmość procesu z PID = identyfikator jest ustawione na .

B) Przerwać normalne wykonywanie procesu w razie potrzeby. Jest to powszechnie znane jako „zabijanie” procesu. Pod maską oznacza to wysłanie procesu sygnał do prawidłowego zakończenia wykonania i zwolnienia wszelkich używanych zasobów w uporządkowany sposób.

Aby zabić proces, użyj zabić polecenie w następujący sposób:

# Zabij pid 

Alternatywnie możesz użyć Pkill do zakończenia wszystkich procesów danego właściciela (-u), lub właściciel grupy (-G), lub nawet te procesy, które mają wspólny PPID (-P). Po tych opcjach mogą następować reprezentacja liczbowa lub nazwa faktyczna jako identyfikator:

# identyfikator PKILL [opcje] 

Na przykład,

# pkill -g 1000 

Zabije wszystkie procesy należące do grupy z GID = 1000.

I,

# pkill -p 4993 

Zabije wszystkie procesy, których PPID jest 4993.

Przed uruchomieniem Pkill, Warto przetestować wyniki pgrep Po pierwsze, być może używa -L Opcja również wymienić nazwy procesów. Wymaga tych samych opcji, ale zwraca tylko PIDS procesów (bez podejmowania dalszych działań), które zostałyby zabite, gdyby byłoby zabite Pkill Jest używane.

# pgrep -l -U gacanepa 

Jest to zilustrowane na następnym obrazie:

Znajdź procesy uruchomione użytkownika w Linux

Streszczenie

W tym artykule zbadaliśmy kilka sposobów monitorowania wykorzystania zasobów w celu zweryfikowania integralności i dostępności krytycznych komponentów sprzętu i oprogramowania w systemie Linux.

Nauczyliśmy się również, jak podejmować odpowiednie działania (albo dostosowując priorytet wykonania danego procesu lub przez jego zakończenie) w nietypowych okolicznościach.

Mamy nadzieję, że pojęcia wyjaśnione w tym samouczku były pomocne. Jeśli masz jakieś pytania lub komentarze, skontaktuj się z nami za pomocą poniższego formularza kontaktowego.

Zostań certyfikowanym administratorem systemu