Skip to main content

Signal - Linux / Unix Command

Signals in Linux/Unix (Abril 2025)

Signals in Linux/Unix (Abril 2025)
Anonim

Sinusuportahan ng Linux ang parehong POSIX maaasahang signal (simula dito "standard signal") at POSIX real-time na signal.

Standard Signals

Sinusuportahan ng Linux ang karaniwang mga signal na nakalista sa ibaba. Maraming mga numero ng signal ay depende sa arkitektura, tulad ng ipinahiwatig sa column na "Halaga". (Kung saan ibinigay ang tatlong halaga, ang unang isa ay karaniwang may-bisa para sa alpha at sparc, ang gitna para sa i386, ppc at sh, at ang huling isa para sa mips.

A - nagsasaad na ang isang senyas ay wala sa kaukulang arkitektura.)

Ang mga entry sa column na "Pagkilos" ng talahanayan ay tumutukoy sa default action para sa signal, tulad ng sumusunod:

Kataga

Ang default na pagkilos ay upang wakasan ang proseso.

Ign

Ang default na pagkilos ay huwag pansinin ang signal.

Core

Ang default na pagkilos ay upang wakasan ang proseso at dump core.

Itigil

Ang default na pagkilos ay upang itigil ang proseso.

Una ang mga signal na inilarawan sa orihinal na pamantayan ng POSIX.1.

SignalHalagaAksyonMagkomento
o kamatayan ng pagkontrol ng proseso
SIGINT2KatagaMakagambala mula sa keyboard
SIGQUIT3CoreTumigil mula sa keyboard
SIGILL4CoreIlegal na Pagtuturo
SIGABRT6CoreI-abort ang signal mula sa abort (3)
SIGFPE8CorePagbubukod ng eksaktong punto
SIGKILL9KatagaPatayin ang signal
SIGSEGV11CoreDi-wastong reference sa memorya
SIGPIPE13KatagaBroken pipe: sumulat sa pipe na walang mga mambabasa
SIGALRM14KatagaTimer signal mula sa alarma (2)
SIGTERM15KatagaSignal ng pagwawakas
SIGUSR130,10,16KatagaAng tinukoy ng user na signal 1
SIGUSR231,12,17KatagaAng tinukoy ng user na signal 2
SIGCHLD20,17,18IgnHuminto o nagwakas ang bata
SIGCONT19,18,25 Magpatuloy kung tumigil
SIGSTOP17,19,23ItigilItigil ang proseso
SIGTSTP18,20,24ItigilIhinto ang pag-type sa tty
SIGTTIN21,21,26Itigilinput ng tty para sa proseso ng background
SIGTTOU22,22,27Itigiltty output para sa proseso ng background

Ang mga signalSIGKILL atSIGSTOP ay hindi maaaring mahuli, hinarangan, o hindi pinansin.

Susunod na ang mga signal ay hindi sa standard na POSIX.1 ngunit inilarawan sa SUSv2 at SUSv3 / POSIX 1003.1-2001.

SignalHalagaAksyonMagkomento
SIGPOLL KatagaPollable event (Sys V). Kasingkahulugan ng SIGIO
SIGPROF27,27,29KatagaNag-expire ang timer ng profile
SIGSYS12,-,12CoreMasamang argumento sa routine (SVID)
SIGTRAP5CoreTrace / breakpoint trap
SIGURG16,23,21IgnUrgent condition on socket (4.2 BSD)
SIGVTALRM26,26,28KatagaVirtual alarm clock (4.2 BSD)
SIGXCPU24,24,30CoreLumagpas ang limitasyon sa oras ng CPU (4.2 BSD)
SIGXFSZ25,25,31CoreLumagpas ang limitasyon sa laki ng file (4.2 BSD)

Hanggang sa at kabilang ang Linux 2.2, ang default na pag-uugali para saSIGSYS, SIGXCPU, SIGXFSZ, at (sa mga arkitektura maliban sa SPARC at MIPS)SIGBUS ay upang wakasan ang proseso (nang walang isang core dump). (Sa ilang iba pang mga Unices ang default na pagkilos para saSIGXCPU atSIGXFSZ ay upang wakasan ang proseso nang walang pangunahing dump.) Ang Linux 2.4 ay sumusunod sa mga kinakailangang POSIX 1003.1-2001 para sa mga signal na ito, na tinatapos ang proseso sa isang core dump.

Susunod na iba't ibang mga signal.

SignalHalagaAksyonMagkomento
SIGEMT7,-,7Kataga
SIGSTKFLT-,16,-KatagaStack fault sa coprocessor (hindi ginagamit)
SIGIO23,29,22KatagaAko / O posible na ngayon (4.2 BSD)
SIGCLD-,-,18IgnAng isang kasingkahulugan para sa SIGCHLD
SIGPWR29,30,19KatagaPagkabigo ng lakas (System V)
SIGINFO29,-,- Ang isang kasingkahulugan para sa SIGPWR
SIGLOST-,-,-KatagaNawala ang lock ng file
SIGWINCH28,28,20IgnBaguhin ang signal ng window (4.3 BSD, Sun)
SIGUNUSED-,31,-KatagaHindi ginagamit signal (ay magiging SIGSYS)

