Skip to main content

Sinyal - Linux / Perintah Unix

Belajar Command Line Interface dan Managemen Files pada LINUX #part1 (Juni 2025)

Belajar Command Line Interface dan Managemen Files pada LINUX #part1 (Juni 2025)
Anonim

Linux mendukung kedua sinyal POSIX yang dapat diandalkan (selanjutnya disebut "sinyal standar") dan sinyal POSIX real-time.

Sinyal Standar

Linux mendukung sinyal standar yang tercantum di bawah ini. Beberapa nomor sinyal bergantung pada arsitektur, seperti yang ditunjukkan pada kolom "Nilai". (Di mana tiga nilai diberikan, yang pertama biasanya valid untuk alpha dan sparc, yang tengah untuk i386, ppc dan sh, dan yang terakhir untuk mips.

A - menunjukkan bahwa sinyal tidak ada pada arsitektur yang sesuai.)

Entri dalam kolom "Tindakan" pada tabel menentukan tindakan default untuk sinyal, sebagai berikut:

Istilah

Tindakan default adalah menghentikan proses.

Ign

Tindakan standar adalah mengabaikan sinyal.

Inti

Tindakan default adalah menghentikan proses dan membuang inti.

Berhenti

Tindakan default adalah menghentikan proses.

Pertama-tama sinyal yang dijelaskan dalam standar POSIX.1 asli.

SinyalNilaiTindakanKomentar
atau kematian proses pengendalian
SIGINT2IstilahInterupsi dari keyboard
SIGQUIT3IntiKeluar dari keyboard
SIGILL4IntiInstruksi Illegal
SIGABRT6IntiBatalkan sinyal dari menggugurkan (3)
SIGFPE8IntiPengecualian floating point
SIGKILL9IstilahBunuh sinyal
SIGSEGV11IntiReferensi memori tidak valid
SIGPIPE13IstilahPipa rusak: menulis ke pipa tanpa pembaca
SIGALRM14IstilahSinyal pengatur waktu dari alarm (2)
SIGTERM15IstilahSinyal pemutusan
SIGUSR130,10,16IstilahSinyal yang ditentukan pengguna 1
SIGUSR231,12,17IstilahSinyal yang ditentukan pengguna 2
SIGCHLD20,17,18IgnAnak berhenti atau dihentikan
SIGCONT19,18,25 Lanjutkan jika dihentikan
SIGSTOP17,19,23BerhentiHentikan proses
SIGTSTP18,20,24BerhentiBerhenti mengetik di tty
SIGTTIN21,21,26Berhentimasukan tty untuk proses latar belakang
SIGTTOU22,22,27Berhentitty output untuk proses latar belakang

Sinyal-sinyalSIGKILL danSIGSTOP tidak dapat ditangkap, diblokir, atau diabaikan.

Selanjutnya sinyal tidak dalam standar POSIX.1 tetapi dijelaskan dalam SUSv2 dan SUSv3 / POSIX 1003.1-2001.

SinyalNilaiTindakanKomentar
SIGPOLL IstilahAcara yang bisa diserbuki (Sys V). Sinonim dari SIGIO
SIGPROF27,27,29IstilahPengatur waktu profil kedaluwarsa
SIGSYS12,-,12IntiArgumen buruk ke rutin (SVID)
SIGTRAP5IntiTrace / breakpoint trap
SIGURG16,23,21IgnKondisi mendesak pada soket (4.2 BSD)
SIGVTALRM26,26,28IstilahJam alarm virtual (4.2 BSD)
SIGXCPU24,24,30IntiBatas waktu CPU terlampaui (4.2 BSD)
SIGXFSZ25,25,31IntiBatas ukuran file terlampaui (4.2 BSD)

Hingga dan termasuk Linux 2.2, perilaku default untukSIGSYS, SIGXCPU, SIGXFSZ, dan (pada arsitektur selain SPARC dan MIPS)SIGBUS adalah untuk mengakhiri proses (tanpa dump inti). (Pada beberapa Unices lainnya, tindakan default untukSIGXCPU danSIGXFSZ adalah untuk menghentikan proses tanpa dump inti.) Linux 2.4 memenuhi persyaratan POSIX 1003.1-2001 untuk sinyal-sinyal ini, mengakhiri proses dengan dump inti.

Berikutnya berbagai sinyal lainnya.

