TMR 25 : Adinusa Linux System Administration - Modul 4

+    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

  1. Dari kernel ke proses pengguna, sebagai akibat dari exception atau error pemrograman.

  2. 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:

  1. Exception dari hardware

    • Contoh: Referensi memori yang ilegal.

  2. 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

  • kill digunakan 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 kill adalah SIGTERM (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

  1. Buat direktori baru bernama /home/student/lab4 menggunakan perintah mkdir:

student@ubuntu:~$ mkdir lab4

  1. Gunakan perintah vim untuk membuat script bernama killing di 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.


  1. Gunakan perintah chmod untuk menjadikan file killing sebagai file yang dapat dijalankan:

student@ubuntu:~$ chmod +x /home/student/lab4/killing


-    Challenge

  1. Masuk ke direktori lab4, lalu jalankan proses latar belakang (background process) menggunakan script killing dengan tiga argumen: network, interface, dan connection.

Catatan: Gunakan perintah jobs untuk melihat proses yang berjalan di latar belakang.

  1. Hentikan proses network dan terminasi (akhiri) proses interface.


-    Verifikasi

Pastikan hanya proses connection yang masih berjalan dan terus menghasilkan output.





Komentar