podaje informacje o działających procesach
Postać: ps [opcje]
Opcje polecenia ps moga byc podawane w różnej formie: poprzedzone myślnikiem (w stylu UNIX) np. ps -l,
bez myślnika (styl BSD), np. ls aux lub poprzedzone dwoma myślnikami (styl GNU), np. ps --help. W razie niepewności zajrzyj do dokumentacji man ps.
Najważniejsze opcje:
-l wyświetla więcej informacji o procesach
-f format ekstra-pełny
-A lub -e wszystkie procesy
-U numer_użytkownika lub U, lub --user procesy uruchomione przez danego użytkownika
u format zorientowany na użytkownika (m.in. informacja o zajętości CPU i pamięci)
f wyświetl drzewo procesów
Przykład:
$ ps
PID TTY TIME CMD 3873 pts/2 00:00:00 su 3875 pts/2 00:00:00 bash 3893 pts/2 00:00:00 tcsh 3899 pts/2 00:00:00 vim 3904 pts/2 00:00:00 ps
PID (ang. Process ID) jest liczbą jednoznacznie identyfikującą proces w systemie. TTY to nazwa terminala z którego zostało uruchomione polecenie CMD.
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 1002 3873 3211 0 76 0 - 710 wait pts/2 00:00:00 su 0 S 1002 3875 3873 0 75 0 - 1271 wait pts/2 00:00:00 bash 0 S 1002 3893 3875 0 75 0 - 908 rt_sig pts/2 00:00:00 tcsh 0 T 1002 3899 3893 0 78 0 - 997 finish pts/2 00:00:00 vim 0 R 1002 3945 3893 0 76 0 - 581 - pts/2 00:00:00 ps
Oznaczenia: UID - numer użytkownika, PPID - numer procesu rodzica (procesu z którego wywodzi się dany proces), PRI - priorytet, NI - wartość parametru NICE ustawianego poleceniem nice
lista procesów w czasie rzeczywistym
Postać: top [opcje]
Polecenie top prezentuje listę działających procesów wraz z najważniejszymi informacjami na temat obciążenia systemu (zajętość pamięci i obciążenie CPU). Program udostępnia wiele skrótów klawiszowych pozwalających na sortowanie i filtrowanie listy procesów:
wyświetla listę skrótów klawiszowych
zabija wskazany proces
zmienia parametr NICE wskazanego procesu
wybór pól prezentujących informacje o procesach
wyjście z programu
Polecenie:
$ top -u username
wyświetla listę procesów wskazanego użytkownika.
lista procesów w czasie rzeczywistym
Postać: htop [opcje]
Jest to bardziej przyjazna dla użytkownika wersja programu top
wyświetla drzewo procesów
Postać: pstree [opcje]
Najważniejsze opcje:
-p dodaje numery PID
-H PID wyróżnia podany proces (-h aktualny proces)
zabija proces
Postać: kill [-sygnal] PID...
Polecenie wysyła sygnał do procesu o numerze PID. Jeżeli nie sprecyzujemy rodzaju sygnału wówczas kill wysyła sygnał SIGINT przerywający działanie procesu.
Opcja -l wyświetla listę sygnałów jakie można przesłać do procesów (więcej na ten temat w dokumentacji man 7 signal)
Najważniejsze sygnały:
2 SIGINT przerwanie procesu (ten sygnał jest wysyłany do procesu gdy wciśniemy Ctrl+C)
9 SIGKILL sygnał “zabicia” procesu
19 SIGSTOP zawieszenie procesu (Ctrl+Z)
18 SIGCONT wznowienie zatrzymanego procesu
$ kill -9 3899
wysyła sygnał KILL o numerze 9 do podanego procesu
$ kill -9 -1
wysyła sygnał KILL do wszystkich procesów (uwaga: spowoduje wylogowanie, gdyż zamknięty zostanie także proces powłoki)
$ kill -SIGSTOP 4008
zawiesza działanie procesu
$ kill -18 4008
wznawia działanie zawieszonego procesu
Wbudowane w powłokę Bash polecenie kill umożliwia dodatkowo wysyłanie sygnałów do procesów identyfikowanych za pomocą numeru zadania JID (zobacz polecenie jobs)
zabija procesy o podanej nazwie
Postać: killall [-s sygnal] nazwa ...
Przykład:
$ killall sleep
wyświetla numery PID procesów pasujących do wzorca
Postać: pgrep [opcje] wyrażenie
Najważniejsze opcje:
-u użytkownik zawęża wyniki tylko do procesów danego użytkownika.
-l dodaj informację o nazwie procesu
Przykład:
$ pgrep -u marek sleep
wyświetli numery procesów uruchomionych przez użytkownika marek zawierających w nazwie sleep.
$ kill -9 $(pgrep -u marek sleep)
wyśle syknał SIGKILL do procesów uruchomionych przez użytkownika marek zawierających w nazwie sleep.
wysyła sygnał do procesów o nazwach pasujących do wzorca
Postać: pgrep [-sygnał] [opcje] wyrażenie
Polecenie to rozszerza działanie pgrep o możliwość wysłania sygnału do pasujących procesów.
Przykład:
$ pkill -9 -u marek sleep
wyśle sygnał SIGKILL do procesów uruchomionych przez użytkownika marek zawierających w nazwie sleep.
podaje status procesów uruchomionych w bieżącej powłoce
Postać: jobs [-l]
Przykład:
$ jobs
[1]- Done sleep 100 [2]+ Stopped vim
W nawiasie kwadratowym podany jest numer zadania JID (ang. Job ID), obok stan procesu (zatrzymany, uruchomiony, itp.).
Opcja -l wyświetla dodatkowo PID procesu.
uruchamia zawieszone zadanie w tle
Postać: bg [JID…]
Gdy nie podano numery zadania to wznawiane jest ostatnio zawieszone zadanie.
Przykład wznowienia zadania o numerze JID 2:
$ bg %2
uruchamia zatrzymane zadanie na pierwszym planie
Postać: fg [JID]
Przykład:
$ fg %2
spowodowałoby przeniesienie programu vim z poprzedniego przykładu na pierwszy plan
uruchamia program z zadanym priorytetem (zwiększoną łagodnością)
Postać: nice -priorytet [opcje] polecenie
Przykład:
$ nice -19 emacs
uruchomi program emacs z parametrem NICE równym 19. Im większa wartość NICE tym mniej zasobów będzie pochłaniało wykonanie procesu, czas jego trwania ulegnie wydłużeniu dając pierwszeństwo procesom z mniejszym priorytetem. Domyślnie procesy uruchamiane są z łagodnością 0. Maksymalna wartość tego parametru w wielu systemach Linux to 19. Wartości od -1 do -19 zarezerwowane są dla administratora (pozwalają uruchomić proces o zwiększonym priorytecie)
pozwala zwiększyć priorytet działającego procesu
Postać: renice priorytet [PID] [-u użytkownik]
Opcja -u pozwala zmienić priorytet wszystkich działających procesów dla wskazanego użytkownika.
Przykład:
$ renice 19 4343 -u student
zwiększy priorytet (parametr NICE) do 19 procesu o numerze PID 4343 oraz wszystkim procesom uruchomionym przez użytkownika student .
Ze względów bezpieczeństwa tylko administrator może zmniejszać wartość parametru NICE procesów, zwykli użytkownicy mogą wyłącznie zwiększać ten parametr.
uruchamia proces o zadanym czasie
Postać: at [-f plik] CZAS
Polecenie lub lista poleceń do uruchomienia wczytywana jest ze standardowego wejścia, lub po opcji -f możemy podać nazwę pliku w który zawarta jest lista poleceń do uruchomienia. CZAS może być wyrażony w wielu formach (po szczegóły zajrzyj do podręcznika man at). Wynik działania polecenia wysyłany jest
do skrzynki pocztowej użytkownika.
Przykład:
$ at 10:21 -f plik
spowoduje uruchomienie poleceń zawartych w pliku plik o godzinie 10.21
$ echo ls | at now +1minutes
spowoduje uruchomienie polecenia ls dokładnie za minutę
wyświetla listę zadań ustawionych do wykonania za pomocą polecenia at
Postać: atq
usuwa z kolejki zadanie o podanym numerze
Postać: atrm numer_zadania
program zarządzający tabelami demona cron, który służy do wykonywania zaplanowanych w czasie operacji
Postać: crontab [-e|-l|-r]
-Opcje:
--e edycja tabeli zadań
--r usunięcie bieżącej tabeli zadań
--l wyświetla bieżącą tabele zadań
–Tabela zadań powinna zawierać w każdej linii wpis następującej postaci:
MINUTY GODZINY DNI MIESIACE DNI_TYGODNIA polecenie
gdzie MINUTY to liczba z zakresu 0-59, GODZINY - liczba z zakresu 0-23, DNI - liczba z zakresu 1-31, MIESIACE od 1 do 12, DNI_TYGODNIA od 1 do 7.
Użycie gwiazdki * zamiast liczy oznacza dowolną wartość.
Przykładowa tabela zadań:
30 18 * * * rm -f ~/tmp 30 0 1 1,6,12 * mail student@fizyka.umk.pl < wiadomosc.txt
Powyższy zapis oznacza, że codziennie o godzinie 18:30 wykonywana jest komenda usuwająca katalog /tmp, zaś 30 minut po północy w pierwszy dzień stycznia, czerwca i grudnia wysyłany jest za pomocą poczty elektronicznej plik wiadomosc.txt do podanego użytkownika. Więcej szczegółów w podręczniku demona cron i polecenia crontab.
uruchamia polecenie, które nie zostanie przerwane w momencie wylogowania
Postać: nohup polecenie
Przykład:
$ nohup sleep 1000 &
identyfikuje procesy używające plików lub gniazd sieciowych
Postać: fuser [opcje] plik...
Polecenie fuser wyświetla listę numerów procesów PID, które wykorzystują w danym momencie wskazany plik, system plików lub gniazdo sieciowe.
Najważniejsze opcje:
-k zabij procesy zamiast wypisywać ich numery PID
-u podaj nazwę właściciela procesu wraz z numerem PID
-v wyświetl więcej szczegółów na temat procesów
Przykład:
$ fuser /home
wypisze numery procesów używających plików w katalogu /home
uruchamia program z ograniczeniem czasowym
Postać: timeout czas_trwania polecenie
Czas trwania polecenia to liczba sekund.
Przykład:
$ timeout 10 top
uruchomi polecenie top, które po 10 sekundach zakończy swoje działanie.
Czas trwania można również wyrazić w innych jednostkach dodając odpowiedni przyrostek do liczby podanej w argumencie polecenia, gdzie s - sekundy, m - minuty, h - godziny, d - dni.
$ timeout 1m top
uruchomi top na czas jednej minuty.
powtarza uruchomienie programu z określoną częstością
Postać: watch [opcje]polecenie
Domyślnie program uruchamiany jest co 2 sekundy a wynik działania jest odświeżany na terminalu, dzięki czemu możliwe jest monitorowanie zmian wyniku polecenia.
Monitorowanie trwa bez końca, aby przerwać działanie należy wcisnąć Ctrl+C
Przykład:
$ watch ls -lt
wyświetla co 2 sekundy aktualną zawartość bieżącego katalogu z plikami umieszczonymi w kolejności czasu modyfikacji.
Opcje:
pozwala określić interwal odświeżania (czas w sekundach)
wyróżnia różnice jakie zachodzą w wyjściu programu wyróżniane
dokonuje pomiaru czasu działania procesu
Postać: time polecenie
Po zakończeniu działania polecenia wyświetlane są wartości czasu rzeczywistego (real), systemowego (sys) i użytkownika (user) zajęte przez proces.
$ time sleep 1
real 0m1.002s user 0m0.002s sys 0m0.000s
Inne przydatne polecenia: iotop, pidof, lsof