Różnice między wybraną wersją a wersją aktualną.
Nowa wersja | Poprzednia wersja | ||
so:ps_kill [2023/03/20 10:34] jkonczak utworzono |
so:ps_kill [2025/04/06 14:50] (aktualna) jkonczak dodano przykłady |
||
---|---|---|---|
Linia 22: | Linia 22: | ||
<small> | <small> | ||
~~Zadanie.#~~ Zmierz ile czasu trwa wykonanie komendy: | ~~Zadanie.#~~ Zmierz ile czasu trwa wykonanie komendy: | ||
+ | <html><div style="margin-top:-1.2em"></div></html> | ||
* ''openssl dhparam -text 1536'' | * ''openssl dhparam -text 1536'' | ||
* ''dd if=/dev/zero of=/dev/null bs=1 count=2M'' | * ''dd if=/dev/zero of=/dev/null bs=1 count=2M'' | ||
Linia 30: | Linia 31: | ||
</small> | </small> | ||
+ | ++++Przykład:|{{page>so:ps_kill:sleep&inline}}++++ | ||
===== Procesy ===== | ===== Procesy ===== | ||
Linia 109: | Linia 111: | ||
~~Zadanie.#~~ Wyświetl listę wszystkich procesów i wątków w systemie. Znajdź na niej dwa wątki tego samego procesu. | ~~Zadanie.#~~ Wyświetl listę wszystkich procesów i wątków w systemie. Znajdź na niej dwa wątki tego samego procesu. | ||
+ | |||
+ | <small> | ||
+ | ~~Zadanie.#~~ Uruchom polecenie ''%%python -c 'import os; os.popen("true"); os.read(0,1)'%%'' które "wyprodukuje" proces zombie. Znajdź go na liście procesów. | ||
+ | </small> | ||
Lista procesów w formie drzewa może być wyświetlona komendą **''pstree''**. | Lista procesów w formie drzewa może być wyświetlona komendą **''pstree''**. | ||
Linia 118: | Linia 124: | ||
~~Zadanie.#~~ Wyświetl drzewo procesów z pidem każdego procesu. | ~~Zadanie.#~~ Wyświetl drzewo procesów z pidem każdego procesu. | ||
+ | |||
+ | ++++Przykłady - listowanie procesów|{{page>so:ps_kill:examples#ps_pstree&inline&noheader}}++++ | ||
+ | ++++Przykłady - procesy zombie|{{page>so:ps_kill:examples#zombie&inline&noheader}}++++ | ||
Pseudo system plików ''procfs'', zamontowany standardowo w ''/proc'', pozwala | Pseudo system plików ''procfs'', zamontowany standardowo w ''/proc'', pozwala | ||
Linia 150: | Linia 159: | ||
Ale co z swapem i [[https://en.wikipedia.org/wiki/Zram|kompresją wewnątrz RAMu]]… | Ale co z swapem i [[https://en.wikipedia.org/wiki/Zram|kompresją wewnątrz RAMu]]… | ||
- | Zużycie pamięci próbuje sensownie pokazać program ''smem''; sprawdź opcje ''-p'' i ''-t''. | + | Zużycie pamięci próbuje sensownie pokazać program ''smem''; sprawdź opcje ''-p'' i ''-t -k''. |
</small> | </small> | ||
Linia 184: | Linia 193: | ||
Poza programem ''htop'', istnieje wiele narzędzi wzorowanych na ''top'' pokazujących | Poza programem ''htop'', istnieje wiele narzędzi wzorowanych na ''top'' pokazujących | ||
- | stan systemu i procesów. Są to m. in.. ''iotop'' (użycie I/O), ''atop'', ''glances''. | + | stan systemu i procesów. Są to m. in.. ''iotop'' (użycie I/O), ''atop'', ''glances'', ''bottom''. |
</small> | </small> | ||
+ | |||
+ | ++++Przykłady|<asciicast so:tops.cast 80>++++ | ||
=== Wyszukiwanie procesów === | === Wyszukiwanie procesów === | ||
Linia 279: | Linia 290: | ||
</small> | </small> | ||
- | ~~Zadanie.#~~ Uruchom program ''mousepad''. Wyślij do niego sygnał STOP. Sprawdź jak działa mousepad. Potem wyślij do niego sygnał CONT. | + | ~~Zadanie.#~~ Uruchom program ''mousepad'' lub ''glxgears''. Wyślij do niego sygnał STOP. Sprawdź jak działa mousepad. Potem wyślij do niego sygnał CONT. |
<small> | <small> | ||
- | ~~Zadanie.#~~ Uruchom w jednym terminalu komendą ''named -g -c <(:)'' serwer DNS. Z drugiego terminalu wyślij sygnał HUP do ''named''a. | + | ~~Zadanie.#~~ Uruchom w jednym terminalu komendą ''/usr/sbin/named -g -c <(:)'' serwer DNS. Z drugiego terminalu wyślij sygnał HUP do ''named''a. |
</small> | </small> | ||
+ | |||
+ | ++++Przykłady|<asciicast so:pkill.cast 81>++++ | ||
==== Kontrola zadań w powłoce ==== | ==== Kontrola zadań w powłoce ==== | ||
Linia 328: | Linia 341: | ||
~~Zadanie.#~~ Uruchom w tle ''sleep 1h'' oraz ''sleep 15s''. Poczekaj poleceniem ''wait'' na zakończenie drugiego ''sleep''a. | ~~Zadanie.#~~ Uruchom w tle ''sleep 1h'' oraz ''sleep 15s''. Poczekaj poleceniem ''wait'' na zakończenie drugiego ''sleep''a. | ||
+ | |||
+ | ++++Przykłady|<asciicast so:jobs.cast 80>++++ | ||
==== Proces a planiści ==== | ==== Proces a planiści ==== | ||
Linia 372: | Linia 387: | ||
</small> | </small> | ||
+ | |||
+ | ++++Przykłady|<asciicast so:niceness.cast 80>++++ | ||
~~Zadanie.#~~ Uruchom komendę ''sleep 1h'' z niceness 10. Sprawdź jej nicneness (np. w ''ps'' / ''htop''). | ~~Zadanie.#~~ Uruchom komendę ''sleep 1h'' z niceness 10. Sprawdź jej nicneness (np. w ''ps'' / ''htop''). | ||
Linia 378: | Linia 395: | ||
~~Zadanie.#~~ W dwóch konsolach wykonaj ''taskset -pc 0 $$'' (<small>która zmieni listę dozwolonych procesorów tego shella na pierwszy</small>).\\ | ~~Zadanie.#~~ W dwóch konsolach wykonaj ''taskset -pc 0 $$'' (<small>która zmieni listę dozwolonych procesorów tego shella na pierwszy</small>).\\ | ||
- | Następnie w obu wykonaj ''openssl dhparam -text %%$((2**14))%% [//dowolny tekst//]'' | + | Następnie w jednym wykonaj ''openssl dhparam 9000'', w drugim ''openssl dhparam 9001'' |
(<small>co uruchomi procesorożerne szukanie dużych liczb pierwszych</small>).\\ | (<small>co uruchomi procesorożerne szukanie dużych liczb pierwszych</small>).\\ | ||
W trzeciej konsoli uruchom ''htop'' i obserwuj zużycie CPU. \\ | W trzeciej konsoli uruchom ''htop'' i obserwuj zużycie CPU. \\ | ||
Linia 418: | Linia 435: | ||
na procesorach z węzła //x// i pamięci z węzła //y//. | na procesorach z węzła //x// i pamięci z węzła //y//. | ||
- | </small> | ||
- | |||
- | ===== Edycja linii poleceń ===== | ||
- | |||
- | Bash (i wiele innych programów) korzysta do odczytywania komend ze standardowego wejścia biblioteki [[https://en.wikipedia.org/wiki/GNU_Readline|readline]]. | ||
- | \\ | ||
- | Część programów z przyczyn licencyjnych wybiera do tego samego celu [[https://thrysoee.dk/editline/|libedit]]. | ||
- | |||
- | Readline pozwala na wygodną edycję linii poleceń i tworzenie historii poleceń. | ||
- | |||
- | Lista sensownych skrótów klawiszowych do edycji linii poleceń jest tutaj: https://readline.kablamo.org/emacs.html | ||
- | \\ | ||
- | Pełna lista komend i przypisanych do nich skrótów jest w podręczniku systemowym (''man readline'' i ''man bash''). | ||
- | \\ | ||
- | Konwencja zapisu skrótów klawiszowych to: | ||
- | * ''^//x//'' lub ''C-//x//'' to //Ctrl+x// (uwaga:''^//X//'' lub ''C-//X//'' to //Ctrl+Shift+x//), | ||
- | * ''M-//x//'' to zwykle //Alt-x// (patrz: https://en.wikipedia.org/wiki/Meta_key), | ||
- | * ''//a// //b//'' to wciśnięcie po skrócie //a// skrótu //b//. | ||
- | |||
- | Bash domyślnie dopisuje historię wykonanych poleceń do pliku ''~/.bash_history'' w momencie wyjścia z powłoki. | ||
- | \\ | ||
- | Historię (tą z pliku połączoną z bieżącą) można wyświetlić komendą ''history''. (W ''man bash_builtins'' znajduje się opis przełączników.) | ||
- | |||
- | <small> | ||
- | |||
- | Do wygodnego przeglądania historii można też użyć programu [[https://dvorka.github.io/hstr/|hstr]] | ||
+ | Komenda ''lstopo'' z paczki ''[[https://www.open-mpi.org/projects/hwloc/|hwloc]]'' | ||
+ | pozwala zwizualizować topologię zasobów maszyny. | ||
</small> | </small> | ||
- | |||
- | ~~Zadanie.#~~ Jakim skrótem czyści się ekran? | ||
- | |||
- | ~~Zadanie.#~~ Jakimi skrótami wyszukuje się wstecz w historii? | ||
- | |||
- | ~~Zadanie.#~~ Jakim skrótem przesuwa się kursor o jedno słowo? | ||
- | |||
- | <small> | ||
- | |||
- | ~~Zadanie.#~~ Jakim złożeniem skrótów przesuwa się kursor o 5 słów? | ||
- | |||
- | ~~Zadanie.#~~ Jakim skrótów wstawia się ostatnie słowo z poprzedniego polecenia w historii? | ||
- | |||
- | ~~Zadanie.#~~ Jakim złożeniem skrótów wstawia się trzecie od końca słowo z poprzedniego polecenia w historii? | ||
- | |||
- | ~~Zadanie.#~~ Jakim skrótem zamienia się kolejnością to słowo z poprzednim? | ||
- | |||
- | </small> | ||
- | |||
- | ===== Edycja plików w konsoli ===== | ||
- | |||
- | === vi i vim === | ||
- | |||
- | ''vi'' jest często jedynym domyślnie instalowanym edytorem tekstowym. | ||
- | |||
- | ''vim'' to ulepszona wersja ''vi''. | ||
- | |||
- | Żeby nauczyć się ''vim'', uruchom ''vimtutor''. | ||
- | |||
- | |||
- | <small> | ||
- | |||
- | ''vi'' jest wpisane w standard [[https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html|POSIX]]. | ||
- | \\ | ||
- | Jest też częścią minimalistycznych zestawów narzędzi takich jak busybox i toybox. | ||
- | |||
- | </small> | ||
- | |||
- | ~~Zadanie.#~~ Przejdź całą pierwszą lekcję w ''vimtutor''. | ||
- | |||
- | <small> | ||
- | |||
- | ~~Zadanie.#~~ Przejdź pozostałe lekcje w ''vimtutor''. | ||
- | |||
- | === nano === | ||
- | |||
- | Nano jest stosunkowo prostym edytorem tekstowym. | ||
- | |||
- | Podstawowe skróty są wyświetlone na dole ekranu. | ||
- | |||
- | Więcej na: https://www.nano-editor.org/docs.php | ||
- | |||
- | === Emacs === | ||
- | |||
- | [[https://www.gnu.org/software/emacs/|Emacs]] jest [[https://en.wikipedia.org/wiki/Editor_war|odwiecznym rywalem]] ''vim''a w konkurencji programów do edytowania tekstu w konsoli. | ||
- | |||
- | Po wpisaniu ''emacs'' możesz wybrać tutorial skrótem //Ctrl+h t//. | ||
- | |||
- | === Inne === | ||
- | |||
- | * [[https://joe-editor.sourceforge.io/joe]] | ||
- | * mcedit – edytor zintegrowany z [[https://en.wikipedia.org/wiki/Midnight_Commander|mc]] | ||
- | * [[https://micro-editor.github.io/|micro]] | ||
- | * [[https://neovim.io/|neovim]] | ||
- | * [[https://helix-editor.com/|hx]] | ||
- | | ||
- | </small> | ||
- | |||
- | |||
- | |||