Un processo, nella terminologia POSIX, è un evento in corso gestito dal kernel di un sistema operativo. Un processo viene generato quando avvii un'applicazione, sebbene ci siano molti altri processi in esecuzione sullo sfondo del tuo computer, inclusi programmi per mantenere l'ora del tuo sistema precisa, per monitorare nuovi filesystem, per indicizzare file e così via.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
La maggior parte dei sistemi operativi ha un monitoraggio dell'attività del sistema di qualche tipo in modo da poter apprendere quali processi sono in esecuzione in qualsiasi momento. Linux ne ha alcuni tra cui scegliere, inclusi GNOME System Monitor e KSysGuard. Entrambe sono applicazioni utili sul desktop, ma Linux offre anche la possibilità di monitorare il tuo sistema nel tuo terminale. Indipendentemente da quale si sceglie, è un compito comune per coloro che assumono un ruolo attivo nella gestione del proprio computer è esaminare un processo specifico.
In questo articolo, mostro come trovare l'ID di processo (PID) di un programma. Gli strumenti più comuni per questo sono forniti dal pacchetto procps-ng, incluso ps
e pstree
, pidof
e pgrep
comandi.
Trova il PID di un programma in esecuzione
A volte vuoi ottenere l'ID di processo (PID) di un'applicazione specifica che sai di avere in esecuzione. Il pidof
e pgrep
i comandi trovano i processi in base al nome del comando.
Il pidof
command restituisce i PID di un comando, cercando il comando esatto per nome:
$ pidof bash
1776 5736
Il pgrep
il comando consente espressioni regolari (regex):
$ pgrep .sh
1605
1679
1688
1776
2333
5736
$ pgrep bash
5736
Trova un PID per file
Puoi trovare il PID del processo utilizzando un file specifico con il fuser
comando.
$ fuser --user ~/example.txt
/home/tux/example.txt: 3234(tux)
Ottieni un nome di processo tramite PID
Se hai il numero PID di un processo ma non del comando che lo ha generato, puoi eseguire una "ricerca inversa" con ps
:
$ ps 3234
PID TTY STAT TIME COMMAND
5736 pts/1 Ss 0:00 emacs
Elenca tutti i processi
Il ps
il comando elenca i processi. Puoi elencare ogni processo sul tuo sistema con il -e
opzione:
$ ps -e | less
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-events_highpri
[...]
5648 ? 00:00:00 gnome-control-c
5656 ? 00:00:00 gnome-terminal-
5736 pts/1 00:00:00 bash
5791 pts/1 00:00:00 ps
5792 pts/1 00:00:00 less
(END)
Elenca solo i tuoi processi
L'output di ps -e
può essere opprimente, quindi usa -U
per vedere i processi di un solo utente:
$ ps -U tux | less
PID TTY TIME CMD
3545 ? 00:00:00 systemd
3548 ? 00:00:00 (sd-pam)
3566 ? 00:00:18 pulseaudio
3570 ? 00:00:00 gnome-keyring-d
3583 ? 00:00:00 dbus-daemon
3589 tty2 00:00:00 gdm-wayland-ses
3592 tty2 00:00:00 gnome-session-b
3613 ? 00:00:00 gvfsd
3618 ? 00:00:00 gvfsd-fuse
3665 tty2 00:01:03 gnome-shell
[...]
Ciò produce 200 processi in meno (dai o prendi un centinaio, a seconda del sistema su cui lo stai eseguendo) da ordinare.
Puoi visualizzare lo stesso output in un formato diverso con pstree
comando:
$ pstree -U tux -u --show-pids
[...]
├─gvfsd-metadata(3921)─┬─{gvfsd-metadata}(3923)
│ └─{gvfsd-metadata}(3924)
├─ibus-portal(3836)─┬─{ibus-portal}(3840)
│ └─{ibus-portal}(3842)
├─obexd(5214)
├─pulseaudio(3566)─┬─{pulseaudio}(3640)
│ ├─{pulseaudio}(3649)
│ └─{pulseaudio}(5258)
├─tracker-store(4150)─┬─{tracker-store}(4153)
│ ├─{tracker-store}(4154)
│ ├─{tracker-store}(4157)
│ └─{tracker-store}(4178)
└─xdg-permission-(3847)─┬─{xdg-permission-}(3848)
└─{xdg-permission-}(3850)
Elenca solo i tuoi processi con il contesto
Puoi vedere un contesto extra per tutti i processi che possiedi con -u
opzione.
$ ps -U tux -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tux 3545 0.0 0.0 89656 9708 ? Ss 13:59 0:00 /usr/lib/systemd/systemd --user
tux 3548 0.0 0.0 171416 5288 ? S 13:59 0:00 (sd-pam)
tux 3566 0.9 0.1 1722212 17352 ? S<sl 13:59 0:29 /usr/bin/pulseaudio [...]
tux 3570 0.0 0.0 664736 8036 ? SLl 13:59 0:00 /usr/bin/gnome-keyring-daemon [...]
[...]
tux 5736 0.0 0.0 235628 6036 pts/1 Ss 14:18 0:00 bash
tux 6227 0.0 0.4 2816872 74512 tty2 Sl+14:30 0:00 /opt/firefox/firefox-bin [...]
tux 6660 0.0 0.0 268524 3996 pts/1 R+ 14:50 0:00 ps -U tux -u
tux 6661 0.0 0.0 219468 2460 pts/1 S+ 14:50 0:00 less
Risoluzione dei problemi con i PID
Se hai problemi con un'applicazione specifica o sei solo curioso di sapere cos'altro sul tuo sistema utilizza un'applicazione, puoi vedere una mappa della memoria del processo in esecuzione con pmap
:
$ pmap 1776
5736: bash
000055f9060ec000 1056K r-x-- bash
000055f9063f3000 16K r---- bash
000055f906400000 40K rw--- [ anon ]
00007faf0fa67000 9040K r--s- passwd
00007faf1033b000 40K r-x-- libnss_sss.so.2
00007faf10345000 2044K ----- libnss_sss.so.2
00007faf10545000 4K rw--- libnss_sss.so.2
00007faf10546000 212692K r---- locale-archive
00007faf1d4fb000 1776K r-x-- libc-2.28.so
00007faf1d6b7000 2044K ----- libc-2.28.so
00007faf1d8ba000 8K rw--- libc-2.28.so
[...]
ID processo
Il procps-ng pacchetto ha tutti i comandi necessari per indagare e monitorare ciò che il tuo sistema sta utilizzando in qualsiasi momento. Che tu sia solo curioso di sapere come si adattano tutte le parti disparate di un sistema Linux, o se stai indagando su un errore o stai cercando di ottimizzare le prestazioni del tuo computer, imparare questi comandi ti dà un vantaggio significativo per capire il tuo sistema operativo.