Masih ingat tentang postingan saya yang sebelumnya, tentang Bash Script? Ya mungkin kalok lupa bisa langsung saja dilihat sekarang. Sesuai dengan judul postingan ini, kita akan membuat sebuah folder menjadi "rapi", tetapi jangan terburu-buru dulu. Sebelumnya kita harus mengerti apakah itu daemon (bukan doraemon).
Apakah itu daemon? Mungkin dari terjemahannya sendiri kita bisa langsung mengerti.
Perhatikan yang "Terjemahan dari daemon". Sudah melihat sendiri kan terjemahan dari daemon, itu emang benar. Lalu apa hubungannya arti dari terjemahannya itu ke dalam linux? Hubungannya, cara kerja daemon di linux tidak dapat terlihat, atau bisa juga kita sebut cara kerjanya itu berada di background. Dia (daemon) bekerja di belakang layar, jadi tidak dimunculkan ke terminal ataupun juga ke GUI. Tetapi kita tetap dapat mengontrol kerja daemon tersebut, misalnya saja mematikan atau menyalakannya.
Lalu bagaimana cara mmebuat sebuah daemon? Cara untuk membuat daemon sendiri terdiri dari 6 langkah.
a) Fork Parent Proccess dan Penghentian Parent Process
Langkah pertama dari pembuatan daemon adalah dengan menspawn proses
menjadi induk dan anak dengan melakukan forking, kemudian membunuh
proses induk. Proses induk yang mati akan menyebabakan sistem operasi
mengira bahwa proses telah selesai sehingga akan kembali ke terminal
user. Dari langkah tersebut kita akan mendaptkan sebuah proses anak yang
melanjutkan program setelah induknya mati, sehingga kita mendapatkan
sebuah proses yang hampir bekerja pada backround.
pid_t pid
pid = fork();
if (pid < 0)
{
exit(EXIT_FAILURE);
}
if (pid >0)
{
exit(EXIT_SUCCESS);
}
b) Mengubah Mode File Menggunakan UMASK(0);
Daemon biasanya memproteksi setiap file yang dibuat, dengan alasan
keamanan. Fungsi umask() akan mencegah file-file previleges yang tidak
aman dalam setiap pembuatan file.
umask(0);
//mendapat akses penuh dari file yang dibuat daemon
c) Membuat Unique Session ID (SID)
Daemon harus bekerja secara independen daripada proses-proses lain,
termasuk juga proses yang menjalankannya. Langkah bisa dilakukan dengan
memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah
session ID yang baru.
sid = setsid();
if (sid < 0)
{
exit(EXIT_FAILURE);
d) Mengubah Directori Kerja
Directory kerja daemon haruslah sebuah directory yang selalu hidup.
Bisa saja pada saat starting working directorynya pada saat itu berada
pada user home. Karena daemon bekerja sampai sistem reboot, maka file
sistem user directorynya takkan pernah bisa di unmount.
if ((chdir("/home/fourirakbar/Documents")) < 0)
{
exit(EXIT_FAILURE)
}
e) Menutup File Descriptor Standar
Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan,
maka standar I/O descriptor dan descriptor yang diwarisi dari proses
induk harus ditutup.
close (STDIN_FILENO); //stdin = standar input
close (STDOUT_FILENO); //stdout = standar output
close (STDERR_FILENO); //stderr = standar error
f)Membuat Loop Utama
Membuat loop utama atau bisa juga disebut dengan inti kerja dari daemon itu sendiri.
while (1)
{
sleep(5);
}
exit(EXIT_SUCCESS);
Begitulah 6 langkah pembuatan daemon, langsung saja kita coba membuat sebuah daemon yang gunanya nanti untuk membuat folder kita menjadi rapi.
Pasti pertama kali langsung penasaran, gimana hasilnya jika dicoba. Pertama tama coba masukkan sebuah file selain ekstensi .doc ke dalam /home/fourirakbar/Documents/modul2/doc . Atau juga bisa langsung masuk ke dalam folder doc itu, dan ketikkan touch a, maksudnya adalah untuk membuat file bernama "a" tetapi kita tidak mengeditnya, juga tidak mempunyai ekstensi. Jangan lupa juga untuk membuat sebuah folder lagi yang berfungsi untuk menampung file-file yang berekstensi selain .doc. Misalkan saja disini saya membuat folder tersebut dengan nama folder_lain.
Jika sudah, buka terminal dan ketikkan perintah gcc [nama_file].c -o [nama_file2].o . Lalu jalankan daemonnya dengan mgentikkan ./[nama_file2].o
Coba cek folder doc tadi, dan lihat jika hanya file yang berekstensi .doc tidak terpindah, dan file-file yang mempunya ekstensi selain .doc akan langsung terpindah ke folder lain.
Lalu bagaimana jika saya tetap memasukkan file yang tidak mempunyai ekstensi .doc ke dalam folder doc tersebut?
Ketika ada file lain yang akan masuk ke dalam folder doc tersebut, file lain itu akan langsung terpindahkan ke folder folder_lain.
Lalu bagaimana ketika di dalam folder doc tersebut ada folder doc2, dan isi dari folder doc2 tersebut adalah berbagai file yang mempunya ekstensi .doc
Ketika ada sebuah folder, dan di dalamnya ada folder lagi, lalu isinya adalah file yang mempunya ekstensi .doc, folder tersebut (misalnya folder doc2) tidak akan terpindah.
Saya ingin mengisi folder doc dengan file yang mempunya ekstensi lain, bagaimana caranya?
Ketikkan pkill [nama_file2].o di terminal, maka daemon yang tadi berjalan akan mati. Dan kita bisa memasukkan file yang tidak berekstensi .doc ke dalam folder doc lagi


Komentar
Posting Komentar