SinyalNilaiTindakanKomentar
SIGEMT7,-,7Istilah
SIGSTKFLT-,16,-IstilahTumpukan kesalahan pada coprocessor (tidak digunakan)
SIGIO23,29,22IstilahI / O sekarang mungkin (4.2 BSD)
SIGCLD-,-,18IgnSinonim untuk SIGCHLD
SIGPWR29,30,19IstilahKegagalan daya (Sistem V)
SIGINFO29,-,- Sinonim untuk SIGPWR
SIGLOST-,-,-IstilahKunci file hilang
SIGWINCH28,28,20IgnSinyal pengubahan ukuran jendela (4.3 BSD, Sun)
SIGUNUS-,31,-IstilahSinyal yang tidak digunakan (akan menjadi SIGSYS)

(Sinyal 29 adalahSIGINFO / SIGPWR pada alpha tetapiSIGLOST pada sparc.)

SIGEMT tidak ditentukan dalam POSIX 1003.1-2001, tetapi tidak pernah muncul pada kebanyakan Unices lainnya, di mana tindakan defaultnya biasanya untuk mengakhiri proses dengan dump inti.

SIGPWR (yang tidak ditentukan dalam POSIX 1003.1-2001) biasanya diabaikan secara default pada Unix lain di mana ia muncul.

SIGIO (yang tidak ditentukan dalam POSIX 1003.1-2001) diabaikan secara default pada beberapa Unices lainnya.

Sinyal real-time

Linux mendukung sinyal real-time sebagaimana aslinya didefinisikan dalam POSIX.4 ekstensi waktu nyata (dan sekarang termasuk dalam POSIX 1003.1-2001). Linux mendukung 32 sinyal real-time, berjumlah 32 (SIGRTMIN) hingga 63 (SIGRTMAX). (Program harus selalu mengacu pada sinyal real-time menggunakan notasiSIGRTMIN+ n, karena kisaran jumlah sinyal real-time bervariasi di seluruh Unix.)

Tidak seperti sinyal standar, sinyal real-time tidak memiliki arti yang telah ditentukan: seluruh rangkaian sinyal real-time dapat digunakan untuk tujuan yang ditentukan aplikasi. (Perhatikan, bagaimanapun, bahwa implementasi LinuxThreads menggunakan tiga sinyal real-time pertama.)

Tindakan default untuk sinyal real-time yang tidak tertangani adalah mengakhiri proses penerimaan.

Sinyal real-time dibedakan sebagai berikut:

  1. Beberapa contoh dari sinyal real-time dapat diantrekan. Sebaliknya, jika beberapa contoh dari sinyal standar dikirimkan ketika sinyal tersebut saat ini diblokir, maka hanya satu contoh yang diantrekan.
  2. Jika sinyal dikirim menggunakansigqueue(2), nilai yang menyertainya (baik integer atau pointer) dapat dikirim dengan sinyal. Jika proses penerimaan menetapkan handler untuk sinyal ini menggunakanSA_SIGACTION bendera kesigaction(2) maka ia dapat memperoleh data ini melalui si_value bidang dari siginfo_t struktur dilewatkan sebagai argumen kedua kepada handler. Selanjutnya, si_pid dan si_uid bidang struktur ini dapat digunakan untuk mendapatkan PID dan ID pengguna nyata dari proses pengiriman sinyal.
  3. Sinyal real-time dikirim dalam pesanan yang terjamin. Beberapa sinyal real-time dari jenis yang sama dikirim dalam urutan yang dikirim. Jika sinyal real-time yang berbeda dikirim ke suatu proses, sinyal tersebut dikirimkan mulai dengan sinyal bernomor terendah. (Yaitu, sinyal bernomor rendah memiliki prioritas tertinggi.)

Jika kedua sinyal standar dan real-time menunggu proses, POSIX meninggalkannya tidak ditentukan yang dikirim lebih dulu. Linux, seperti banyak implementasi lainnya, memberikan prioritas pada sinyal standar dalam kasus ini.

Menurut POSIX, sebuah implementasi harus mengizinkan setidaknya _POSIX_SIGQUEUE_MAX (32) sinyal waktu nyata untuk diantrekan ke suatu proses. Namun, daripada menempatkan batas per-proses, Linux menerapkan batas seluruh sistem pada jumlah antrian sinyal waktu nyata untuk semua proses.

Batas ini dapat dilihat (dan dengan hak istimewa) diubah melalui / proc / sys / kernel / rtsig-max mengajukan. File terkait, / proc / sys / kernel / rtsig-max , dapat digunakan untuk mencari tahu berapa banyak sinyal real-time yang saat ini diantrekan.

MENYAMPAIKAN

POSIX.1

Penting: Menggunakan pria perintah ( % pria ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.