Skip to main content

Signal - Linux / Unix Command

Signals in Linux/Unix (Juni 2025)

Signals in Linux/Unix (Juni 2025)
Anonim

Linux stöder både POSIX pålitliga signaler (hädanefter "standard signaler") och POSIX realtidssignaler.

Standard Signaler

Linux stöder de standardsignaler som anges nedan. Flera signalnummer är arkitekturberoende, vilket anges i kolumnen "Värde". (Där tre värden ges, är den första giltig för alfa och sparc, den mellersta för i386, ppc och sh och den sista för mips.

A - anger att en signal saknas på motsvarande arkitektur.)

Uppgifterna i kolumnen "Åtgärd" i tabellen anger standardåtgärden för signalen, enligt följande:

Termin

Standardåtgärd är att avsluta processen.

Ign

Standardåtgärd är att ignorera signalen.

Kärna

Standardåtgärd är att avsluta processen och dumpa kärnan.

Sluta

Standardåtgärd är att stoppa processen.

Först de signaler som beskrivs i den ursprungliga POSIX.1-standarden.

SignalVärdeVerkanKommentar
eller död av kontrollprocessen
SIGINT2TerminAvbryt från tangentbordet
SIGQUIT3KärnaAvsluta från tangentbordet
SIGILL4KärnaOlaglig instruktion
SIGABRT6KärnaAvbryt signalen från avbryta (3)
SIGFPE8KärnaFloating point undantag
SIGKILL9TerminDödsignal
SIGSEGV11KärnaOgiltig minnesreferens
SIGPIPE13TerminBrutet rör: skriv till rör utan läsare
SIGALRM14TerminTimersignal från larm (2)
SIGTERM15TerminAvslutningssignal
SIGUSR130,10,16TerminAnvändardefinierad signal 1
SIGUSR231,12,17TerminAnvändardefinierad signal 2
SIGCHLD20,17,18IgnBarn stoppas eller avslutas
SIGCONT19,18,25 Fortsätt om stoppas
SIGSTOP17,19,23SlutaSluta processen
SIGTSTP18,20,24SlutaSluta skrivet på tty
SIGTTIN21,21,26Slutatty-ingång för bakgrundsprocess
SIGTTOU22,22,27Slutatty-utgång för bakgrundsprocess

SignalernaSIGKILL ochSIGSTOP kan inte fångas, blockeras eller ignoreras.

Nästa signalerna inte i POSIX.1-standarden men beskrivs i SUSv2 och SUSv3 / POSIX 1003.1-2001.

SignalVärdeVerkanKommentar
SIGPOLL TerminPollable event (Sys V). Synonym av SIGIO
SIGPROF27,27,29TerminProfileringstimern har löpt ut
SIGSYS12,-,12KärnaDåligt argument till rutin (SVID)
SIGTRAP5KärnaSpår / brytpunktsfälla
SIGURG16,23,21IgnUrgent tillstånd på uttaget (4,2 BSD)
SIGVTALRM26,26,28TerminVirtuell väckarklocka (4,2 BSD)
SIGXCPU24,24,30KärnaCPU-tidsgräns överskridits (4,2 BSD)
SIGXFSZ25,25,31KärnaGränsen för filstorlek överskridits (4,2 BSD)

Upp till och med Linux 2.2, standardbeteendet förSIGSYS, SIGXCPU, SIGXFSZ, och (på andra arkitekturer än SPARC och MIPS)SIGBUS var att avsluta processen (utan kärna dumpning). (På vissa andra Unices är standardåtgärden förSIGXCPU ochSIGXFSZ är att avsluta processen utan en kärndump.) Linux 2.4 överensstämmer med POSIX 1003.1-2001-kraven för dessa signaler, vilket avslutar processen med en kärndump.

Nästa flera andra signaler.

SignalVärdeVerkanKommentar
SIGEMT7,-,7Termin
SIGSTKFLT-,16,-TerminStackfel på coprocessor (oanvänd)
SIGIO23,29,22TerminI / O nu möjligt (4,2 BSD)
SIGCLD-,-,18IgnEn synonym för SIGCHLD
SIGPWR29,30,19TerminStrömavbrott (system V)
SIGINFO29,-,- En synonym för SIGPWR
SIGLOST-,-,-TerminFillås förlorat
SIGWINCH28,28,20IgnFönster resize signal (4,3 BSD, Sun)
SIGUNUSED-,31,-TerminOanvänd signal (kommer att vara SIGSYS)

(Signal 29 ärSIGINFO / SIGPWR på en alfa menSIGLOST på en sparc.)

SIGEMT är inte specificerat i POSIX 1003.1-2001, men aldriglös visas i de flesta andra Unices, där dess standardåtgärd typiskt är att avsluta processen med en kärna dumpning.

SIGPWR (som inte anges i POSIX 1003.1-2001) ignoreras normalt som standard på de andra Unicesna där den visas.

SIGIO (som inte anges i POSIX 1003.1-2001) ignoreras som standard på flera andra Unices.

Realtidssignaler

Linux stöder realtidssignaler som ursprungligen definierades i POSIX.4-realtidstillägg (och ingår nu i POSIX 1003.1-2001). Linux stöder 32 realtidssignaler, numrerade från 32 (SIGRTMIN) till 63 (SIGRTMAX). (Programmen ska alltid referera till realtids signaler med noteringSIGRTMIN+ n, eftersom antalet realtidssignalantal varierar över Unices.)

Till skillnad från standard signaler har realtids signaler inga fördefinierade betydelser: hela uppsättningen realtids signaler kan användas för applikationsdefinierade ändamål. (Observera dock att implementeringen av LinuxThreads använder de första tre realtidssignalerna.)

Standardåtgärden för en obehandlad realtidssignal är att avsluta mottagningsprocessen.

Realtids signaler skiljer sig från följande:

  1. Flera instanser av realtidssignaler kan köras i kö. Däremot, om flera instanser av en standardsignal levereras medan den signalen blockeras för tillfället, är endast en instans i kö.
  2. Om signalen skickas medsigqueue(2), ett tillhörande värde (antingen ett heltal eller en pekare) kan skickas med signalen. Om mottagningsprocessen etablerar en hanterare för denna signal med hjälp avSA_SIGACTION flagga tillsigaction(2) då kan den hämta dessa data via si_value fält av siginfo_t struktur passerade som andra argument till handlaren. Dessutom si_pid och si_uid Fält av denna struktur kan användas för att erhålla PID och verkligt användar-ID för processen som skickar signalen.
  3. Realtidssignaler levereras i en garanterad ordning. Flera realtidssignaler av samma typ levereras i den ordning de skickades. Om olika realtidssignaler skickas till en process, levereras de med början med den lägsta numrerade signalen. (Dvs lågnummerade signaler har högsta prioritet.)

Om både standard och realtidssignaler väntar på en process, lämnar POSIX det ospecificerat vilket levereras först. Linux, som många andra implementeringar, prioriterar standardsignaler i detta fall.

Enligt POSIX bör ett genomförande tillåta att minst _POSIX_SIGQUEUE_MAX (32) realtidssignaler ska köras i en process. I stället för att placera en gräns per process, ställer Linux dock en systemgräns för antalet realtidssignaler i kö för alla processer.

Denna gräns kan ses (och med privilegium) ändras via / Proc / sys / kernel / rtsig-max fil. En relaterad fil, / Proc / sys / kernel / rtsig-max , kan användas för att ta reda på hur många realtids signaler som för närvarande är i kö.

RÄTTA SIG EFTER

POSIX.1

Viktig: Använd man kommando ( % man ) för att se hur ett kommando används på din dator.