Zarządzanie listami procesowymi i automatyczne rozwiązanie procesu

Zarządzanie listami procesowymi i automatyczne rozwiązanie procesu

W miarę wzrostu optymalnego wykorzystania/maksymalizacji, coraz ważniejsze staje się dobrze zarządzanie procesami. Jednym z aspektów tego jest automatyczne zakończenie procesu. Kiedy proces stał się nieuczciwy i zużywa zbyt dużo zasobów, można go automatycznie zakończyć.

Jest to szczególnie odpowiednie dla serwerów, które mają wiele procesów tymczasowych lub jednorazowych. Jest również odpowiedni do testowania serwerów, które przeprowadzają wiele prób testowych i gdy takie badania testowe okazują się niestabilne lub powodują, że badane oprogramowanie zachowuje się nieregularnie (na przykład przy użyciu zbyt dużej pamięci)

W tym samouczku się nauczysz:

  • Jak zarządzać procesami w zautomatyzowany sposób
  • Jakie zasoby możesz chcieć monitorować i dlaczego
  • Przykładowy kod pokazujący, w jaki sposób automatyczne zakończenie procesu może działać w przypadku problemów z mnóstwem pamięci
Zarządzanie listami procesowymi i automatyczne rozwiązanie procesu

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu Linuksa
Oprogramowanie Wiersz poleceń Bash, system oparty na Linuksie
Inny Wszelkie narzędzie, które nie jest zawarte w skorupce Bash domyślnie można zainstalować za pomocą za pomocą sudo apt-get instal instal narzędzie (Lub Mnij instalacja dla systemów opartych na Redhat)
Konwencje # - Wymaga wykonywania Linux -Commands z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-Wymaga wykonania Linux-commands jako zwykłego niepewnego użytkownika

Za dużo pamięci! Lub lepiej, za mało pamięci!

Istnieją dwa główne zasoby, na które prawdopodobnie zawsze chcesz mieć oko, w zależności od oprogramowania, które jest używane gdzie indziej na serwerze, a mianowicie zużycie pamięci i przestrzeni dysku. Użycie procesora może również pojawić się na zdjęciu, ale jest to nieco inne niż inne. Powodem jest to, że - kiedy zabraknie miejsca na dysku lub poza przestrzenią pamięci, twój serwer zacznie grać.

Możesz uzyskać nieokreślone zachowanie z powodu braku miejsca na dysku, a jeśli zabraknie Ci pamięci, zabójca OOM (z pamięci automatycznej procesu silnika zabijania) może rozpocząć i zabić niektóre procesy i tak dalej.

Z drugiej strony, wraz z procesorem, nawet jeśli oprogramowanie działające w innym miejscu na serwerze ma maksymalnie procesor, Twój serwer będzie działał. Jeśli jest to prawdziwy program do ściągania procesora, może być zbyt wolny, ale w większości przypadków nadal będziesz mógł przynajmniej wpisać niektóre polecenia.

W tym artykule koncentruje się na zarządzaniu procesem manipulacji: automatyczne zakończenie procesów, które zużywają zbyt dużo pamięci. Najpierw przyjrzyjmy się, w jaki sposób możemy monitorować użytkowanie procesu pamięci:

$ ps -eo pid, pmem - -sort -rss | głowa -n10 Pid %mem 406677 19.5 373013 2.1 406515 2.0 406421 1.9 2254 1.8 406654 1.8 406554 1.7 406643 0.9 16622 0.7 


Tutaj poprosiliśmy Ps Aby stworzyć listę 10 najlepszych pidów. Wskazaliśmy, że chcemy zobaczyć wszystkie procesy (-mi) i dla każdego procesu chcemy zobaczyć identyfikator procesu (-O pid) oraz odsetek pamięci, którą zużywa (-O PMEM) lub łącznie (z opcjami łącznymi: -EO PID, PMEM).

Następnie poprosiliśmy o zaprezentowanie listy (--sortować) i ustaw opcję RSS (-Rss) Jako specyfikacja długiego formatu. Następnie przechwytujemy 10 najlepszych wyników za pomocą głowy -N10. Jeśli chcemy zobaczyć, jakie procesy używają pamięci, możemy również dodać ,comm do PID, PMEM Lista lub po prostu używamy Ps -ef | Grep pid gdzie PID jest liczbą wymienioną w pierwszej kolumnie Ps Wyjście, aby zobaczyć pełne szczegóły procesu.

Teraz zautomatyzujmy to w taki sposób, aby procesy wykorzystujące więcej niż 10% pamięci są automatycznie zakończone.

