In Linux, un'istanza di un servizio, un'applicazione o uno script in esecuzione è chiamata processo. Quando si esegue un comando, un programma o un'applicazione, viene creato un processo per esso. Ogni processo ha il proprio ID processo associato a un utente e un gruppo specifici. Se alcuni processi consumano troppe risorse o non rispondono, potrebbe essere necessario eliminarli. In questo caso, puoi utilizzare il comando kill per interrompere il processo senza riavviare il server.
In questo post, ti mostreremo come eliminare i processi in esecuzione in Linux.
Prerequisiti
- Un server che esegue Linux sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Crea server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo qualsiasi sistema operativo Linux con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Visualizza i processi in esecuzione in Linux
Il modo più semplice e veloce per ottenere un elenco di tutti i processi in esecuzione è utilizzare il comando top. Puoi eseguire il comando in alto come mostrato di seguito per elencare tutti i processi in esecuzione:
top
Otterrai tutti i processi in esecuzione nel seguente output:
Tasks: 344 total, 1 running, 297 sleeping, 0 stopped, 0 zombie %Cpu(s): 22.6 us, 6.0 sy, 0.1 ni, 67.1 id, 3.9 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 7580260 total, 2103076 free, 3174408 used, 2302776 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3901388 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5994 vyom 20 0 44344 4160 3444 R 11.8 0.1 0:00.03 top 2206 vyom 20 0 1046476 89792 60368 S 5.9 1.2 1:15.26 Xorg 2359 vyom 20 0 3471324 216412 97596 S 5.9 2.9 1:58.27 gnome-shell 2745 vyom 20 0 1776552 136144 99424 S 5.9 1.8 1:09.93 skypeforlinux 2775 vyom 20 0 37.371g 169524 117660 S 5.9 2.2 1:05.09 skypeforlinux 5655 root 20 0 0 0 0 I 5.9 0.0 0:00.30 kworker/u8:3-ev 1 root 20 0 160356 9464 6632 S 0.0 0.1 0:03.50 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kb 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 10 root 20 0 0 0 0 S 0.0 0.0 0:00.40 ksoftirqd/0 11 root 20 0 0 0 0 I 0.0 0.0 0:03.58 rcu_sched 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 13 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 16 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1
Puoi premere k e inserire l'ID del processo per terminare il processo direttamente dall'interfaccia superiore.
Trova il processo usando il comando ps
ps è un'utilità della riga di comando che visualizzerà un elenco completo dei processi in esecuzione nel formato specificato.
La sintassi di base del comando ps è mostrata di seguito:
ps [OPTION]
Di seguito viene mostrata una breve spiegazione di ciascuna opzione:
- -a – Visualizza i processi in esecuzione di tutti gli utenti.
- -u – Visualizza informazioni dettagliate su ciascuno dei processi.
- -x – Visualizza i processi controllati dal demone.
Ad esempio, esegui il comando seguente per ottenere un elenco dettagliato dei processi di tutti i processi.
ps aux
Otterrai il seguente output:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 160356 9464 ? Ss 15:51 0:03 /sbin/init splash root 2 0.0 0.0 0 0 ? S 15:51 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 15:51 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 15:51 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 15:51 0:00 [kworker/0:0H-kb] root 9 0.0 0.0 0 0 ? I< 15:51 0:00 [mm_percpu_wq] root 10 0.0 0.0 0 0 ? S 15:51 0:00 [ksoftirqd/0] root 11 0.1 0.0 0 0 ? I 15:51 0:03 [rcu_sched] root 12 0.0 0.0 0 0 ? S 15:51 0:00 [migration/0] root 13 0.0 0.0 0 0 ? S 15:51 0:00 [idle_inject/0] root 14 0.0 0.0 0 0 ? S 15:51 0:00 [cpuhp/0] root 15 0.0 0.0 0 0 ? S 15:51 0:00 [cpuhp/1] root 16 0.0 0.0 0 0 ? S 15:51 0:00 [idle_inject/1] root 17 0.0 0.0 0 0 ? S 15:51 0:00 [migration/1] root 18 0.0 0.0 0 0 ? S 15:51 0:00 [ksoftirqd/1] root 20 0.0 0.0 0 0 ? I< 15:51 0:00 [kworker/1:0H-kb] root 21 0.0 0.0 0 0 ? S 15:51 0:00 [kdevtmpfs] root 22 0.0 0.0 0 0 ? I< 15:51 0:00 [netns]
Il comando sopra ti mostrerà tutti i processi in esecuzione. Puoi usare il comando grep con il comando ps per ottenere un PID di un processo specifico.
Ad esempio, per ottenere un PID di un processo Apache, eseguire il comando seguente:
ps aux | grep apache
Otterrai il seguente output:
root 1309 0.0 0.0 73992 4748 ? Ss 15:52 0:00 /usr/sbin/apache2 -k start www-data 1310 0.0 0.0 1285068 4620 ? Sl 15:52 0:00 /usr/sbin/apache2 -k start www-data 1311 0.0 0.0 1285068 4644 ? Sl 15:52 0:00 /usr/sbin/apache2 -k start
Puoi anche usare il pidof comando per ottenere un PID di un processo specifico.
pidof apache2
Otterrai il seguente output:
1311 1310 1309
Uccidi un processo in Linux
A questo punto, sai come ottenere il PID di qualsiasi processo. Ora puoi usare il comando kill per terminare un processo in esecuzione.
Per terminare un singolo processo, esegui il seguente comando:
kill PID
Oppure
kill -9 PID
Per terminare più processi, esegui il seguente comando:
kill -9 PID1 PID2 PID3
Puoi anche uccidere i processi con i loro nomi. Puoi usare il pkill comando per terminare un processo in base al suo nome.
Per terminare il processo Apache, esegui il seguente comando:
pkill apache2
Puoi anche usare il killall comando per terminare un processo in base al suo nome:
killall mysqld
Conclusione
In questo post, abbiamo spiegato come trovare e terminare un processo in Linux. Ora puoi eliminare da solo tutti i processi che non rispondono senza riavviare il server. Provalo sull'hosting VPS di Atlantic.Net!