Skip to main content

Isyarat - Perintah Linux / Unix

Turtorial Perintah Dasar Command (April 2025)

Turtorial Perintah Dasar Command (April 2025)
Anonim

Linux menyokong kedua-dua POSIX isyarat dipercayai (selepas ini "isyarat standard") dan isyarat masa nyata POSIX.

Isyarat Standard

Linux menyokong isyarat standard disenaraikan di bawah. Beberapa nombor isyarat bergantung kepada arsitektur, seperti yang ditunjukkan dalam lajur "Nilai". (Di mana tiga nilai diberi, yang pertama biasanya sah untuk alpha dan sparc, satu pertengahan untuk i386, ppc dan sh, dan yang terakhir untuk mips.

A - menandakan bahawa isyarat tidak hadir pada seni bina yang bersesuaian.)

Penyertaan dalam lajur "Tindakan" jadual menentukan tindakan lalai untuk isyarat, seperti berikut:

Terma

Tindakan lalai adalah untuk menamatkan proses.

Ign

Tindakan lalai adalah mengabaikan isyarat.

Teras

Tindakan lalai adalah untuk menamatkan proses dan teras pembuangan.

Berhenti

Tindakan lalai adalah untuk menghentikan proses tersebut.

Mula-mula isyarat yang diterangkan dalam standard POSIX.1 asal.

IsyaratNilaiTindakanKomen
atau kematian proses pengawalan
SIGINT2TermaGanggu dari papan kekunci
SIGQUIT3TerasBerhenti dari papan kekunci
SIGILL4TerasArahan tidak sah
SIGABRT6TerasIsikan isyarat daripada abort (3)
SIGFPE8TerasPengecualian titik terapung
SIGKILL9TermaMembunuh isyarat
SIGSEGV11TerasRujukan memori tidak sah
SIGPIPE13TermaPecah paip: tulis ke paip tanpa pembaca
SIGALRM14TermaIsyarat pemasa dari penggera (2)
SIGTERM15TermaIsyarat penamatan
SIGUSR130,10,16TermaIsyarat yang ditentukan pengguna 1
SIGUSR231,12,17TermaIsyarat yang ditentukan pengguna 2
SIGCHLD20,17,18IgnKanak-kanak berhenti atau ditamatkan
SIGCONT19,18,25 Teruskan jika berhenti
SIGSTOP17,19,23BerhentiHentikan proses
SIGTSTP18,20,24BerhentiHentikan menaip pada tty
SIGTTIN21,21,26Berhentiinput tty untuk proses latar belakang
SIGTTOU22,22,27Berhentitty output untuk proses latar belakang

IsyaratSIGKILL danSIGSTOP tidak dapat ditangkap, disekat, atau diabaikan.

Seterusnya isyarat tidak dalam piawaian POSIX.1 tetapi diterangkan dalam SUSv2 dan SUSv3 / POSIX 1003.1-2001.

IsyaratNilaiTindakanKomen
SIGPOLL TermaAcara menarik (Sys V). Sinonim SIGIO
SIGPROF27,27,29TermaPemasa profil telah tamat tempoh
SIGSYS12,-,12TerasHujah buruk terhadap rutin (SVID)
SIGTRAP5TerasTrace / breakpoint trap
SIGURG16,23,21IgnKeadaan segera di soket (4.2 BSD)
SIGVTALRM26,26,28TermaJam penggera maya (4.2 BSD)
SIGXCPU24,24,30TerasHad masa CPU melebihi (4.2 BSD)
SIGXFSZ25,25,31TerasHad saiz fail melebihi (4.2 BSD)

Sehingga dan termasuk Linux 2.2, tingkah laku lalai untukSIGSYS, SIGXCPU, SIGXFSZ, dan (pada seni bina selain daripada SPARC dan MIPS)SIGBUS adalah untuk menamatkan proses (tanpa pembuangan teras). (Pada beberapa Unices lain tindakan lalai untukSIGXCPU danSIGXFSZ adalah untuk menamatkan proses tanpa pembuangan teras.) Linux 2.4 mematuhi keperluan POSIX 1003.1-2001 untuk isyarat ini, menamatkan proses dengan dump teras.

Seterusnya pelbagai isyarat lain.

