اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

سیستم فایل /proc در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    سیستم فایل /proc در لینوکس

    امروز قصد داریم دایرکتوری /proc را در لینوکس بررسی کنیم و بیشتر با آن آشنا شویم. بدون در نظر گرفتن معماری، دایرکتوری proc در تمام سیستم های لینوکسی موجود است.

    یک تصور غلطی که ما فورا باید آن را پاک کنیم این است که به اصطلاح دایرکتوری /proc یک فایل سیستم واقعی نیست و یک فایل سیستم مجازی (virtual) میباشد. procfs شامل اطلاعاتی درباره پروسس ها و دیگر اطلاعات سیستمی میباشد که به /proc لینک شده و در زمان boot شدن سیستم mount (مانت) میشود.
    معرفی دایرکتوری proc در لینوکس




    ابتدا، اجازه دهید وارد پوشه /proc شویم و نگاهی به آن بیندازیم.
    کد PHP:
    # cd /proc 
    اولین چیزی که متوجه میشوید این است که در آنجا برخی از فایل ها آشنا به نظر میرسد، و همچنین یک مجموعه ای از دایرکتوری های شماره گذاری شده وجود دارد. دایرکتوری های شماره دار نشان دهنده Process هایی هستند که به عنوان PID ها شناخته شده اند، و در داخل آنها، یک دستور است که آنها را اشغال میکند. فایل ها شامل اطلاعات سیستمی همانندmemory (meminfo)، CPU information (cpuinfo) و filesystem های فعال است.


    همچنین توصیه میشود مطالعه کنید.

    ساختار دایرکتوری ها و مسیر فایل های مهم در لینوکس

    دستور Free در لینوکس، برای چک کردن Physical Memory و Swap Memory


    ابتدا یکی از فایل ها را بررسی میکنیم.
    کد PHP:
    # cat /proc/meminfo 
    نمونه خروجی

    که خروجی شبیه به زیر نمایش داده میشود.
    کد PHP:
    MemTotal:        1884812 kB
    MemFree
    :         1157676 kB
    MemAvailable
    :    1317060 kB
    Buffers
    :             764 kB
    Cached
    :           286708 kB
    SwapCached
    :            0 kB
    Active
    :           429972 kB
    Inactive
    :         167996 kB
    Active
    (anon):     324352 kB
    Inactive
    (anon):    18608 kB
    Active
    (file):     105620 kB
    Inactive
    (file):   149388 kB
    Unevictable
    :           0 kB
    Mlocked
    :               0 kB
    SwapTotal
    :       1679356 kB
    SwapFree
    :        1679356 kB
    Dirty
    :                20 kB
    Writeback
    :             0 kB
    AnonPages
    :        310516 kB
    Mapped
    :            53000 kB
    Shmem
    :             32464 kB
    Slab
    :              55452 kB
    SReclaimable
    :      34000 kB
    SUnreclaim
    :        21452 kB
    KernelStack
    :        3472 kB
    PageTables
    :        20212 kB
    NFS_Unstable
    :          0 kB
    Bounce
    :                0 kB
    WritebackTmp
    :          0 kB
    CommitLimit
    :     2621760 kB
    Committed_AS
    :    1267708 kB
    VmallocTotal
    :   34359738367 kB
    VmallocUsed
    :      156792 kB
    VmallocChunk
    :   34359571452 kB
    HardwareCorrupted
    :     0 kB
    AnonHugePages
    :    104448 kB
    HugePages_Total
    :       0
    HugePages_Free
    :        0
    HugePages_Rsvd
    :        0
    HugePages_Surp
    :        0
    Hugepagesize
    :       2048 kB
    DirectMap4k
    :       51136 kB
    DirectMap2M
    :     2045952 kB 

    همانطور که میبینید، محتویات /proc/meminfo شامل اطلاعات زیادی درباره حافظه memory سیستم شما، که شامل مقدار کل موجود (به kb) و مقدار فضای آزاد در خط دوم دستور بالا میباشد.

    اجرای دستور cat روی هر فایل در دایرکتوری /proc محتوای فایل ها را نمایش خواهد داد. با اجرای دستور زیر، اطلاعات مربوط به هر فایل که در صفحه man موجود است را مشاهده خواهید کرد.
    کد PHP:
    # man 5 /proc/<filename> 
    در اینجا برخی از فایل های /proc را توضیح خواهیم داد.

    /proc/cmdline : اطلاعات کامندی کرنل
    /proc/consoles : اطلاعاتی درباره ترمینال جاری شامل tty
    /proc/devices : درایورهای دیوایس که در حال حاضر برای کرنل در حال اجرا کانفیگ شده اند.
    /proc/dma : اطلاعات درباره DMA Channel (مخفف Direct Memory Access) که یک کانال DMA در حقیت ارتباط مستقیمی است که به دیوایس ها اجازه انتقال دیتا به / از مموری بدون استفاده از Processor را میدهد.
    /proc/fb : دیوایس های Framebuffer
    /proc/filesystems : فایل سیستم های موجود که توسط کرنل پشتیبانی میشود.
    /proc/iomem : نقشه مموری موجود در سیستم برای دیوایس ها
    /proc/ioports : محدوده پورت ریجیستر شده برای ارتباطات ورودی و خروجی با دیوایس
    /proc/loadavg : میانگین Load سیستم
    /proc/locks : فایل هایی که در حال حاضر توسط کرنل مسدود شده اند.
    /proc/meminfo : اطلاعات درباره مموری سیستم
    /proc/misc : درایورهای متفرقه ی ریجیستر شده برای دیوایس های متفرقه
    /proc/modules : ماژول های کرنلی که در حال حاضر Load شده اند.
    /proc/mounts : نمایش تمام mount point ها در حال استفاده توسط سیستم
    /proc/partitions : ریز اطلاعات درباره پارتیشن های موجود برای سیستم
    /proc/pci : اطلاعات درباره هر دیوایس PCI
    /proc/stat : ثبت و نگهداری آمارهای گوناگون از زمان آخرین Reboot
    /proc/swap : اطلاعاتی درباره فضای Swap
    /proc/uptime : اطلاعات UpTime (به ثانیه)
    /proc/version : ورژن کرنل، ورژن gcc و ورژن توزیع لینوکسی موجود

    درون دایرکتوری های شماره دار موجود در /proc شما چندین فایل و لینک پیدا خواهید کرد. به خاطر داشته باشید که شماره دایرکتوریها به PID دستوراتی که در آنها اجرا میشود مرتبط میباشد. اجازه دهید یک مثال بزنیم. در سیستم من، یک فولدر به نام /proc/12 هست.
    کد PHP:
    # cd /proc/12
    # ls 
    نمونه خروجی
    کد PHP:
    attr        comm             fd        maps        ns             personality  stack    uid_map
    autogroup   coredump_filter  fdinfo    mem         numa_maps      projid_map   stat     wchan
    auxv        cpuset           gid_map   mountinfo   oom_adj        root         statm
    cgroup      cwd              io        mounts      oom_score      sched        status
    clear_refs  environ          limits    mountstats  oom_score_adj  sessionid    syscall
    cmdline     exe              loginuid  net         pagemap        smaps        task 

    در صورتی که دستور زیر را اجرا کنم :
    کد PHP:
    # cat /proc/12/status 
    نتیجه زیر را دریافت میکنم :
    کد PHP:
    Name:    watchdog/0
    State
    :    (sleeping)
    Tgid:    12
    Ngid
    :    0
    Pid
    :    12
    PPid
    :    2
    TracerPid
    :    0
    Uid
    :    0    0    0    0
    Gid
    :    0    0    0    0
    FDSize
    :    64
    Groups
    :    
    Threads:    1
    SigQ
    :    0/7281
    SigPnd
    :    0000000000000000
    ShdPnd
    :    0000000000000000
    SigBlk
    :    0000000000000000
    SigIgn
    :    ffffffffffffffff
    SigCgt
    :    0000000000000000
    CapInh
    :    0000000000000000
    CapPrm
    :    0000001fffffffff
    CapEff
    :    0000001fffffffff
    CapBnd
    :    0000001fffffffff
    Seccomp
    :    0
    Cpus_allowed
    :    1
    Cpus_allowed_list
    :    
    و اما خروجی بالا یعنی چه؟ مهمترین بخش قسمت بالای خروجی میباشد. ما از طریق فایل status میتوانیم مشاهده کنیم که این پروسس متعلق به watchdog میباشد. و همچنین وضعیت موجود آن sleeping بوده و کاملا مشخص است که process ID آن 12 میباشد. همچنین میتوانیم مشاهده کنیم که چه کسی آن را اجرا کرده است. از آنجایی که UID و GID آن 0 میباشد مشخص است که این پروسس متعلق به کاربر root میباشد.

    در هر کدام از دایرکتوریهای عددی، شما یک فایل ساختاری مشابه خواهید داشت مهمترین آنها را با توضیح در زیر مثال میزنیم :

    cmdline : خط فرمان پروسس
    environ : متغییرهای محیطی
    fd : مفسرهای فایل
    limits : شامل اطلاعاتی درباره محدودیت های پروسس
    mounts : اطلاعات مربوطه


    شما همچنین ممکن است متوجه تعداد لینک در دایرکتوریهای عددی شوید :

    cwd : لینکی به دایرکتوری در حال کار موجود (PWD) مربوط به پروسس
    exe : لینکی به پروسس قابل اجرا
    root : لینکی به دایرکتوری کاری پروسس


    این مقاله باید شما را با دایرکتوری /proc آشنا کرده باشد. همچنین باید دیدی روی اینکه چگونه یک تعداد از دستورات همانند uptime, lsof, mount و ps اطلاعات آنها را کسب میکنند به دست آورده باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-20-2021, 06:06 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X