సిగ్నల్ - Linux / Unix కమాండ్

Linux POSIX నమ్మకమైన సిగ్నల్స్ (ఇటు తరువాత "ప్రామాణిక సిగ్నల్స్") మరియు POSIX రియల్ టైమ్ సిగ్నల్స్ రెండింటికి మద్దతు ఇస్తుంది.

ప్రామాణిక సిగ్నల్స్

Linux క్రింద ఉన్న ప్రామాణిక సంకేతాలను మద్దతు ఇస్తుంది. "విలువ" నిలువు వరుసలో సూచించిన విధంగా అనేక సిగ్నల్ సంఖ్యలు నిర్మాణంపై ఆధారపడి ఉంటాయి. (ఇక్కడ మూడు విలువలు ఇవ్వబడతాయి, మొదటిది ఆల్ఫా మరియు స్పార్క్ల కోసం చెల్లుబాటు అవుతుంది, i386, ppc మరియు sh మరియు మిస్ కోసం చివరిది.

A - సంబంధిత నిర్మాణంపై ఒక సిగ్నల్ లేదు అని సూచిస్తుంది.)

టేబుల్ యొక్క "యాక్షన్" కాలమ్లోని ఎంట్రీలు ఈ క్రింది విధంగా సిగ్నల్ కోసం డిఫాల్ట్ చర్యను పేర్కొంటాయి:

టర్మ్

డిఫాల్ట్ చర్య ప్రక్రియ రద్దు చేయడం.

IGN

డిఫాల్ట్ చర్య సిగ్నల్ విస్మరించడం.

కోర్

డిఫాల్ట్ చర్య ప్రక్రియ మరియు డంప్ కోర్ రద్దు చేయడం.

ఆపు

డిఫాల్ట్ చర్య ప్రక్రియ ఆపడానికి ఉంది.

మొదట అసలు POSIX.1 ప్రమాణంలో వివరించిన సంకేతాలు.

సిగ్నల్ విలువ యాక్షన్ వ్యాఖ్య
లేదా నియంత్రణ ప్రక్రియ మరణం
SIGINT 2 టర్మ్ కీబోర్డ్ నుండి అంతరాయం
SIGQUIT 3 కోర్ కీబోర్డ్ నుండి నిష్క్రమించండి
SIGILL 4 కోర్ అక్రమ ఇన్స్ట్రక్షన్
SIGABRT 6 కోర్ గర్భస్రావం నుండి అబిర్ట్ సిగ్నల్ (3)
SIGFPE 8 కోర్ ఫ్లోటింగ్ పాయింట్ మినహాయింపు
SIGKILL 9 టర్మ్ సిగ్నల్ కిల్
SIGSEGV 11 కోర్ చెల్లని మెమరీ సూచన
SIGPIPE 13 టర్మ్ బ్రోకెన్ పైప్: ఏ రీడర్లతో పైపుకు వ్రాయండి
SIGALRM 14 టర్మ్ అలారం నుండి టైమర్ సిగ్నల్ (2)
SIGTERM 15 టర్మ్ ముగింపు సంకేతం
SIGUSR1 30,10,16 టర్మ్ వినియోగదారు నిర్వచించిన సిగ్నల్ 1
SIGUSR2 31,12,17 టర్మ్ వినియోగదారు నిర్వచించిన సిగ్నల్ 2
SIGCHLD 20,17,18 IGN చైల్డ్ ఆగిపోయింది లేదా రద్దు చేయబడింది
SIGCONT 19,18,25 నిలిపివేసినట్లయితే కొనసాగించండి
SIGSTOP 17,19,23 ఆపు ప్రాసెస్ని ఆపివేయి
SIGTSTP 18,20,24 ఆపు Tty వద్ద టైప్ చేయవద్దు
SIGTTIN 21,21,26 ఆపు నేపథ్య ప్రక్రియ కోసం tty ఇన్పుట్
SIGTTOU 22,22,27 ఆపు నేపథ్య ప్రక్రియ కోసం tty అవుట్పుట్

SIGKILL మరియు SIGSTOP సంకేతాలు పట్టుకోబడవు, నిరోధించబడతాయి లేదా నిర్లక్ష్యం చేయబడవు.

తరువాత POSIX.1 ప్రమాణంలో లేని సంకేతాలు కాని SUSv2 మరియు SUSV3 / POSIX 1003.1-2001 లో వివరించబడ్డాయి.

