Skip to main content

लिनक्स में यूनिक्स कमांड Utmp का उपयोग कैसे करें

लिनक्स कमांड लाइन ट्यूटोरियल # 6 - हार्ड और प्रतीकात्मक (शीतल) लिंक (जून 2026)

लिनक्स कमांड लाइन ट्यूटोरियल # 6 - हार्ड और प्रतीकात्मक (शीतल) लिंक (जून 2026)
Anonim

utmp फ़ाइल किसी को वर्तमान में सिस्टम का उपयोग करने वाले व्यक्ति के बारे में जानकारी खोजने की अनुमति देती है। वर्तमान में सिस्टम का उपयोग करने वाले अधिक उपयोगकर्ता हो सकते हैं, क्योंकि सभी प्रोग्राम utmp लॉगिंग का उपयोग नहीं करते हैं।

चेतावनी: utmp लिखने योग्य नहीं होना चाहिए, क्योंकि कई सिस्टम प्रोग्राम (मूर्खतापूर्ण) इसकी ईमानदारी पर निर्भर करते हैं। यदि आप छोड़ते हैं तो आप सिस्टम फ़ाइलों की फ़ेक्ड सिस्टम और संशोधनों को संशोधित करते हैंutmpकिसी भी उपयोगकर्ता के लिए लिखने योग्य।

फ़ाइल फ़ाइल में शामिल निम्नलिखित संरचना के साथ प्रविष्टियों का एक अनुक्रम है (ध्यान दें कि यह केवल कई परिभाषाओं में से एक है; विवरण libc के संस्करण पर निर्भर करता है):

#define UT_UNKNOWN 0 # परिभाषित करें RUN_LVL 1 # परिभाषित करें BOOT_TIME 2 # परिभाषित करें NEW_TIME 3 # परिभाषित करें OLD_TIME 4 # परिभाषित करें INIT_PROCESS 5 # परिभाषित करें LOGIN_PROCESS 6 # परिभाषित करें USER_PROCESS 7 # परिभाषित करें DEAD_PROCESS 8 # खाता परिभाषित करें # # परिभाषित करें UT_LINESIZE 12 # परिभाषित करें UT_NAMESIZE 32 #define UT_HOSTSIZE 256 स्ट्रक्चर exit_status {लघु int e_termination; / * प्रक्रिया समाप्ति की स्थिति। * / लघु int e_exit; / * बाहर निकलने की स्थिति की प्रक्रिया। * /}; संरचना utmp {लघु ut_type; / * लॉगिन का प्रकार * / pid_t ut_pid; / * लॉगिन प्रक्रिया का पिड * / char ut_line UT_LINESIZE; / * tty का डिवाइस नाम - "/ dev /" * / char ut_id 4; / * init आईडी या abbrev। ttyname * / char ut_user UT_NAMESIZE; / * उपयोगकर्ता नाम * / char ut_host UT_HOSTSIZE; / * दूरस्थ लॉगिन * / struct exit_status ut_exit के लिए होस्टनाम; / * DEAD_PROCESS के रूप में चिह्नित प्रक्रिया की निकास स्थिति। * / लंबा ut_session; / * सत्र आईडी, विंडोिंग * / स्ट्रक्चर टाइमवल ut_tv के लिए उपयोग किया जाता है; / * समय प्रविष्टि बनाया गया था। * / int32_t ut_addr_v6 4; / * दूरस्थ मेजबान का आईपी पता। * / चार पैड 20; /* भविष्य उपयोग के लिए आरक्षित। * /}; / * पिछड़ा संगतता हैक्स। * / #define ut_name ut_user #ifndef _NO_UT_TIME # परिभाषित करें ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 0

यह संरचना उपयोगकर्ता के टर्मिनल से जुड़े विशेष फ़ाइल का नाम देती है, उपयोगकर्ता का लॉगिन नाम, और लॉगिन के समय में लॉगिन का समयपहर(2)। स्ट्रिंग फ़ील्ड को समाप्त कर दिया जाता है'' अगर वे मैदान के आकार से कम हैं।

