Saturday, October 17, 2015

Kenalan Sama Daemon

Share it Please
Assalamualaikum Wr. Wb. Bagaimana kabar sobat sekalian? Saya doakan semoga sobat sehat selalu agar bisa menjalani aktifitas sebagaimana biasanya. Hmmm… sudah cukup lama blog ini tidak update lagi, maklumlah akhir-akhir ini tugas kuliah selalu datang silih berganti, belum lagi kegiatan diluar kuliah yang tak kalah menyibukkan, namanya juga mahasiswa sobat tau sendirilah. Seorang mahasiswa belum dapat dikatakan mahasiwa kalau belum berkontribusi bagi sekitarnya, sebab mahasiswa sendiri masih memiliki semangat yang tinggi agar bisa bermanfaat bagi sekitarnya.

Sepertinya intronya terlalu panjang :D biar sobat ga bosen kita langsung saja ke pokok bahasan utama kita, yakni Daemon. Jika dilihat dari Judulnya, sekarang ini kita akan berkenalan dengan daemon. Pernahkah sobat sekalian mendengar kata Daemon? Lantas apa yang terbersit dipikiran sobat mendangar kata tersebut?
   Apakah ini?                           Mungkin ini?                          Atau yang ini?
Sepertinya tebakan sobat belum tepat :v. Daemon yang kita bahas disini adalah Daemon yang ada pada linux. Jadi, daemon adalah proses yang berjalan di balik layar (background) dan tidak berinteraksi langsung dengan user melalui standard input/output. Fungsi dari daemon sendiri adalah sebagai program yang bekerja secara background dan biasanya berlangsung dalam waktu yang lama, di windows bisanya disebut dengan program service.

Berikut langkah-langkah pembuatan daemon:
  • Forking dan Pembunuhan Proses Induk
Langkah pertama dalam pembuatan daemon adalah dengan melakukan forking, dengan begitu kita dapat menghasilkan induk beserta anaknya.  Kemudian mematikan proses induk, dengan begitu sistem operasi mengira akan bahwa proses telah selesai sehingga akan kembali ke terminal user. Dari langkah ini kita telah mendapatkan satu proses yang hampir bekerja di background, yaitu proses anak yang melanjutkan program setelah kita membunuh induknya.
  • Mengubah mode file menggunakan UMASK(0)
Pada umumnya daemon bekerja dalam previlege super user. Untuk alasan keamanan, daemon harus memproteksi setiap file yang dibuat. Fungsi umask() akan mencegah file previleges yang tidak aman dalam setiap pembuatan file. Selain itu, untuk menulis beberapa file (termasuk logs) yang dibuat oleh daemon, mode file harus diubah untuk memastikan bahwa file tersebut dapat ditulis dan dibaca secara benar.
  • Membuat Proses Bekerja Secara Independen
Agar daemon yang kita buat dapat berjalan dan bekerja secara independen, maka kita dapat melakukannya dengan cara memanggil fungsi setsid(), sehingga proses akan mendapatkan session ID yang baru.
  • Running Directory
Direktori kerja suatu daemon harus berada pada direktori yang selalu hidup. Oleh karena itu, kita harus mengakses dimana direktori dari daemon itu berada. Karena bisa saja pada saat starting, working directory berada pada user home. Dan daemon akan bekerja hingga sistem reboot, maka file system user directory tidak akan pernah bisa di unmount. Pengubahan tempat direktori kerja dapat dilakukan dengan implementasi fungsi chdir (). Fungsi chdir() mengembalikan nilai -1 jika gagal.
  • Menutup Standard I/O Descriptor yang diwarisi
Untuk menjegah intervensi dari luar, maka Standard I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada tiga jenis standar I/O descriptor, yaitu standard input (STDIN), standard output (STDOUT), dan standard error (STDERR). Karena daemon tidak perlu menggunakan kendali terminal, file descriptor dapat berulang dan berpotensi memiliki bahaya dalam hal keamanan. Untuk mengatasi hal tersebut maka digunakan implemtasi fungsi close().
  • Membuat Loop Utama
Daemon bekerja dalam jangka waktu tertentu, sehingga diperlukan sebuah looping. Didalam looping tersebut kita dapat menambahkan perintah apa saja yang kita inginkan. 
Hasil akhirnya akan seperti ini:

Nah itu dia sedikit pengetahuan tentang daemon yang saya ketahui. Untuk next time, kita akan mencoba mambuat suatu program menggunakan daemon tersebut. Jadi tetap pentengin blog ini ya sob.

No comments:

Post a Comment