సిగ్నల్ విలువ యాక్షన్ వ్యాఖ్య
SIGPOLL టర్మ్ ఘోరమైన సంఘటన (Sys V). SIGIO యొక్క పర్యాయపదం
SIGPROF 27,27,29 టర్మ్ ప్రొఫైలింగ్ టైమర్ గడువు ముగిసింది
SIGSYS 12, - 12 కోర్ రొటీన్ (SVID) కు చెడ్డ వాదన
SIGTRAP 5 కోర్ ట్రేస్ / బ్రేక్ పాయింట్ ట్రాప్
SIGURG 16,23,21 IGN సాకెట్ మీద అత్యవసర పరిస్థితి (4.2 BSD)
SIGVTALRM 26,26,28 టర్మ్ వర్చువల్ అలారం గడియారం (4.2 BSD)
SIGXCPU 24,24,30 కోర్ CPU సమయ పరిమితిని మించిపోయింది (4.2 BSD)
SIGXFSZ 25,25,31 కోర్ ఫైల్ పరిమాణం పరిమితి మించిపోయింది (4.2 BSD)

SIGSYS , SIGXCPU , SIGXFSZ , మరియు (SPARC మరియు MIPS కాకుండా నిర్మాణాత్మకమైనవి) కోసం డిఫాల్ట్ ప్రవర్తనను Linux 2.2 కి అప్లై చేసి , సిగ్బస్ ప్రక్రియను (కోర్ డంప్ లేకుండా) ముగించాలి. (కొన్ని ఇతర యూనిట్లలో SIGXCPU మరియు SIGXFSZ కోసం డిఫాల్ట్ చర్య కోర్ డంప్ లేకుండా ప్రక్రియను రద్దు చేయడం). Linux 2.4 ఈ సంకేతాలకు POSIX 1003.1-2001 అవసరాలకు అనుగుణంగా, ప్రాసెస్ను కోర్ డంప్తో ముగించింది.

తదుపరి అనేక ఇతర సంకేతాలు.

సిగ్నల్ విలువ యాక్షన్ వ్యాఖ్య
SIGEMT 7, -, 7 టర్మ్
SIGSTKFLT -, 16, - టర్మ్ కాప్రోసెసెసర్పై స్టాక్ తప్పు (ఉపయోగించనిది)
SIGIO 23,29,22 టర్మ్ ఇప్పుడు సాధ్యమైన I / O (4.2 BSD)
SIGCLD -, -, 18 IGN SIGCHLD కోసం పర్యాయపదం
SIGPWR 29,30,19 టర్మ్ పవర్ వైఫల్యం (సిస్టమ్ V)
SIGINFO 29, - - SIGPWR కోసం పర్యాయపదం
SIGLOST -, -, - టర్మ్ ఫైల్ లాక్ కోల్పోయింది
SIGWINCH 28,28,20 IGN విండో పునఃపరిమాణం సిగ్నల్ (4.3 BSD, సన్)
SIGUNUSED - 31 - టర్మ్ ఉపయోగించని సిగ్నల్ (SIGSYS ఉంటుంది)

(సిగ్నల్ 29 అనేది SIGINFO / SIGPWR ఒక ఆల్ఫాలో ఉంటుంది కానీ ఒక స్పారెక్పై SIGLOST.)

SIGEMT POSIX 1003.1-2001 లో పేర్కొనబడలేదు, కానీ చాలావరకూ ఇతర ఐనస్ లలో ఎన్నడూ కనిపించదు, ఇక్కడ దాని డిఫాల్ట్ చర్య ప్రక్రియను కోర్ డంప్తో ముగించడానికి సాధారణంగా ఉంటుంది.

SIGPWR (ఇది POSIX 1003.1-2001 లో పేర్కొనబడలేదు) సాధారణంగా కనిపించే ఇతర యునిసెల్లల్లో డిఫాల్ట్గా విస్మరించబడుతుంది.

SIOIO (ఇది POSIX 1003.1-2001 లో పేర్కొనబడలేదు) అనేక ఇతర యూనిట్లలో డిఫాల్ట్గా విస్మరించబడుతుంది.

రియల్ టైమ్ సిగ్నల్స్

POSIX.4 రియల్ టైమ్ ఎక్స్టెన్షన్స్ (మరియు ఇప్పుడు POSIX 1003.1-2001 లో చేర్చబడినది) లో వాస్తవంగా నిర్వచించినట్లు లైనక్స్ నిజ-సమయ సంకేతాలను మద్దతిస్తుంది. లైనక్స్ 32 రియల్-టైమ్ సిగ్నల్స్కు 32 కి ( SIGRTMIN ) నుండి 63 ( SIGRTMAX ) కు మద్దతిస్తుంది . (రియల్ టైమ్ సిగ్నల్ నంబర్ల శ్రేణిని యూనిఫైల్లో మారుతుంది కనుక ప్రోగ్రామ్లు ఎల్లప్పుడూ SIGRTMIN + n అనే సంకేతంతో నిజ సమయ సంకేతాలను సూచించాలి.)

