web analytics

[Guida] Script Bash per scovare i processi ad elevato consumo su Linux

Linux

In questa guida verranno illustrati i passaggi per utilizzare due script utili ad identificare per quanto tempo i processi con consumo elevato di CPU e RAM restano in esecuzione sulla propria distribuzione GNU/Linux. Inoltre, gli script mostreranno l’ID del processo, il proprietario, il nome e la durata.

Script Bash: processi attivi e consumo elevato della CPU su Linux

linux processi

Per identificare quali sono i processi con consumo elevato si ricorre al comando ps all’interno dello script. Questo script aiuta ad identificare da quanto tempo i processi ad alto consumo di CPU sono in esecuzione su Linux. Per procedere è necessario creare un file vuoto nella cartella “/opt/scripts” rinominandolo “long-running-cpu-proc.sh”.

Si consiglia di aprire il proprio gestore dei file con sudo (da terminale) procedendo con la creazione della cartella e del file vuoto. Copiare e incollare nel file vuoto il contenuto qui riportato e salvare.

# vi /opt/scripts/long-running-cpu-proc.sh
#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%cpu | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD            Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

Autorizzare il file come eseguibile con il seguente comando:

# chmod +x /opt/scripts/long-running-cpu-proc.sh

Infine, digitare nel terminale il comando:

sh /opt/scripts/long-running-cpu-proc.sh

Verrà riportato un output con i processi attivi e da quanto tempo sono in esecuzione.

Script bash: processi attivi e consumo elevato della RAM

Nel caso della RAM il procedimento è il medesimo, l’unica differenza sta nel contenuto del file.

# sh /opt/scripts/long-running-memory-proc.sh
#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%mem | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes-1.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD          Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes-1.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

Una volta generato il file è sufficiente ripetere la stessa procedura. L’output, in questo caso, mostrerà i processi che stanno richiedendo un uso elevato di memoria RAM.

Questo metodo dovrebbe funzionare correttamente su qualsiasi distribuzione GNU/Linux. Il risultato sarà simile al seguente:

linux processi attivi
Linux: i dettagli sui processi ad elevato consumo

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.