+ Signals
> Signals di Linux
- Introduksi
Signal adalah mekanisme yang digunakan untuk mengirim notifikasi ke proses agar mereka merespons suatu peristiwa—baik yang berasal dari dalam proses itu sendiri maupun dari luar (contohnya proses lain).
-
Banyak sinyal bersifat fatal dan akan menyebabkan proses berakhir (terminasi).
-
Namun, ada sinyal yang bisa ditangani (handled) oleh programmer untuk mencegah terminasi.
-
Beberapa sinyal lainnya tidak fatal, hanya bersifat informasi atau permintaan aksi lain.
-
Pengiriman sinyal bisa dilakukan dari command line menggunakan perintah:
-
kill -
killall -
pkill
-
- Tujuan Pembelajaran
Setelah mempelajari bagian ini, kamu akan mampu untuk:
1. Menjelaskan apa itu signal dan bagaimana cara kerjanya.
2. Membahas jenis-jenis signal yang tersedia di Linux.
3. Menggunakan kill, killall, dan pkill untuk mengirim signal dari command line.
> Apa Itu Signal?
- Pengertian
Signal adalah salah satu metode tertua dalam Inter-Process Communication (IPC) dan digunakan untuk memberi notifikasi kepada proses tentang peristiwa asinkron (atau exception).
-
Asinkron artinya:
-
Proses tidak mengharapkan kejadian itu terjadi, atau
-
Proses mengharapkan kejadian itu, tapi tidak tahu kapan itu akan terjadi.
-
Contoh: Jika pengguna ingin menghentikan program yang sedang berjalan, maka dapat mengirim signal melalui kernel untuk menginterupsi dan menghentikan proses.
- Dua Jalur Pengiriman Signal
-
Dari kernel ke proses pengguna, sebagai akibat dari exception atau error pemrograman.
-
Dari proses pengguna, menggunakan system call, ke kernel yang kemudian meneruskannya ke proses lain (bisa juga ke dirinya sendiri).
- Batasan Pengiriman
-
Signal hanya bisa dikirim antar proses yang dimiliki oleh user yang sama,
atau dari superuser ke proses mana pun.
- Respons Proses
Ketika sebuah proses menerima signal, tindakannya tergantung pada cara program ditulis:
-
Bisa mengambil aksi khusus (jika ditentukan dalam program), atau
-
Mengikuti default dari sistem.
- Signal Khusus
Ada dua signal yang tidak bisa ditangani (non-catchable) dan akan selalu menghentikan program:
-
SIGKILL(nomor 9) -
SIGSTOP(nomor 19)
> Jenis-Jenis Signal di Linux
- Fungsi Umum Signal
Signal digunakan untuk menangani dua jenis kejadian:
-
Exception dari hardware
-
Contoh: Referensi memori yang ilegal.
-
-
Exception dari lingkungan
-
Contoh: Proses mati tiba-tiba karena intervensi pengguna dari terminal.
- Melihat Daftar Signal
Untuk melihat semua jenis signal beserta nomornya di Linux, gunakan perintah berikut:
kill -l # (huruf "l", bukan angka satu)
- Signal Real-Time
-
Dimulai dari
SIGRTMIN. -
Merupakan tambahan baru di sistem Linux.
-
Tidak memiliki tujuan khusus yang telah ditentukan.
-
Berbeda dari signal biasa:
-
Bisa diantrikan (queued).
-
Diproses dengan urutan FIFO (First In First Out).
- Catatan Tambahan
-
Signal yang dikirim oleh pengguna tidak selalu mengikuti makna asli dari nomor atau jenis signal tersebut.
-
Signal bisa digunakan dengan cara bebas oleh program yang menerimanya.
Untuk dokumentasi lebih lengkap, ketik:
man 7 signal![]() |
| Original Image |
> Perintah kill di Linux
- Fungsi Utama kill
-
killdigunakan untuk mengirim signal ke proses melalui kernel. -
Bukan hanya untuk "membunuh" proses, meskipun sering digunakan untuk itu.
-
Pengguna biasa maupun superuser bisa menggunakan
kill.
- Signal Default
-
Signal default yang dikirim oleh
killadalahSIGTERM(nomor 15).-
Bisa ditangani atau diabaikan oleh proses penerima.
-
Memberi proses kesempatan untuk membersihkan diri sebelum mati.
-
Jika SIGTERM diabaikan, pengguna dapat mengirim:
-
SIGKILL(nomor 9) → Tidak bisa diabaikan, memaksa proses mati.
- Contoh Penggunaan
kill 1234 # Mengirim SIGTERM ke proses PID 1234
kill -9 1234 # Mengirim SIGKILL ke proses PID 1234
kill -SIGTERM 1234 # Mengirim SIGTERM secara eksplisit > Lab 4.1: killall dan pkill
- Persiapan
Sebelum memulai, jalankan perintah nusactl login untuk masuk ke akunmu. Kredensial login sama dengan kredensial yang kamu daftarkan di platform ini (ADINUSA).
student@ubuntu:~$ nusactl login
Setelah login, jalankan perintah nusactl start linlab-004-1. Perintah ini akan menjalankan start script dan mengonfigurasi lingkungan lab-mu secara otomatis.
student@ubuntu:~$ nusactl start linlab-004-1
- Instruksi
-
Buat direktori baru bernama
/home/student/lab4menggunakan perintahmkdir:
student@ubuntu:~$ mkdir lab4
-
Gunakan perintah
vimuntuk membuat script bernamakillingdi direktori/home/student/lab4.
student@ubuntu:~$ vim /home/student/lab4/killing
Isi script:
#!/bin/bash
while true; do
echo -n "$@ " >> ~/lab4/killing_outfile
sleep 5
done
Catatan:
Script killing akan berjalan terus hingga dihentikan. Script ini akan menambahkan argumen dari baris perintah ke file ~/lab4/killing_outfile setiap 5 detik.
-
Gunakan perintah
chmoduntuk menjadikan filekillingsebagai file yang dapat dijalankan:
student@ubuntu:~$ chmod +x /home/student/lab4/killing
- Challenge
-
Masuk ke direktori
lab4, lalu jalankan proses latar belakang (background process) menggunakan scriptkillingdengan tiga argumen:network,interface, danconnection.
Catatan: Gunakan perintah jobs untuk melihat proses yang berjalan di latar belakang.
-
Hentikan proses
networkdan terminasi (akhiri) prosesinterface.
- Verifikasi
Pastikan hanya proses connection yang masih berjalan dan terus menghasilkan output.


Komentar
Posting Komentar