Saturday, October 17, 2015

Menggunakan Daemon

Bagaimana sobat dengan postingan sebelumnya?  Keren bukan :D
Nah seperti janji saya sebelumnya kali ini kita akan belajar menggunakan daemon, tanpa berpanjang kalam langsung aja sob…
Kita akan mengimplementasikan daemon tersebut kedalam sebuah kasus. Jadi dalam contoh kali ini saya menginginkan untuk merapikan direktori yang ada dalam computer saya. Dalam direktori tersebut terdapat terdapat banyak jenis tipe file. Saya menginginkan untuk tipe file selain docukmen (.doc) dipindahkan dalam sebuah direktori yang lain.
Langkah pertama kita buat terlebih dahulu daemonnya
Oke daemonnya sudah jadi, langkah selanjutnya yaitu kita tambahkan perintah untuk memindahkan file selain .doc kedirektori lain didalam loop utama.
Pada perintah diatas kita membuat sebuah direktori bernama not_doc dimana direktori tersebut akan menyimpan suatu file yang berektensi selain .doc
Penjelasan
mkdir -p not_doc : membuat sub direktori bernama not_doc
find . -type f  : mencari tipe file type tertentu
grep -v .doc : mencari file yang berektensi selain .doc
xargs -i{} m {} ./not_doc :  memindahkan semua jenis file yang telah dicari sebelumnya ke direktori not_doc
Program yang sudah jadi akan menjadi seperti dibawah ini
Setelah itu kita coba programnya.
Pertama kita akses dulu direktori dimana file tersebut berada
Kemudian kita compile programnya menggunakan perintah gcc –o namafile namafile.c
lalu jalankan dengan menggunakan perintah ./namafile
Kondisi sebelum program dijalankan  
Kondisi setelah program dijalankan
Untuk menghentikan programnya sobat dapat melakukannya dengan mengetikkan pkill namafile.
---Semoga bermanfaat---
Continue Reading...

Kenalan Sama Daemon

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.

Continue Reading...