Fantaro ny baiko Linux - wtmp

Anarana

utmp, wtmp - fisoratana anarana

Synopsis

#include

Description

Ny rakitra utmp dia mamela ny olona hahita ny mombamomba ny olona mampiasa ny rafitra. Mety misy mpampiasa marobe mampiasa ny rafitra ankehitriny, satria tsy ny programa rehetra no mampiasa ny utmp logging.

Fampitandremana: tsy azo soratana ny utmp , satria miankina amin'ny fahamendrehany ny programa maro (adaladala). Azonao atao ny mampifanaraka ny logfiles sy ny fanovana ny antontan-taratasim-pandrafetana raha toa ka alefanao amin'ny mpampiasa rehetra utmp .

Ny antontan-taratasy dia andian-dahatsoratra ahitana ity rafitra manaraka ity izay voalaza ao anatin'ny rakitra voatanisa (mariho fa io dia iray amin'ireo famaritana maromaro eo amin'ny andalana, miankina amin'ny version libc):

#define UT_UNKNOWN 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #define INIT_PROCESS 5 #define LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 #define ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; /. * / int in e_exit; /. * /}; struct utmp {short ut_type; / * karazana login * / pid_t ut_pid; / * pid of login process * / char ut_line [UT_LINESIZE]; / * anaran'ny tty - "/ dev /" * / char ut_id [4]; / * init id na abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * mpampiasa anarana / char ut_host [UT_HOSTSIZE]; / * anarana nomena anarana ho an'ny remote login * / struct exit_status ut_exit; / * Ny toerana mivoaka amin'ny dingana iray misy ny DEAD_PROCESS. * / long ut_session; / * session ID, ampiasaina amin'ny fikandrana * / struct timeval ut_tv; / * fampidirana ny fotoana. * / int32_t ut_addr_v6 [4]; / * Adiresy IP an'ny mpanamboatra remote. * / char pad [20]; / * Azo alaina amin'ny fampiasana ho avy. * /}; / * Fanakanana fifanarahana hialana. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 [0]

Ity rafitra ity dia manome ny anaran'ilay rakitra manokana mifandraika amin'ny terminal, ny anaran'ny mpampiasa, ary ny fotoana fampidirana amin'ny endriny (2). Ny saran-tsipika dia tapaka amin'ny '\ 0' raha toa kelikely kokoa noho ny haben'ny saha izy ireo.

Ny endritsoratra voalohany dia niteraka vokatra avy amin'ny initab (8) fandikana inittab (5). Alohan'ny hidirana iray, ny init (8) dia manadio utmp amin'ny alàlan'ny fametahana ut_type amin'ny DEAD_PROCESS , fanesorana ut_user , ut_host , ary ut_time miaraka amin'ny bytes nafenina isaky ny rakitsoratra izay ut_type dia tsy DEAD_PROCESS na RUN_LVL ary tsy misy fomba atao amin'ny PID ut_pid . Raha tsy misy rakitra tsy misy vidiny miaraka amin'ny ut_id ilaina, dia manangana vaovao iray i init. Izy io dia mametraka ut_id avy amin'ny inittab, ut_pid ary ut_time amin'ny sanda misy ankehitriny, ary ut_type amin'ny INIT_PROCESS .

getty (8) dia mametraka ny fidirana amin'ny Pid, ​​fanovana ut_type mankany LOGIN_PROCESS , miova ut_time , mametraka ut_line , ary miandry ny fifandraisana hiorina. login (8), rehefa avy nekena ny mpampiasa, dia miova ut_type ny USER_PROCESS , miova ut_time , ary mametraka ut_host sy ut_addr . Miankina amin'ny getty (8) sy ny fisoratana anarana (8), ny rakitsary dia mety ho hita avy amin'ny ut_line fa tsy ny ut_pid kokoa.

Rehefa hita ny init (8) fa nijanona ny dingana iray, dia mametraka ny utmpd utmpd azy amin'ny ut_pid , mametraka ut_type amin'ny DEAD_PROCESS , ary manadio ut_user , ut_host ary ut_time miaraka amin'ny bytes null.

Ny xterm (1) sy ny mpampiasa terminal hafa dia mamorona ny rakitra USER_PROCESS ary mamoaka ny ut_id amin'ny fampiasana ny litera roa amin'ny / dev / ttyp % c na amin'ny fampiasana p % d ho / dev / pts / % d . Raha mahita ny DEAD_PROCESS ho an'ity id ity izy ireo, dia mamerina izany, raha tsy izany dia manangana fidirana vaovao izy ireo. Raha azony atao, dia hanamarika azy io ho DEAD_PROCESS amin'ny fivoahana izy ary voaverina izy ireo fa tsy mampiasa ut_line , ut_time , ut_user , ary ut_host koa.

xdm (8) dia tsy tokony hamorona rakitra utmp, satria tsy misy terminal voatendry. Ny famelana azy hamorona dia hitondra fahadisoana, toy ny 'rantsan-tànana: tsy mahazo stat / dev/machine.dom'. Tokony hamorona entana wtmp, na izany aza, toy ny ftpd (8).

telnetd (8) mametraka ny fidirana LOGIN_PROCESS ary mamela ny sisa hiditra (6) araka ny mahazatra. Rehefa tapitra ny telnet session, telnetd (8) manadio utmp amin'ny fomba voafaritra.

Ny rakitra wtmp dia mirakitra ny logins sy ny logout rehetra. Ny endriny dia mitovy amin'ny utmp afa-tsy ny anaran'ny mpampiasa iray tsy misy anaran-tsindrimpeo dia manondro ny famoahana ny terminal. Ankoatra izany, ny anaran'ny terminal "~" miaraka amin'ny anaran'ny "shutdown" na "reboot" dia manondro ny fanidiana na ny famerenana indray ary ny anaran'ny terminal "|" / "}" dia mametaka ny rafitra taloha / vaovao rehefa manova azy ny daty (1). wtmp dia voatahiry amin'ny fidirana (1), init (1), ary ny dikanteny getty (1). Ny iray amin'ireo programa ireo dia mamorona ilay rakitra , ka raha nesorina izany, dia nesorina ny fitazonana rakitra.