Conchiglia

Come creare un processo zombie fittizio in Ubuntu 18.04 LTS

Come creare un processo zombie fittizio in Ubuntu 18.04 LTS

Come tester di software, a volte abbiamo bisogno di sapere come appare un processo zombie sul nostro sistema. Possiamo eseguire vari test su di esso se sappiamo specificamente quale programma e ID processo è associato a quel processo zombie.

Che cos'è un processo zombie??

Uno zombie o un processo defunto in Linux è un processo che è stato completato, ma la sua voce rimane ancora nella tabella dei processi a causa della mancanza di corrispondenza tra i processi padre e figlio. Di solito, un processo genitore controlla lo stato dei suoi processi figlio attraverso la funzione wait(). Quando il processo figlio è terminato, la funzione di attesa segnala al genitore di uscire completamente dal processo dalla memoria. Tuttavia, se il genitore non riesce a chiamare la funzione di attesa per uno dei suoi figli, il processo figlio rimane vivo nel sistema come un processo morto o zombi. Questi processi zombi potrebbero accumularsi, in gran numero, sul tuo sistema e influire sulle sue prestazioni.

Quando esegui il comando top e uno zombi è in esecuzione, verrà indicato dalla seconda riga dell'output come segue:

Tuttavia, se non è presente alcun processo zombie in esecuzione sul sistema, è possibile creare un modello fittizio a scopo di test come descritto in questo articolo. Stiamo eseguendo questo processo su Ubuntu 18.04.

Creazione di un processo zombie

In questa sezione, scriveremo un programma c per eseguire un processo zombie sul nostro sistema.

Apri un editor di testo e inserisci il seguente codice:

Codice

#includere  #includere  #includere int main()  pid_t child_pid;child_pid = fork (); if (child_pid > 0)  sleep (60);  else  uscita (0);  restituisce 0; 

Salva questo file come zombi.c

Il processo zombie creato tramite questo codice verrà eseguito per 60 secondi. Puoi aumentare la durata specificando un tempo (in secondi) nella funzione sleep() sleep.

Apri il Terminale ed esegui il seguente comando per compilare questo programma:

$ cc zombi.c -o zombi

Ora verrà creato un file eseguibile con il nome di zombie.

Tieni presente che dovrai installare il compilatore GNU C se non è già installato sul tuo sistema tramite il seguente comando:

$ sudo apt-get install build-essential

Ora esegui il programma zombi tramite il seguente comando:

./zombie

Vedrai il seguente output:

È possibile utilizzare l'ID del processo padre (PPID) e l'ID del processo figlio (PID) durante il test; per esempio uccidendo questo processo zombie tramite il comando kill.

Mentre questo processo è in esecuzione, puoi visualizzare le prestazioni del sistema in un'altra finestra di Terminale tramite il comando in alto. Sarai in grado di vedere 1 processo zombi attraverso la seconda riga dell'output.

Il comando ps ora mostrerà anche questo processo defunto e il programma zombie responsabile di esso:

$ ps axo stat,ppid,pid,comm | grep -w defunta

Questo comando ti darà lo stato, parentID, l'ID del processo, il programma che sta eseguendo il processo zombi (il programma zombi che abbiamo eseguito in questo tutorial).

Ora hai imparato come creare un semplice processo zombie fittizio. Questo ti darà un'idea di come appare sul tuo sistema e come puoi usarlo a scopo di test.

Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...
Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...