273 lines
10 KiB
Markdown
273 lines
10 KiB
Markdown
# 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
|
|
```
|
|
|
|
## Ricercare un processo
|
|
|
|
Come il comando grep è utilizzato per trovare stringhe da file ed output, il comando `pgrep` fa lo stesso per i processi.
|
|
|
|
La sintassi è molto semplice
|
|
|
|
```bash
|
|
pgrep -i -u username process_name
|
|
```
|
|
dove `-i` attiva l'opzione **case-insensitive**.
|
|
|
|
### Ottenere il numero di processi di un utente
|
|
|
|
Per conoscere il numero di processi utilizzati da un utente specifico, utilizzare l'opzione `-c`:
|
|
|
|
```bash
|
|
pgrep -cu davide
|
|
|
|
112
|
|
```
|
|
Ad esempio:
|
|
|
|
```bash
|
|
> pgrep -u davide -l
|
|
|
|
1400 systemd
|
|
1401 (sd-pam)
|
|
1417 pipewire
|
|
1418 wireplumber
|
|
1419 pipewire-pulse
|
|
1420 dbus-daemon
|
|
1430 kwalletd5
|
|
1431 startplasma-x11
|
|
```
|
|
Per trovare quale comando ha avviato il processo in questione basta digitare
|
|
|
|
```bash
|
|
pgrep -u username -a
|
|
|
|
|
|
> pgrep -u davide -a
|
|
|
|
1400 /lib/systemd/systemd --user
|
|
1401 (sd-pam)
|
|
1417 /usr/bin/pipewire
|
|
1418 /usr/bin/wireplumber
|
|
1419 /usr/bin/pipewire-pulse
|
|
1420 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
|
|
1430 /usr/bin/kwalletd5 --pam-login 7 8
|
|
1431 /usr/bin/startplasma-x11
|
|
```
|
|
|
|
### Elencare i processi per nome e PID
|
|
|
|
```bash
|
|
pgrep -u username -l
|
|
```
|
|
|
|
## 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/)
|
|
- [https://linuxhandbook.com/pgrep/](https://linuxhandbook.com/pgrep/)
|