From c307e3e744a39d6f79912629a8e43bd971c16b9d Mon Sep 17 00:00:00 2001 From: piccihud Date: Sat, 11 Mar 2023 17:03:31 +0100 Subject: [PATCH] add processes.md --- processes.md | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 processes.md diff --git a/processes.md b/processes.md new file mode 100644 index 0000000..9071628 --- /dev/null +++ b/processes.md @@ -0,0 +1,239 @@ +# Monitorare i processi di sistema + +Il comando `ps` visualizza un elenco dei processi avviati dall'utente che ha eseguito il comando. + +```bash +ps + + PID TTY TIME CMD + 59401 pts/2 00:00:00 bash + 59409 pts/2 00:00:00 ps +``` +Le quattro colonne sono: + +- `PID`: il numero ID del processo; +- `TTY`: il nome della shell a cui l'utente è connesso; +- `TIME`: il tempo di elaborazione della CPU utilizzato dal processo; +- `CMD`: il nome del comando che ha avviato il processo + +Con l'opzione `-e` vengono elencati i processi di tutti gli utenti: + +```bash +ps -e | less + + PID TTY TIME CMD + 1 ? 00:00:02 systemd + 2 ? 00:00:00 kthreadd + 3 ? 00:00:00 rcu_gp + 4 ? 00:00:00 rcu_par_gp + 5 ? 00:00:00 slub_flushwq + 6 ? 00:00:00 netns + 8 ? 00:00:00 kworker/0:0H-events_highpri + 10 ? 00:00:00 mm_percpu_wq + 11 ? 00:00:00 rcu_tasks_kthread + 12 ? 00:00:00 rcu_tasks_rude_kthread + 13 ? 00:00:00 rcu_tasks_trace_kthread + 14 ? 00:00:00 ksoftirqd/0 + 15 ? 00:00:16 rcu_preempt +``` + +## Gerarchia dei processi + +È possibile vedere quali processi ne hanno avviati altri con l'opzione `-H` (hierarchy). La rientranza indica i processi figli: + +```bash +ps -eH | less + + PID TTY TIME CMD + 945 ? 00:00:00 sddm + 971 tty7 00:13:47 Xorg + 1398 ? 00:00:00 sddm-helper + 1431 ? 00:00:00 startplasma-x11 + 1507 ? 00:00:00 ssh-agent + 1618 ? 00:00:00 plasma_session + 1658 ? 00:08:12 kwin_x11 + 1694 ? 00:00:03 ksmserver + 1718 ? 00:03:31 plasmashell + 1720 ? 00:00:03 kaccess + 1721 ? 00:00:01 xembedsniproxy + 1722 ? 00:00:03 org_kde_powerde + 1723 ? 00:00:02 polkit-kde-auth + 1737 ? 00:00:01 gmenudbusmenupr + 1742 ? 00:00:03 DiscoverNotifie + 1758 ? 00:00:02 kalendarac + 1763 ? 00:00:10 nextcloud + 1773 ? 00:00:00 agent + 956 ? 00:00:00 sshd +``` +L'opzione `--forest` aggiunge chiarezza nella visualizzazione della parentela: + + +```bash +ps -eH --forest | less + + PID TTY TIME CMD + 945 ? 00:00:00 sddm + 971 tty7 00:13:54 \_ Xorg + 1398 ? 00:00:00 \_ sddm-helper + 1431 ? 00:00:00 \_ startplasma-x11 + 1507 ? 00:00:00 \_ ssh-agent + 1618 ? 00:00:00 \_ plasma_session + 1658 ? 00:08:17 \_ kwin_x11 + 1694 ? 00:00:03 \_ ksmserver + 1718 ? 00:03:34 \_ plasmashell + 1720 ? 00:00:03 \_ kaccess + 1721 ? 00:00:02 \_ xembedsniproxy + 1722 ? 00:00:03 \_ org_kde_powerde + 1723 ? 00:00:02 \_ polkit-kde-auth + 1737 ? 00:00:02 \_ gmenudbusmenupr + 1742 ? 00:00:03 \_ DiscoverNotifie + 1758 ? 00:00:02 \_ kalendarac + 1763 ? 00:00:10 \_ nextcloud + 1773 ? 00:00:00 \_ agent + 956 ? 00:00:00 sshd +``` + +## Ottenere più informazioni + +Utilizzando l'opzione `-F` (extra full-format) vengono mostrate più colonne e quindi maggiori informazioni: + +```bash +UID PID PPID C SZ RSS PSR STIME TTY TIME CMD +root 1 0 0 44388 11208 1 08:14 ? 00:00:02 /lib/systemd/systemd splash --system --deserialize 17 +root 2 0 0 0 0 1 08:14 ? 00:00:00 [kthreadd] +root 3 2 0 0 0 0 08:14 ? 00:00:00 [rcu_gp] +root 4 2 0 0 0 0 08:14 ? 00:00:00 [rcu_par_gp] +root 5 2 0 0 0 0 08:14 ? 00:00:00 [slub_flushwq] +root 6 2 0 0 0 0 08:14 ? 00:00:00 [netns] +root 8 2 0 0 0 0 08:14 ? 00:00:00 [kworker/0:0H-events_highpri] +root 10 2 0 0 0 0 08:14 ? 00:00:00 [mm_percpu_wq] +root 11 2 0 0 0 0 08:14 ? 00:00:00 [rcu_tasks_kthread] +root 12 2 0 0 0 0 08:14 ? 00:00:00 [rcu_tasks_rude_kthread] +root 13 2 0 0 0 0 08:14 ? 00:00:00 [rcu_tasks_trace_kthread] +root 14 2 0 0 0 0 08:14 ? 00:00:01 [ksoftirqd/0] +root 15 2 0 0 0 2 08:14 ? 00:00:17 [rcu_preempt] +root 16 2 0 0 0 0 08:14 ? 00:00:00 [migration/0] +root 18 2 0 0 0 0 08:14 ? 00:00:00 [cpuhp/0] +root 19 2 0 0 0 1 08:14 ? 00:00:00 [cpuhp/1] +``` + +Le colonne visualizzate ora sono: + +- `UID`: l'ID utente del proprietario del processo; +- `PID`: l'ID del processo; +- `PPID`: ID del processo genitore; +- `C`: il numero di figli; +- `PSR`: il processore (cpu) a cui è assegnato il processo; +- `STIME`: ora di inizio. Il momento in cui è iniziato il processo; +- `TTY`: il nome della shell a cui l'utente è connesso; +- `TIME`: il tempo di elaborazione della CPU utilizzato dal processo; +- `CMD`: il nome del comando che ha avviato il processo + +## Vedere processi di un particolare utente + +Per vedere i processi di un particolare utente: + +```bash +ps -u davide + + PID TTY TIME CMD + 1400 ? 00:00:00 systemd + 1401 ? 00:00:00 (sd-pam) + 1417 ? 00:00:13 pipewire + 1418 ? 00:00:01 wireplumber + 1419 ? 00:00:15 pipewire-pulse + 1420 ? 00:00:12 dbus-daemon + 1430 ? 00:00:02 kwalletd5 + 1431 ? 00:00:00 startplasma-x11 + 1507 ? 00:00:00 ssh-agent + 1524 ? 00:01:03 ibus-daemon + 1527 ? 00:00:00 ibus-dconf + 1529 ? 00:00:10 ibus-ui-gtk3 + 1530 ? 00:00:09 ibus-extension- + 1532 ? 00:00:00 ibus-x11 + 1537 ? 00:00:00 ibus-portal + 1557 ? 00:00:00 at-spi-bus-laun + 1563 ? 00:00:01 dbus-daemon + 1573 ? 00:00:05 at-spi2-registr + 1582 ? 00:00:10 ibus-engine-sim + 1618 ? 00:00:00 plasma_session + 1622 ? 00:00:00 start_kdeinit + 1623 ? 00:00:00 kdeinit5 + 1624 ? 00:00:02 klauncher + 1658 ? 00:08:31 kwin_x11 + 1679 ? 00:00:05 kglobalaccel5 + 1691 ? 00:00:00 dconf-service + 1694 ? 00:00:03 ksmserver +``` + +## Ordinare i processi + +Con l'opzione `-o` è possibile selezionare le colonne che si desidera includere nell'output del comando `ps`, mentre l'opzione `--sort` permette di ordinare l'output in base al parametro specificato: + +```bash +ps -eo pid,pcpu,pmem,args --sort -pcpu,pmem | head -10 + + PID %CPU %MEM COMMAND + 59079 9.0 0.3 vim processes.md + 59118 7.6 4.2 $HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0/jdk-11.0.12+7/bin/java -Xms64m -Xmx512m -classpath $HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0/etc:$HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0/lib/* -Dapp.name=ltex-ls -Dapp.pid=59118 -Dapp.repo=$HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0/lib -Dapp.home=$HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0 -Dbasedir=$HOME/.config/coc/extensions/node_modules/coc-ltex/lib/ltex-ls-15.2.0 org.bsplines.ltexls.LtexLanguageServerLauncher + 26789 4.6 4.0 /usr/lib/firefox-esr/firefox-esr + 59080 3.3 1.4 node --no-warnings $HOME/.vim/bundle/coc.nvim/build/index.js + 971 2.8 0.7 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{49eaf0ba-ce00-4efc-8197-fdf9e6e8c827} -background none -noreset -displayfd 17 -seat seat0 vt7 + 1658 1.7 0.7 /usr/bin/kwin_x11 + 26918 1.0 2.0 /usr/lib/firefox-esr/firefox-esr -contentproc -childID 1 -isForBrowser -prefsLen 34960 -prefMapSize 222095 -jsInitLen 277276 -parentBuildID 20230214011352 -appDir /usr/lib/firefox-esr/browser 26789 true tab + 32110 1.0 4.4 /usr/bin/telegram-desktop -- + 58902 0.8 1.3 /usr/lib/firefox-esr/firefox-esr -contentproc -childID 170 -isForBrowser -prefsLen 41310 -prefMapSize 222095 -jsInitLen 277276 -parentBuildID 20230214011352 -appDir /usr/lib/firefox-esr/browser 26789 true tab +``` + +## Uccidere un processo + +### Tramite PID + +Se, per esempio, si volesse uccidere il processo 1492: + +```bash +sudo kill -9 1492 +``` + +### Tramite il nome + +```bash +sudo pkill -9 top +``` + +### Uccidere processi multipli + +```bash +sudo killall -9 top +``` + + +## Collegamenti + +- [https://www.howtogeek.com/448271/how-to-use-the-ps-command-to-monitor-linux-processes/](https://www.howtogeek.com/448271/how-to-use-the-ps-command-to-monitor-linux-processes/) +- [https://www.howtogeek.com/413213/how-to-kill-processes-from-the-linux-terminal/](https://www.howtogeek.com/413213/how-to-kill-processes-from-the-linux-terminal/) + + + + + + + + + + + + + + + + + + + + + + + + +