IsyaratNilaiTindakanKomen
SIGEMT7,-,7Terma
SIGSTKFLT-,16,-TermaKesalahan stack pada coprocessor (tidak digunakan)
SIGIO23,29,22TermaI / O kini mungkin (4.2 BSD)
SIGCLD-,-,18IgnSintetik untuk SIGCHLD
SIGPWR29,30,19TermaKegagalan kuasa (Sistem V)
SIGINFO29,-,- Sinonim bagi SIGPWR
SIGLOST-,-,-TermaKunci fail hilang
SIGWINCH28,28,20IgnIsyarat isyarat semula saiz (4.3 BSD, Matahari)
SIGUNUSED-,31,-TermaIsyarat yang tidak digunakan (akan menjadi SIGSYS)

(Isyarat 29 ialahSIGINFO / SIGPWR pada alfa tetapiSIGLOST pada sparc.)

SIGEMT tidak dinyatakan dalam POSIX 1003.1-2001, tetapi tidak muncul pada kebanyakan Unice lain, di mana tindakan lalainya biasanya untuk menamatkan proses dengan dump teras.

SIGPWR (yang tidak dinyatakan dalam POSIX 1003.1-2001) biasanya diabaikan secara lalai pada Unice yang lain di mana ia muncul.

SIGIO (yang tidak dinyatakan dalam POSIX 1003.1-2001) diabaikan secara lalai pada beberapa Unice lain.

Isyarat masa nyata

Linux menyokong isyarat masa nyata seperti yang ditakrifkan pada POSIX.4 sambungan masa nyata (dan kini termasuk dalam POSIX 1003.1-2001). Linux menyokong 32 isyarat masa nyata, bernombor dari 32 (SIGRTMIN) hingga 63 (SIGRTMAX). (Program harus selalu merujuk kepada isyarat masa nyata menggunakan notasiSIGRTMIN+ n, kerana julat nombor isyarat masa nyata berbeza-beza di Unices.)

Tidak seperti isyarat standard, isyarat masa nyata tidak mempunyai makna yang telah dipratentukan: keseluruhan set isyarat masa nyata boleh digunakan untuk tujuan yang ditentukan aplikasi. (Perhatikan, bagaimanapun, pelaksanaan LinuxThreads menggunakan tiga isyarat masa nyata pertama.)

Tindakan lalai untuk isyarat masa nyata tidak dapat ditangani adalah untuk menamatkan proses penerimaan.

Isyarat masa nyata dibezakan dengan yang berikut:

  1. Pelbagai contoh isyarat masa nyata boleh dibariskan. Sebaliknya, jika beberapa contoh isyarat piawai disampaikan semasa isyarat tersebut disekat, maka hanya satu contoh yang disandarkan.
  2. Jika isyarat dihantar menggunakansigqueue(2), nilai yang disertakan (sama ada integer atau penunjuk) boleh dihantar dengan isyarat. Jika proses penerimaan menetapkan pengendali untuk isyarat ini menggunakanSA_SIGACTION bendera kesigasi(2) maka dapat memperoleh data ini melalui si_value bidang siginfo_t struktur diluluskan sebagai hujah kedua kepada pengendali. Tambahan pula, si_pid dan si_uid bidang struktur ini boleh digunakan untuk mendapatkan PID dan ID pengguna sebenar proses menghantar isyarat.
  3. Isyarat masa nyata dihantar dalam urutan yang terjamin. Isyarat masa nyata berganda jenis yang sama dihantar dalam susunan yang dihantar. Jika isyarat masa nyata yang berbeza dihantar ke suatu proses, ia akan dihantar bermula dengan isyarat terendah. (I.e., isyarat rendah bernombor mempunyai keutamaan tertinggi.)

Sekiranya kedua-dua isyarat piawai dan masa nyata sedang menunggu untuk proses, POSIX meninggalkannya yang tidak ditentukan yang dihantar terlebih dahulu. Linux, seperti banyak pelaksanaan lain, memberi keutamaan kepada isyarat standard dalam kes ini.

Menurut POSIX, satu perlaksanaan harus membenarkan sekurang-kurangnya _POSIX_SIGQUEUE_MAX (32) isyarat masa nyata untuk diharuskan untuk proses. Walau bagaimanapun, daripada meletakkan had setiap proses, Linux mengenakan had seluruh sistem ke atas bilangan isyarat masa nyata yang dihantarkan untuk semua proses.

Had ini boleh dilihat (dan dengan keistimewaan) diubah menerusi / proc / sys / kernel / rtsig-max fail. Fail berkaitan, / proc / sys / kernel / rtsig-max , boleh digunakan untuk mengetahui berapa banyak isyarat masa nyata yang sedang dipertaruhkan.

MELAKUKAN KEPADA

POSIX.1

Penting: Menggunakan lelaki perintah ( % lelaki ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.