Powered By Blogger

Tuesday, November 4, 2014

Zombie Process

“ZOMBIE” pernahkah anda mendengar kata itu atau memainkan game yang bergenre horror seperti Left 4 death, Resident Evil atau Plant vs Zombie ? Sekarang saya akan menjelaskan sedikit tentang zombie proses di sebuah sistem operasi.Di dalam sistem operasi UNIX terdapat sebuah konsep parent process dan child process. Dengan menggunakan system call fork. Sebuah process dapat menciptakan sebuah process lain yang menduplikasikan seluruh image dari process tersebut.Oleh sebab itu Zombie process yaitu proses dalam sistem yang telah selesai mejalankan eksekusinya tetapi proses tersebut tampak seakan-akan masih berjalan padahal aplikasi induknya sudah tertutup.Hal tersebut dinamakan zombie karena memang perilakunya mirip dengan zombie yaitu seakan-akan masih hidup padahal dia telah mati.

Baiklah sekarang kita melakukan eksperimen dengan membuat proses (kelinci percobaan) yang nantinya akan kita bunuh.Berikut code nya :


Dari code di atas terlihat bahwa kita melakukan forking dan menampilkan ID dari child dan parent sehingga kita dapat membunuh proses yang sedang berjalan tersebut.Setelah program di execute akan menampilkan ID dari child dan parent kemudian kita membuka terminal baru untuk membunuh anaknya dengan kill ID dari anak dengan perintah code kill -9 PID kemudian setelah anak death tanpa parent nya mengetahui kita akan mengecek dengan perintah code ps aux yang akan menampilkan data dibawah ini



Kita melihat pada ID 5342 terdapat simbol Z+ dan prosesnya bernama <defunct> itu berarti proses tersebut telah terjangkit virus berbahaya yang menyebabkan dia berubah menjadi zombie dan akan menyerang anda !!!! . Sebenarnya process ini sudah berhenti dieksekusikan oleh CPU. Ketika process ini berhenti dieksekusi process ini akan mengirimkan signal SIGCHLD ke parent process. Ketika parent process tidak menghandle signal tersebut maka child process akan seakan-akan tetap hidup. Lain halnya kalau tadi kita memberi signal kepada parent process .Tapi bagaimanapun cerita ini harus berakhir dengan happy ending oleh karena itu sebelum anda terjangkit virus zombie anda harus membunuh zombie itu, bukan dengan M4A1, P90, MP-7, Heavy Mechine Gun,ataupun Dragunov Sniper Rifle tetapi sebaiknya kita bunuh parentnya agar proses anak dapat dihentikan dengan perintah yang sama kill -9 PID Proses zombie ini akan mati apabila parent prosesnya mati. Namun adakalanya proses zombie agak susah dimatikan karena kelihatan prosesnya sudah mati,   jika sudah kebayakan zombi proses maka dapat di kill parent proses atau merestart servicenya.

Berikut saya jelaskan beberapa sinyal proses :
kill
Perintah kill akan membunuh (atau menghentikan) suatu proses. Dengan menggunakan kill ini kami mengirimkan sinyal ke proses.
daftar sinyal
Menjalankan proses dapat menerima sinyal dari satu sama lain atau dari pengguna. Anda dapat memiliki daftar sinyal dengan mengetikkan kill-l, yang merupakan huruf l, bukan nomor 1.
 kill -1 (SIGHUP)
Hal ini umum di Linux menggunakan SIGHUP sinyal pertama (atau HUP atau 1) untuk memberitahu suatu proses yang harus membaca kembali file konfigurasinya. Dengan demikian, -1 membunuh 1 perintah memaksa proses init (init selalu berjalan dengan pid 1) untuk membaca kembali file konfigurasinya.
 kill -15 (SIGTERM)
Sinyal SIGTERM juga disebut kill standar. Setiap kali kill dijalankan tanpa menentukan sinyal, kill -15 diasumsikan.
kill -9 (SIGKILL)
SIGKILL ini berbeda dari sebagian sinyal lain dalam hal itu tidak dikirim ke proses tersebut, tetapi untuk kernel Linux. Kill -9 juga disebut sure kill. Kernel akan menembak jatuh proses. Sebagai pengembang Anda tidak memiliki alat untuk mencegat sinyal kill -9.
killall
Perintah killall juga akan menjadi default untuk mengirimkan sinyal 15 kepada proses.
Perintah ini dapat digunakan oleh ketika mematikan sistem.
pkill
Anda dapat menggunakan perintah pkill untuk membunuh proses dengan nama perintahnya. 

No comments:

Post a Comment