سه فایل wtmp,utmp و lastlog ها فایل هایی هستند که پس از وارد شدن هر کاربر به سیستم بروز می شوند. این فایل ها در مسیر var/run, /var/log/ قرار دارند و فایل های باینری هستند و نمی توان با دستور های متنی معمول آنها را خواند. این فایل ها، فایل های Logی هستند که اطلاعات مرتبط با Session ها و ورود کاربران را نگه داری می کنند. برای خواندن آنها از ابزار هایی مانند lastlog می توان استفاده کرد.

var/run/utmp/ : شامل کاربران حاضر در سیستم

var/log/wtmp/ : شامل کاربرانی که قبلن وارد شده اند.

var/log/lastlog/ : اطلاعاتی از Login های قبلی کاربران

چه کاربرانی در حال حاضر در سیستم هستند :
فایل utmp فهرست کاربرن حال حاضر در سیستم را نشان می دهد. این فایل باینریسیت و نمی توان با دستور cat آنها را خواند. دو دستور users و w را می توان برای دانستن اینکه کدام کاربران در سیستم هستند استفاده کرد. اگر هر یک از دستور ها را بدون هیچ پارامتری در خط فرمان اجرا کنید، فهرست کاربرن حاضر در سیستم نشان داده می شود.

کد PHP:
users

OUTPUT 
user01 user02 user03 user04 
دستور w اطلاعات کاملی از کاربران حاضر در سیستم را نشان می دهد. اطلاعاتی مانند نام کاربری، ترمینال استفاده شده، آدرس ماشین راه دور و … اطلاعاتی که دستور w نشان می دهد :

نام کاربری (Username)

شماره ترمینال(tty) مورد استفاده

آدرس ماشین راه دور(From)

زمان وارد شدن کاربر به سیستم( @Loging)

مدت زمان بی کاری یا IDLE Time

میزان پردازنده استفاده شده همه ی فرایند های مربوط به ترمینال(tty) یا JCPU

میزان پردازنده استفاده شده توسط فرایند کنونی یا PCPU

دارای چندین option است که مهمترین آنها :
s- : مخفف Short Output میزان استفاده پردازنده را نشان نمی دهد.ستون های JCPU و PCPU را نشان نمی دهد.

h- : خط اول خروجی Header نام دارد و اطلاعاتی همچون زمان شروع کار سیستم،چه مدت سبستم در حال کار است یا زمان UP بودن سیستم،تعداد کاربرانی که در سیستم هستند(به سیستمLogin کرده اند).این خط مشابه خروجی دستور uptime است و با سوئیچ h- دیگر نشان داده نمی شود.

دستور w :

کد PHP:

و خروجی زیر :

کد PHP:
23:04:27 up 29 days,  7:51,  3 users,  load average0.040.060.02

USER     TTY      FROM              LOGIN
@   IDLE       JCPU      PCPU    WHAT

user01   pts
/0    dev-db-server        22:57    8.00s  0.05s  0.01s  sshduser01 [priv]

user02    pts/1    dev-db-server        23:01    2:53   0.01s  0.01s  -bash

user03     pts
/2    dev-db-server        23:04    0.00s  0.00s  0.00s  w 
دستور who،مانند دستور بالا اطلاعات کاربرانی که در حال حاضر به سیستم Loging کرده اند را نشان می دهند . خروجی آن شامل : نام کاربری،شماره tty،تاریخ و زمان و آدرس ماشین راه دور است.

کد PHP:
raj     ttypV    Jan 17 07:23   .     (192.168.1.10)
ben     ttypW    Jan 17 07:42   .     (192.168.1.11)
miku    ttypX    Jan 17 07:28   .     (user-del-net-202.vsnl.net.in)
root    ttypY    Jan 17 04:11   .     (196.15.183.151)
roomy   ttyq0    Jan 17 07:32   .     (org-rev-1.bsnl.net.in)
anita   ttyq2    Jan 17 07:33   .     (192.168.5.112)
gads    ttyq3    Jan 17 07:40   .     (gtw-1.nixcraft.in)
bencs   ttyq5    Jan 17 07:44   .     (dsl5.bsnl.co.in)
pol20um ttyq6    Jan 17 07:47   .     (gtw-2.nixcraft.co.in
چگونه فهمید آیا کاربر خاصی در حال حاضر در سیستم است یا نه؟
از دستور grep و با فرمت زیر می توان فهمید که آیا کاربری خاص در حال حاضر در سیستم هست یا نه. فرمت کلی آن به شکل زیر است و باید بجای USER_NAME نام دلخواه را نوشت.

کد PHP:
who grep USER_NAME 
خواندن فایل lastlog : فایل lastlog اطلاعات آخرین Login ها به سیستم را نشان می دهد. این فایل از نوع باینریست و باید با دستور lastlog خوانده شود.
نویسنده نامی امیر
منبع