Jak ustawić limity dla procesów uruchomionych przez użytkownika w systemie Linux
Jedną z piękności Linuksa jest to, że możesz kontrolować prawie wszystko. Daje to administratorowi systemu dużą kontrolę nad swoim systemem i lepsze wykorzystanie zasobów systemowych.
Chociaż niektórzy mogli nigdy o tym nie pomyśleć, ważne jest, aby wiedzieć, że w systemie Linux można ograniczyć ilość zasobów, z których może korzystać pojedynczy użytkownik i jak długo.
Przeczytaj także: Jak zwiększyć limit liczby otwartych plików w systemie Linux
W tym krótkim temacie pokażemy jak ograniczyć liczbę procesów uruchamianych przez użytkownika oraz jak sprawdzić aktualne limity i je zmodyfikować.
Zanim przejdziemy dalej, musimy zwrócić uwagę na dwie rzeczy:
- Aby modyfikować limity użytkowników, potrzebujesz dostępu root do swojego systemu
- Jeśli planujesz modyfikować te limity, musisz zachować szczególną ostrożność
Aby ustawić limity użytkowników, będziemy musieli edytować następujący plik:
/etc/security/limits.conf
Ten plik służy do zastosowania ulimit utworzonego przez pam_module.
Plik ma następującą składnię:
<domain> <type> <item> <value>
Tutaj zatrzymamy się, aby omówić każdą z opcji:
- Domena – obejmuje nazwy użytkowników, grupy, zakresy guidów itp
- Typ – limity miękkie i twarde
- Element – element, który będzie ograniczony – rozmiar rdzenia, rozmiar pliku, nppro itp
- Wartość – jest to wartość dla danego limitu
Dobrym przykładem limitu jest:
@student hard nproc 20
Powyższa linia ustala sztywny limit maksymalnie 20 procesów w grupie „student”
.
Jeśli chcesz zobaczyć ograniczenia określonego procesu, możesz po prostu „kotnąć” plik ograniczeń w ten sposób:
cat /proc/PID/limits
Gdzie PID to rzeczywisty identyfikator procesu, możesz go znaleźć za pomocą polecenia ps. Aby uzyskać bardziej szczegółowe wyjaśnienia, przeczytaj nasz artykuł, który mówi: Znajdź działające procesy systemu Linux i ustaw limity procesów na poziom użytkownika
Oto przykład:
cat /proc/2497/limits
Przykładowe wyjście
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 32042 32042 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 32042 32042 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Wszystkie linie są w zasadzie oczywiste. Jeśli jednak chcesz znaleźć więcej ustawień, które możesz wprowadzić w pliku limits.conf, możesz zapoznać się z instrukcją dostępną tutaj.
Jeśli masz jakieś pytania lub uwagi, nie wahaj się przesłać ich w sekcji komentarzy poniżej.