Cos'è un processo
Un processo, noto anche come attività, è la forma in esecuzione di un programma. I programmi vengono archiviati su disco e i processi vengono eseguiti in memoria. I processi hanno una relazione genitore/figlio. Un processo può generare uno o più figli. È possibile eseguire più processi in parallelo.
Elenco dei processi di sistema
Il comando process status (ps) elenca i processi associati alla tua shell.
# ps [options]
Per ogni processo, il comando ps visualizza il PID , l'identificatore del terminale (TTY ), il tempo di esecuzione cumulativo (TIME ) e il nome del comando (CMD ). Ad esempio, elenca i processi attualmente in esecuzione sul sistema utilizzando il comando ps.
# ps PID TTY TIME CMD 1442 pts/1 00:00:00 sudo 1448 pts/1 00:00:00 su 1449 pts/1 00:00:00 bash 1666 pts/1 00:00:00 ps
Il comando ps ha diverse opzioni che puoi usare per visualizzare ulteriori informazioni sul processo.
- -a :stampa le informazioni su tutti i processi richiesti più di frequente, ad eccezione dei capigruppo di processi e dei processi non associati a un terminale
- -e :stampa le informazioni su ogni processo attualmente in esecuzione
- -f :genera un elenco completo
- -l :genera un elenco lungo
- Formato -o :Scrive le informazioni in base alla specifica del formato fornita in un formato. È possibile specificare più opzioni -o. La specifica del formato viene interpretata come la concatenazione separata da caratteri spaziali di tutti gli argomenti delle opzioni di formato.
Elencare tutti i processi
Ad esempio, usa "ps -ef ' comando per elencare tutti i processi attualmente pianificati per l'esecuzione sul sistema.
# ps -ef | more
Ecco,
- UID :il nome utente del proprietario del processo
- PID :il numero di identificazione del processo univoco del processo
- PPID :il numero di identificazione del processo padre del processo
- TEMPO :L'ora di inizio del processo (hh:mm:ss)
- TTY :Il terminale di controllo per il processo. Nota che i processi di sistema (daemon) mostrano un punto interrogativo (?), che indica il processo avviato senza l'uso di un terminale.
- TEMPO :il tempo di esecuzione cumulativo per il processo
- CMD :il nome del comando, le opzioni e gli argomenti
Chiusura di un processo
Potrebbero esserci momenti in cui è necessario terminare un processo indesiderato. Un processo potrebbe essere entrato in un ciclo infinito o potrebbe essersi bloccato. Puoi uccidere o interrompere qualsiasi processo di tua proprietà. Puoi utilizzare i seguenti due comandi per terminare uno o più processi:
– kill
– pkill
I comandi kill e pkill inviano segnali ai processi indirizzandoli a terminare. Ogni segnale ha un numero, un nome e un evento associato. Di seguito sono riportati alcuni dei segnali più comunemente utilizzati con le relative funzionalità.
Numero | Nome | Descrizione |
---|---|---|
1 | SIGHUP | Ricarica il file di configurazione |
2 | SEGNO | Interruzione da tastiera (ctrl+c) |
9 | SIGKILL | termina il processo |
15 | SIGTERM | Termina immediatamente il processo. (Termina un processo in modo controllato in modo che la pulizia sia possibile) |
18 | SIGCONT | Continua il processo interrotto con STOP |
19 | STOP | Interrompi processo |
Terminare un processo usando il comando kill
È possibile terminare qualsiasi processo inviando il segnale appropriato al processo interessato. Il comando kill invia il segnale 15, il segnale di terminazione, per impostazione predefinita. Questo segnale fa terminare il processo in modo ordinato. Il comando kill invia un segnale di terminazione a uno o più processi. La sintassi per utilizzare il comando kill è la seguente:
# kill [-signal] PIDsNota :Il comando kill termina solo i processi che possiedi. L'utente root può utilizzare il comando kill su qualsiasi processo.
È necessario conoscere il PID del processo prima di poterlo terminare. È possibile utilizzare il comando ps o pgrep per individuare il PID del processo. Inoltre, puoi terminare più processi contemporaneamente immettendo più PID su una singola riga di comando. Vediamo un esempio di comando kill. Chiuderemmo il processo "sleep 400" come mostrato di seguito.
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
Terminare un processo usando il comando pkill o killall
In alternativa, puoi usare il comando pkill o killall per inviare il segnale di terminazione ai processi.
# pkill [-options] PIDs
o
# killall [-options] PIDs
Il comando pkill/killall richiede di specificare il nome invece del PID del processo. Ad esempio, usa il comando pkill per terminare il processo dtmail.
# pkill dtmail # pgrep -l mail #
Interruzione forzata di un processo:segnale 9
Alcuni processi ignorano il segnale predefinito 15 inviato dal comando kill. Se un processo non risponde al segnale 15, puoi forzarne l'interruzione utilizzando il segnale 9 con il comando kill o pkill.
# kill -9 PID
o
# pkill -9 process_nameNota :L'invio del segnale 15 non interrompe necessariamente un processo con grazia. Solo se il segnale viene catturato dal processo, si ripulisce in ordine e muore. In caso contrario, muore.