(Signal 29 aySIGINFO / SIGPWR sa isang alpha ngunitSIGLOST sa isang sparc.)

SIGEMT ay hindi tinukoy sa POSIX 1003.1-2001, ngunit neverthless ay lumilitaw sa karamihan ng iba pang mga Unices, kung saan ang default na aksyon ay karaniwang upang wakasan ang proseso sa isang core dump.

SIGPWR (na hindi tinukoy sa POSIX 1003.1-2001) ay kadalasang binabalewala sa pamamagitan ng default sa iba pang mga Unices kung saan ito lilitaw.

SIGIO (na hindi tinukoy sa POSIX 1003.1-2001) ay binabalewala sa pamamagitan ng default sa maraming iba pang mga Unices.

Mga Real-time na signal

Sinusuportahan ng Linux ang mga real-time na signal bilang orihinal na tinukoy sa POSIX.4 real-time na mga extension (at ngayon ay kasama sa POSIX 1003.1-2001). Sinusuportahan ng Linux ang 32 real-time na signal, na bilang mula sa 32 (SIGRTMIN) hanggang 63 (SIGRTMAX). (Ang mga programa ay dapat palaging sumangguni sa mga real-time signal gamit ang notasyonSIGRTMIN+ n, dahil ang hanay ng mga real-time na mga numero ng signal ay nag-iiba sa Unices.)

Hindi tulad ng karaniwang mga signal, ang mga real-time na signal ay walang mga paunang kahulugan na kahulugan: ang buong hanay ng mga real-time na signal ay maaaring gamitin para sa mga layuning tinukoy ng application. (Gayunman, tandaan na ang pagpapatupad ng LinuxThreads ay gumagamit ng unang tatlong real-time na signal.)

Ang default na aksyon para sa isang walang-hawak na real-time na signal ay upang tapusin ang proseso ng pagtanggap.

Ang mga real-time na signal ay nakikilala sa pamamagitan ng mga sumusunod:

  1. Maramihang mga pagkakataon ng real-time na mga signal ay maaaring queued. Sa kaibahan, kung ang maraming mga pagkakataon ng isang karaniwang signal ay inihatid habang ang senyas na ito ay kasalukuyang naharang, pagkatapos ay isang pagkakataon lamang ang naka-queue.
  2. Kung ang signal ay ipinadala gamitsigqueue(2), ang isang kasamang halaga (alinman sa isang integer o isang pointer) ay maaaring ipadala gamit ang signal. Kung ang proseso ng pagtanggap ay nagtatatag ng isang handler para sa signal na ito gamit angSA_SIGACTION bandila sasigayon(2) pagkatapos ay makuha nito ang data na ito sa pamamagitan ng si_value larangan ng siginfo_t istraktura ang pumasa bilang pangalawang argumento sa handler. Higit pa rito, ang si_pid at si_uid ang mga patlang ng istraktura na ito ay maaaring magamit upang makuha ang PID at tunay na user ID ng proseso ng pagpapadala ng signal.
  3. Ang mga real-time na signal ay naihatid sa isang garantisadong order. Maramihang mga real-time na signal ng parehong uri ay inihatid sa pagkakasunud-sunod na ipinadala sa kanila. Kung ang iba't ibang mga real-time na signal ay ipinapadala sa isang proseso, ang mga ito ay inihatid na nagsisimula sa pinakamababang bilang na signal. (I.e., ang mga mababang-bilang na signal ay may pinakamataas na priyoridad.)

Kung ang parehong mga standard at real-time na mga signal ay nakabinbin para sa isang proseso, POSIX ay umalis na ito na hindi natukoy na unang naihatid. Ang Linux, tulad ng maraming iba pang mga pagpapatupad, ay nagbibigay ng prayoridad sa karaniwang mga signal sa kasong ito.

Ayon sa POSIX, ang isang pagpapatupad ay dapat magpapahintulot sa hindi bababa sa _POSIX_SIGQUEUE_MAX (32) mga real-time na signal na ma-queued sa isang proseso. Gayunpaman, sa halip na ilagay ang isang limitasyon sa bawat proseso, ipinapatupad ng Linux ang isang limitasyon ng system sa bilang ng mga queued real-time na signal para sa lahat ng mga proseso.

Maaaring matingnan ang limitasyon (at may pribilehiyo) sa pamamagitan ng / proc / sys / kernel / rtsig-max file. Isang kaugnay na file, / proc / sys / kernel / rtsig-max , maaaring magamit upang malaman kung gaano karaming mga real-time na signal ang kasalukuyang naka-queue.

Pagsasagawa ng

POSIX.1

Mahalaga: Gamitin ang lalaki command ( % lalaki ) upang makita kung paano ginagamit ang utos sa iyong partikular na computer.