ప్రామాణిక సిగ్నల్స్ కాకుండా, నిజ-సమయ సంకేతాలకు ముందుగా నిర్వచించని అర్థాలు లేవు: వాస్తవ-సమయ సంకేతాల సమితి అప్లికేషన్-నిర్వచించిన ప్రయోజనాల కోసం ఉపయోగించబడుతుంది. (గమనిక, అయితే, LinuxThreads అమలు మొదటి మూడు వాస్తవ సమయ సంకేతాలను ఉపయోగిస్తుంది.)

అప్రజాకరించబడని నిజ-సమయ సిగ్నల్ కోసం డిఫాల్ట్ చర్య స్వీకరణ ప్రక్రియను రద్దు చేయడం.

రియల్-టైమ్ సిగ్నల్స్ క్రింది వాటి ద్వారా వేరు చేయబడ్డాయి:

  1. వాస్తవ సమయ సంకేతాల యొక్క అనేక చోట్ల క్యూలు చేయవచ్చు. దీనికి విరుద్ధంగా, ఆ సంకేతం ప్రస్తుతం బ్లాక్ చేయబడినప్పుడు ఒక ప్రామాణిక సిగ్నల్ యొక్క అనేక చోట్ల పంపిణీ చేయబడితే, అప్పుడు ఒక ఉదాహరణ మాత్రమే క్యూలో ఉంటుంది.
  2. సిగ్నల్ సిగ్క్యూ (2) ను ఉపయోగించి పంపినట్లయితే , సహసంబంధ విలువ (పూర్ణాంకం లేదా పాయింటర్) సిగ్నల్తో పంపవచ్చు. స్వీకరించే విధానం ఈ సంకేతం కొరకు SAGRIGACTION ఫ్లాగ్ను సిగ్యుక్షన్ (2) కు స్థాపించినట్లయితే, ఈ డేటాను పొందవచ్చు si_value ఫీల్డ్ ద్వారా siginfo_t నిర్మాణం రెండవ వాదనగా హ్యాండ్లర్గా ఆమోదించబడుతుంది. ఇంకా, ఈ నిర్మాణం యొక్క si_pid మరియు si_uid క్షేత్రాలు సంకేతాన్ని పంపించే ప్రక్రియ యొక్క PID మరియు వాస్తవ యూజర్ ఐడిని పొందటానికి ఉపయోగించవచ్చు.
  3. రియల్ టైమ్ సిగ్నల్స్ హామీ ఇవ్వబడిన క్రమంలో పంపిణీ చేయబడతాయి. అదే రకానికి చెందిన బహుళ రియల్-టైమ్ సిగ్నల్స్ వారు పంపిన క్రమంలో పంపిణీ చేయబడతాయి. విభిన్న నిజ-సమయ సంకేతాలు ఒక ప్రాసెస్కు పంపినట్లయితే, అవి తక్కువ-సంఖ్య సిగ్నల్తో ప్రారంభించబడతాయి. (అంటే, తక్కువ సంఖ్యలో ఉన్న సంకేతాలు అత్యధిక ప్రాధాన్యత కలిగివున్నాయి.)

ఒక ప్రాసెస్ కోసం ప్రామాణిక మరియు వాస్తవ సమయ సంకేతాలను రెండింటిలో పెండింగ్లో ఉంటే, POSIX దీన్ని నిర్దేశించనిదిగా విడుదల చేస్తుంది, ఇది మొదటిసారి పంపిణీ చేయబడుతుంది. లైనక్స్, అనేక ఇతర ఆచరణల లాగా, ఈ సందర్భంలో ప్రామాణిక సంకేతాలకు ప్రాధాన్యత ఇస్తుంది.

POSIX ప్రకారం, ఒక ప్రోగ్రాంకు వరుసలో ఉండటానికి ఒక అమలు కనీసం _POSIX_SIGQUEUE_MAX (32) రియల్-టైమ్ సిగ్నల్స్ను అనుమతించాలి. అయినప్పటికీ, ఒక్కో-ప్రాసెస్ పరిమితిని ఉంచకుండా, లైనక్స్ అన్ని ప్రక్రియలకు క్వీటేడ్ రియల్-టైమ్ సంకేతాల సంఖ్యపై సిస్టమ్-విస్తృత పరిమితిని విధించింది.

ఈ పరిమితి / proc / sys / kernel / rtsig-max ఫైలు ద్వారా మార్చబడుతుంది (మరియు అధికారముతో). రియల్-టైమ్ సిగ్నల్స్ ప్రస్తుతం క్యూలో ఉన్నాయని తెలుసుకోవడానికి సంబంధిత ఫైలు, proc / sys / kernel / rtsig-max ను ఉపయోగించవచ్చు.

కలుసుకోవడం

POSIX.1

ముఖ్యమైనది: మీ కంప్యుటర్లో కమాండ్ ఎలా ఉపయోగించబడుతుందో చూడుటకు man command ( % man ) ఉపయోగించండి.