Ostrzeżenie: nie uruchamiaj tego na żadnym komputerze bez pełnego zrozumienia, co zrobi i jak to działa. Informacje tutaj są dostarczane w dowolnym zakresie, bez żadnych gwarancji. Możesz zakończyć niektóre procesy, których nie chciałeś lub nie powinno być zakończone.

# ps -eo pmem, pid - -sort -rss | grep '^[\ t]*[1-9] [0-9] \.'| awk 'drukuj 2 $' | xargs -i  zabójcy -9  

Po pierwsze, zamierzamy to wykonać jako root, aby upewnić się, że mamy wystarczające przywileje, aby zabić każdy odpowiedni proces. Zauważ, że zamieniliśmy PMEM (Procent pamięci) i pid (identyfikator procesu) w pobliżu. To sprawia, że ​​użycie wyrażenia regularnego jest nieco łatwiejsze Grep. Nasz wyrażenie regularne GREP działa w ten sposób: po pierwsze, poszukaj miejsca () Lub ([…]) Karta (\T), zero lub więcej (*) Czasy.

Następnie poszukaj numeru 1 Do 9, przynajmniej raz (przynajmniej raz jest częstotliwością domyślną, więc nie ma podobnego symbolu * Jest używane!). To ma uchwycić dowolną liczbę z 10 (zaczynać z 1) Do 99 (zaczynać z 9). Następnie szukamy innego 0 Do 9, W sumie szukamy/grepppus liczb 10 Do 99. Podążamy za tym dosłowną kropką (\., Do nie używać . tutaj jako pojedyncza kropka bez prefiksów Każda postać zamiast dosłownej kropki!) Aby upewnić się, że schwytamy tylko przed punktem dziesiętnym.

Następnie bierzemy tylko wyjście drugiej kolumny (wydrukuj 2 $, z 2 USD bycie drugą kolumną, 1 USD Pierwszy itp.) używając Awk. Wreszcie przekazujemy to do Xargs i napisz Zabij -9 w czystym i łatwym do zrozumienia format. Moglibyśmy to napisać za pomocą stabilnej składni, ale to jest ładne, czyste i jasne. -I Wskazuje, czego użyjemy jako nasze zastępowanie (zastępując wszelkie występowanie tego samego w poleceniu Xargs otrzymał z rury), w tym przypadku . Polecam też Ogólnie jako bezpieczna wymiana/wymień ciąg.

Jeśli chcesz dowiedzieć się więcej o Xargs, Zapoznaj się z naszymi Xargs dla początkujących z przykładami i multi wątku Xarg z przykładami artykułów.

W rezultacie uruchomienia polecenia jest to, że wszelkie procesy, które używają więcej, wówczas 10% pamięci zostaną natychmiast zakończone z silnym Zabij -9 Komenda. Jeśli chcesz zautomatyzować to samo, możesz umieścić to w choć prawda; zrób… skończone pętla, po prostu zastąpienie z powyższym poleceniem lub możesz dodać to do swojego crontab lub innych wcześniej istniejących skryptów monitorujących.



Uważaj na korzystanie z tych poleceń, nie jest to bez ryzyka. Staraj się zrozumieć, co robisz przez cały czas! Możesz także przedstawić 1 minutę spać Aby uniknąć wbijania serwera z poleceniami:

# Chociaż prawda; DO PS -EO PMEM, PID - -SORT -rss | grep '^[\ t]*[1-9] [0-9] \.'| awk 'drukuj 2 $' | xargs -i  zabójcy -9 ; sen 60; zrobione 

W ten sposób monitorujemy wszystkie procesy w pamięci regularnie i/lub na bieżąco i kończymy wszelkie procesy, które zaczynają być nieuczciwe, używaj do dużej pamięci itp.

Wniosek

W tym artykule przyglądamy się zarządzaniu procesami w zautomatyzowany sposób, używając niestandardowych sformatowanych Ps wyjście, a także Xargs I zabić polecenia. Zbadaliśmy również, jakie zasoby do monitorowania i dlaczego. Wreszcie wykazaliśmy, w jaki sposób automatyczne zakończenie procesu może działać w przypadku problemów z mnóstwem pamięci w kodzie. Cieszyć się!

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Najlepsze gry terminalowe w Linux
  • Porównanie Linux Apache Prefork vs Pracowni
  • GNU/Linux Ogólne Przewodnik po rozwiązywaniu problemów dla początkujących
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Bash Tła zarządzanie procesami
  • Jak propagować sygnał do procesów dziecka z bash…