कभी भी बनाई गई पहली प्रविष्टियां इस में (8) प्रसंस्करण inittab (5)। एक प्रविष्टि संसाधित होने से पहले, हालांकि, इस में (8) सेटिंग द्वारा utmp साफ करता हैut_type सेवा मेरेDEAD_PROCESS, समाशोधनut_user, ut_host, तथाut_time प्रत्येक रिकॉर्ड के लिए शून्य बाइट्स के साथut_type नहीं हैDEAD_PROCESS याRUN_LVL और जहां पीआईडी ​​के साथ कोई प्रक्रिया नहीं हैut_pid मौजूद। यदि आवश्यक के साथ कोई खाली रिकॉर्ड नहीं हैut_id पाया जा सकता है, init एक नया बनाता है। यह सेट करता हैut_id inittab से,ut_pid तथाut_time वर्तमान मूल्यों के लिए, औरut_type सेवा मेरेINIT_PROCESS.

गेट्टी (8) प्रविष्टि को पिड, परिवर्तन से ढूंढता हैut_type सेवा मेरेLOGIN_PROCESS, परिवर्तनut_timeसेट करता हैut_line, और कनेक्शन स्थापित करने के लिए इंतजार कर रहा है। लॉग इन करें (8), उपयोगकर्ता को प्रमाणित करने के बाद, परिवर्तनut_type सेवा मेरेUSER_PROCESS, परिवर्तनut_time, और सेटut_host तथाut_addr। इस पर निर्भर करते हुए गेट्टी (8) और लॉग इन करें (8), रिकॉर्ड द्वारा स्थित किया जा सकता हैut_line बेहतर के बजायut_pid.

कब इस में (8) पाया जाता है कि एक प्रक्रिया समाप्त हो गई है, यह इसके utmp प्रविष्टि को रेखांकित करता हैut_pidसेट करता हैut_type सेवा मेरेDEAD_PROCESS, और साफ़ करता हैut_user, ut_host तथाut_time शून्य बाइट्स के साथ।

टर्म (1) और अन्य टर्मिनल अनुकरणकर्ता सीधे एक बनाते हैंUSER_PROCESS रिकॉर्ड और उत्पन्न करेंut_id के पिछले दो अक्षरों का उपयोग करके/ Dev / ttyp %सी या उपयोग करकेपी % d के लिये/ Dev / अंक / % d । अगर वे एक पाते हैंDEAD_PROCESS इस आईडी के लिए, वे इसे रीसायकल करते हैं, अन्यथा वे एक नई प्रविष्टि बनाते हैं। यदि वे कर सकते हैं, तो वे इसे चिह्नित करेंगेDEAD_PROCESS बाहर निकलने पर और यह सलाह दी जाती है कि वे शून्य हैं ut_line,ut_time, ut_user, तथाut_host भी।

XDM (8) एक utmp रिकॉर्ड नहीं बनाना चाहिए, क्योंकि कोई असाइन टर्मिनल नहीं है। इसे बनाने के लिए परिणामस्वरूप त्रुटियां होंगी, जैसे 'उंगली: stat /dev/machine.dom' नहीं। यह wtmp प्रविष्टियां बनाना चाहिए, हालांकि, बस इसी तरह ftpd (8) करता है।

telnetd (8) एक सेट अप करता हैLOGIN_PROCESS प्रवेश और बाकी को छोड़ देता है लॉग इन करें (8) सामान्य रूप से। टेलनेट सत्र समाप्त होने के बाद, telnetd (8) वर्णित तरीके से utmp को साफ करता है।

औऱ wtmp फ़ाइल सभी लॉग इन और लॉगआउट रिकॉर्ड करता है। इसका प्रारूप बिल्कुल ठीक हैutmp सिवाय इसके कि एक शून्य उपयोगकर्ता नाम संबंधित टर्मिनल पर लॉगआउट इंगित करता है। इसके अलावा, टर्मिनल नाम'~'उपयोगकर्ता नाम के साथ"बंद करना" या"रिबूट" सिस्टम शटडाउन या रीबूट और टर्मिनल नामों की जोड़ी इंगित करता है'|'/'}' जब पुराने / नए सिस्टम समय लॉग करता है दिनांक (1) इसे बदलता है।औऱ wtmp द्वारा बनाए रखा जाता है लॉग इन करें (1), इस में (1), और के कुछ संस्करण गेट्टी (1)। इनमें से कोई भी प्रोग्राम फ़ाइल बनाता है, इसलिए यदि इसे हटा दिया गया है, तो रिकॉर्ड-रखरखाव बंद है।