HAامروز میخوایم بیشتر با HAL لایه ای که با سخت افزارها در ارتباط هستش و در واقع به صورت عامیانه ی خودمون لباس بسیار ساده تر از چیز یکه سخت افزارهای سیستمی ما هستن رو براشون آماده میکنه, آشنا بشیم. خب در قسمت قبلی در مورد ماهیت و کارایی هر کدوم از لایه ها در سطح سیستم عامل صحبت کردیم ولی خب خارج از لایه ی انتزاعی حتما با خودمون باید بگیم این مواردی که گفته شد رو چطوری میشه بهشون دسترسی داشت. در پوشه root دایرکتوری به نام sys داریم که HAL کل اطلاعات خودش رو اونجا نگه میداره. ابتدا با دستور cd sys به پوشه ی sys رفته سپس دستور ls رو برای نشان دادن محتوای این دایرکتوری میزنیم که محتویات زیر رو داخل سیستم خودتون مشاهده خواهید کرد:
➜ /sys ls block class devices fs kernel power bus dev firmware hypervisor module
برای نمونه دایرکتوری block, بلوک های سیستمی که اغلب هاردها یا فضاهای ذخیره سازی داخلی یا خارجی سیستم هستن رو نشون میده. این فضاها میتونن هارد داخلی, خارجی, USB ها و Logical Volume هایی باشند که موقع نصب یا پیکربندی سیستم ایجاد میشوند.
➜ /sys cd block ➜ block ls dm-0 dm-1 sda sr0
اگر برای نمونه وارد پوشه ی sda بشیم, این امکانات و مشخصات و تنظیمات رو به من خواهد داد:
➜ block cd sda ➜ sda ls alignment_offset events integrity sda1 sda7 subsystem bdi events_async power sda2 sda8 trace capability events_poll_msecs queue sda3 sda9 uevent dev ext_range range sda4 size device holders removable sda5 slaves discard_alignment inflight ro sda6 stat
در کل یک سری اطلاعات به صورت فایل از سخت افزارهای سیستم در اختیار قرار میده و کاری به اسم و مدل سخت افزارهای ما نداره, فقط میگه هارد تو فلان مدله و این امکانات رو در اختیار میذاره. در مورد دایرکتوری مربوط به HAL که اطلاعات سخت افزاری رو نشون میده صحبت کردیم ولی خب لینوکس به باز بودن و قابلیت تغییر مشهوره و چقد خوب میشه اگه بتونیم به بعضی از سخت افزارهامون دسترسی و باهاشون تعامل داشته باشیم.
در پوشه ی root دایرکتوری به نام proc وجود داره که ما علاوه بر دیدن پروسس های سیستم میتونیم به سخت افزارهامون و اطلاعات کرنل (هسته سیستم عامل) مون به صورت انتزاعی هم دسترسی داشته باشیم(اطلاعاتی رو ازشون بخونیم یا روشون بنویسیم.)
➜ ~ cd /proc ➜ /proc ls 1 1326 1505 184 20 30 459 7 832 loadavg 10 1336 1516 1840 2066 31 46 7010 834 locks 1032 1339 1547 1849 2067 3190 462 720 9 mdstat 11 1343 1592 185 2068 32 4641 721 938 meminfo 110 1348 16 1851 2080 33 47 724 acpi misc 111 1351 1606 1853 2082 34 479 726 asound modules 112 1357 1611 1869 2090 3466 48 727 buddyinfo mounts 1129 1363 1622 1870 21 36 480 74 bus mtrr 113 1383 1626 1875 2101 3694 4875 745 cgroups net 1130 14 1628 1883 2115 37 49 747 cmdline pagetypeinfo 1131 1404 1633 1885 2119 3734 50 748 consoles partitions 1133 1405 1636 1886 2122 3778 51 752 cpuinfo sched_debug 1134 1412 1673 1887 2126 378 5167 753 crypto schedstat 114 1415 1678 1889 2154 38 52 754 devices scsi 115 1426 1681 1893 2184 3811 53 755 diskstats self 116 1427 1693 1894 22 385 54 756 dma slabinfo 117 1434 1698 1895 2212 386 542 758 driver softirqs 118 1447 17 1901 2213 387 55 759 execdomains stat 1184 1448 1714 1917 2254 388 56 764 fb swaps 119 1449 1728 1927 2270 3882 565 769 filesystems sys 12 1450 1737 1928 23 389 58 776 fs sysrq-trigger 120 1457 1751 1934 24 39 589 785 interrupts sysvipc 121 1458 1755 1948 2479 4 59 786 iomem thread-self 122 1464 1757 1961 25 40 594 787 ioports timer_list 123 1465 1762 1962 2592 4085 6 788 irq tty 1264 1468 1764 1974 26 4152 60 789 kallsyms uptime 1268 1474 1775 1976 2649 4161 612 790 kcore version 1270 1476 1777 1977 27 4241 632 791 keys vmallocinfo 1275 1477 1783 1978 28 43 635 8 key-users vmstat 1277 1478 18 1979 2812 44 6460 806 kmsg zoneinfo 13 1494 182 1980 2822 448 6746 811 kpagecgroup 130 1498 1822 1983 2840 45 6769 814 kpagecount 131 15 1829 1984 29 4503 697 823 kpageflags 1322 1501 1836 2 2978 451 698 830 latency_stats
چون یادگیری ما قرار هست ساده باشه و نمیخوایم با تنظیمات پیچیده جلو بریم به سراغ پوشه ی procsysfs خواهیم رفت و که فایلی با عنوان file_max که حداکثر تعداد باز بودن فایل درون سیستم عامل از طریف یک کاربر را مشخص میکند:
➜ fs ls aio-max-nr file-nr mqueue protected_hardlinks aio-nr inode-nr nr_open protected_symlinks binfmt_misc inode-state overflowgid quota dentry-state inotify overflowuid suid_dumpable dir-notify-enable lease-break-time pipe-max-size epoll leases-enable pipe-user-pages-hard file-max mount-max pipe-user-pages-soft ➜ fs cat file-max 385672
که به صورت کاملا Live قابلیت تغییر
[root@fedora]/proc/sys/fs# echo 100000 > file-max [root@fedora]/proc/sys/fs# cat file-max 100000
همچنین در پوشه ی proc به اطلاعات دیگه مثل اطلاعات cpu و ریز جزيیات هر پروسسور خودتون و همچنین اطلاعات حافظه به منظور درک بهتر نسبت به جزییات سیستم خودتون داشته باشید, میتونید با دستور زیر دسترسی پیدا کنید:
➜ /proc cat cpuinfo| less
➜ /proc cat meminfo | less
و همچنین تمام بلوک های حافظه قابل خواندن سیستمی را هم از طریق دستور زیر میتوانیم ببینیم :
➜ /proc cat mounts
تنظیمات جالب شبکه ای سطح کرنل سیستم عامل هم داخل پوشه ی procsysnet موجود میباشد, که شما میتونید تنظیمات مربوط به حافظه tcp در سیستم خودتون (tcp-mem) و یا اطلاعات مربوط به پروتکل icmp (دریافت ایمیل) و اطلاعات مربوط به بسته های ip را تغییر دهید. برای نمونه بعد از گرفتن دستور cat ip-forward میتونید مقدار این دستور رو دست خوش تغییر کنید در واقع این فایل به شما میگه که آیا سیستم شما نقض روتر را ایفا میکند و ip ها را از از خود به مسیر دیگری عبور میدهد
➜ /proc cd sys/net/ipv4 ➜ ipv4 ls
فقط این نکته رو فراموش نکنیم که پوشه proc یک دایرکتوری مجازی از تنظیمات سطح کرنل میباشد و اگر واقعا قصد تغییر دایمی این تنظیمات رو بر روی سیستم خود داریم باید از طریق دایرکتوری etc اقدام به تغییر این موارد در سطح کرنل نماییم.
برنامه نویس و متخصص Distributed Ledgers
فارغ التحصیل رشته سخت افزار دانشگاه شاهد هستم ، بیشتر فعالیتی که در حوزه شبکه داشته ام در حوزه زیرساخت های ارتباطی سیسکو و مایکروسافت بوده است ، دوره های CISCO(CCNA_CCNP) و MCSE را در مجتمع فنی تهران شعبه ابن سینا سپری کرده ام ، در حوزه رباتیک دارای عناوین مختلف کشوری در مسابقات داخلی هستم و علاقه مند به کارهای عملی در حوزه شبکه می باشد ، در این راستا در چندین شرکت بصورت پروژه ای و کارآموزی پروژه هایی در حوزه زیرساختی ، مایکروسافتی و VOIP را نیز انجام داده ام ، بصورت کلی دستی در برنامه نویسی و
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود