You are on page 1of 175

‫جزوه آموزشی‬

‫لینوکس مقدماتی )‪(LPIC-1‬‬


‫دپارتمان‪ :‬فناوری اطالعات و نرمافزار‬
‫موضوع‪ :‬جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬
‫شناسه افزوده‪1 :‬پ‪LL1/‬‬
‫چاپ اول‪ :‬بهار ‪1۳۹۶‬‬
‫آدرس وبسایت‪Www.Paravid.com :‬‬
‫آدرس پست الکترونیک‪Support@Paravid.com, Sales@Paravid.com :‬‬
‫آدرس‪ :‬تهران‪ ،‬خیابان آزادی‪ ،‬ضلع شمالی دانشگاه صنعتی شریف‪ ،‬کوچه گلستان‪ ،‬پالک ‪۹‬‬
‫تلفن‪۰۲1۶۶1۵۶۸۸۴ -۰۲1۶۶1۵۶۸۷۷ :‬‬
‫و ورگونه ک یبرداری‪ ،‬تکثیر و چاپ کاغذی بدون اجازه پرآوید‬ ‫کلیه حقوق این جزوه متعلق به پرآوید استتت‬
‫تخلف محسوب میشود‪.‬‬

‫جزوه آموزشی‬

‫لینوکس مقدماتی )‪(LPIC-1‬‬


‫چرا لینوکس؟‬
‫تا از آن استفاده‬ ‫بیش از ‪ 1۵‬میلیون خط کد بهصورت رایگان در اختیار شما گذاشته شده اس‬
‫کنید‪ .‬چرا از آن استفاده کنیم؟ از دو دیدگاه میتوان به این سؤال پاسخ داد‪.‬‬
‫‪ ‬اول از طریق اشاره به افراد‪ ،‬تیموا و شرک وای عظیمی که از لینوکس استفاده میکنند‪،‬‬
‫ومچون ‪ ،Hitcachi ،Intel ،Amazon.com ،HP ،IBM ،Yahoo ،Google‬بسیاری از دانشگاهوا‪،‬‬
‫تیموای ‪ CERN‬و بسیاری دیگر‪ .‬جالب اس بدانید که ‪ Microsoft‬در سال ‪ ۲۰1۲‬در میان‬
‫بیش از ‪ ۸۰۰‬شرک جزو ‪ ۲۰‬توسعهدوندهی اول وستهی لینوکس بود‪.‬‬
‫‪ ‬دوم از طریق شمردن و آموزش ویژگیوا و امکانات فوقالعادهای که لینوکس دارد که بامطالعه‬
‫ی این کتاب‪ ،‬قدموای مهمی در این راه برمیدارید‪.‬‬

‫چرا این کتاب؟‬


‫با توسعهی ابزاروای ارتباطی‪ ،‬دسترسی به منابع بسیار آسانتر از قبل شده اس ‪ .‬ورچند این مسئله‬
‫از یکسو مفید اس ‪ ،‬اما از طرفی باعث سردرگمی نیز میشود‪ .‬فرد عالقهمند به دنبال این اس که‬
‫از وق با ارزش خود برای یادگرفتن لینوکس به بهترین صورت استفاده کند‪ ،‬پس به دنبال یک‬
‫منبع مناسب اس که نقطهی شروع خوبی باشد و ومچنین سرنخوای بسیار مناسبی را برای ادامهی‬
‫کار ارائه کند‪ .‬ازآنجاکه این کتاب حاصل تجربهوای اساتیدی جهانی‪ ،‬و تدریس شده در کالسوای‬
‫لینوکس آزمایشگاه یادگیری فناوری اطالعات پیشرفته دانشگاه صنعتی شریف (الیتک)‬
‫اس ‪ ،‬و اینکه در آن به مهمترین نکات آموزشی لینوکس توجه شده و دقیقاً بر اساس سرفصلوای‬
‫‪ LPIC1‬اس ‪ ،‬مطالعهی آن اومی پیدا میکند‪.‬‬
‫فهرست‬
‫عنوان ‪..........................................................................‬صفحه‬

‫چرا لینوکس ‪4 .........................................................................................................................‬‬

‫مقدمه‪14 ..................................................................................................................................‬‬

‫چرا به خواندن این کتاب نیاز دارم ‪1۴ ............................................................................................................‬‬


‫چگونه این کتاب را مطالعه کنم ‪1۵ .................................................................................................................‬‬
‫یادداش برداری و ‪ USB‬نمونه فایلوا ‪1۶.......................................................................................................‬‬

‫معماری سیستم ‪17 ....................................................................................................................‬‬

‫پیکربندی سخ افزار ‪1۸ ...................................................................................................................................‬‬


‫درک نقش ‪1۸ ............................................................................................................................ firmware‬‬
‫بررسی قطعات ‪1۹ .................................................................................................................................... USB‬‬
‫دستور ‪ LSPCI‬و آدرسوای مربوط به دستگاهوای ‪۲۰ ........................................................................ PCI‬‬
‫آشنایی با ‪۲1 ................................................................................................................ KERNEL MODULES‬‬
‫بررسی دایرکتوری‪۲۲ .............................................................................................................................../DEV‬‬
‫دستهبندی دستگاهوا (‪۲۳ ......................................................................................................... )devices‬‬
‫نمایش محتوای فایل ‪۲۴ ..............................................................................................................................‬‬
‫روش دادن اسم دوّم به یک ‪۲۴ ................................................................................................... device‬‬
‫تعریف یک دستگاه جدید با دستور ‪۲۴ .................................................................................... mknod‬‬
‫بررسی دایرکتوری ‪۲۶............................................................................................................................ /PROC‬‬
‫فایل ‪۲۷ ....................................................................................................................................... interrupts‬‬
‫‪۲۷ ...................................................................................................................................... timer interrupt‬‬
‫بررسی دایرکتوری ‪۲۸ .............................................................................................................................. /SYS‬‬
‫دستوراتی برای بررسی سخ افزار‪۲۸ .............................................................................................................‬‬
‫‪ coldplug‬در مقابل ‪۲۹ ............................................................................................................... hotplog‬‬
‫نحوهی باال آمدن یا ‪ BOOT‬شدن سیستم ‪۳1 .................................................................................................‬‬
‫فایل ‪۳۳ ..................................................................................................................... /var/log/messages‬‬
‫مدیری سرویسوا به روش ‪۳۳ .................................................................................................SYSTEM V‬‬
‫مزایای مدیر سرویس ‪۳۴ .............................................................................................................SYSTEM V‬‬
‫ایرادوای مدیری سرویسوا با ‪۳۴ ........................................................................................... SYSTEM V‬‬
‫بررسی ‪RUNLEVEL‬وا در لینوکس ‪۳۵ ............................................................................................................‬‬
‫مدیری سرویسوا با ‪۴۰ ................................................................................................................UPSTART‬‬
‫مفهوم ‪ Job‬در ‪۴۰ ..........................................................................................................................Upstart‬‬
‫وضعی وای مختلف یک ‪( job‬ساده) ‪۴1 .................................................................................................‬‬
‫وضعی وای مختلف یک ‪( job‬کاملتر) ‪۴1 .............................................................................................‬‬
‫مراحل آغاز یک ‪۴۲ ............................................................................................................................... Job‬‬
‫مراحل پایان یافتن یک ‪۴۲ ................................................................................................................. Job‬‬
‫‪۴۳ ........................................................................................................................................................ initctl‬‬
‫اطالعات بیشتر در مورد ‪۴۳ ........................................................................................................... initctl‬‬
‫‪۴۳ ......................................................................................................................................................... event‬‬
‫انواع ‪۴۴ ................................................................................................................................................ event‬‬
‫ترتیب منتشر شدن رخدادوا ‪۴۴ ................................................................................................................‬‬
‫ترتیب اجرای ‪Job‬وا بر اثر یک رخداد ‪۴۴ ...............................................................................................‬‬
‫مدیری ‪runlevel‬وا در ‪۴۵ .........................................................................................................Upstart‬‬
‫‪ SYSTEMD‬چیس ‪۴۵ ........................................................................................................................................‬‬
‫خاموش کردن سیستم ‪۴۶..................................................................................................................................‬‬
‫نکاتی در مورد ‪۴۶....................................................................................................................../etc/init.d‬‬

‫ساختار لینوکس ‪48 ...................................................................................................................‬‬

‫چارت سازمانی لینوکس ‪۴۸ ..............................................................................................................................‬‬


‫بررسی دایرکتوری‪۴۹ ....................................................................................................................................... /‬‬
‫بررسی دایرکتوری ‪۴۹ ................................................................................................................................ BIN‬‬
‫بررسی دایرکتوری ‪۵۰ ............................................................................................................................ BOOT‬‬
‫بررسی دایرکتوری ‪۵1 ........................................................................................................................... HOME‬‬
‫‪۵1 ........................................................................................................................ MASTER BOOT RECORD‬‬
‫یک سناریو عملی ‪۵۴ ....................................................................................................................................‬‬
‫فرمان ‪۵۵ ............................................................................................................................................ string‬‬
‫بررسی دایرکتوری ‪۵۶..................................................................................................................................LIB‬‬
‫پیکربندی مسیروای مربوط به فایلوای کتابخانهای ‪۵۷ ............................................................................‬‬
‫مدیری فضای دیسک با ‪۵۷ .................................................................................................................LVM‬‬
‫دایرکتوری ‪۵۸ .........................................................................................................................................../VAR‬‬

‫مدیریت بستههای نرمافزاری ‪59...........................................................................................‬‬

‫مدیری بستهوا با ‪۵۹ ............................................................................................................................... RPM‬‬


‫ابزار ‪۶1........................................................................................................................... YUMDOWNLOADER‬‬
‫فایل پیکربندی ‪۶1............................................................................................................. /ETC/YUM.CONF‬‬
‫تواناییوای ‪ RPM‬مختص ‪۶1................................................................................................................. ROOT‬‬
‫بازبینی بسته نرمافزاری ‪۶۸..........................................................................................................................‬‬
‫مدیری بستهوای نرمافزاری توسط ‪۷۰ .......................................................................................APT-GET‬‬
‫نصب بستهی نرمافزاری ‪۷۰ .........................................................................................................................‬‬
‫حذف بستهی نرمافزاری ‪۷۰ ........................................................................................................................‬‬
‫نحوهی بهروزرسانی نرم افزاروا‪۷1 .............................................................................................................‬‬
‫نحوهی بهروزرسانی توزیع ‪۷1 .....................................................................................................................‬‬
‫جستجوی بستهوا ‪۷1 ...................................................................................................................................‬‬
‫مدیری بستهوا توسط فرمان ‪۷1 ........................................................................................................ DPKG‬‬
‫روش نصب و بروز رسانی ‪۷1 .......................................................................................................................‬‬
‫روش نصب ومزمان چند بسته نرم افزاری ‪۷۲ .......................................................................................‬‬
‫روش حذف بسته نرم افزاری ‪۷۲ ................................................................................................................‬‬
‫لیس تمامی بستهوای نرم افزاری نصب شده‪۷۲ .................................................................................‬‬
‫پیکربندی مجدد بستهوای نصب شده ‪۷۳ ...............................................................................................‬‬
‫دستور ‪۷۳ ...................................................................................................................................... aptitude‬‬

‫دستورات لینوکس‪74 .............................................................................................................‬‬

‫فرمانوای لینوکس ‪۷۶.......................................................................................................................................‬‬


‫فرمان ‪۷۶........................................................................................................................................... history‬‬
‫فرمان ‪۷۶................................................................................................................................................ who‬‬
‫فرمان ‪۷۶................................................................................................................................................bash‬‬
‫فرمان ‪۷۶.........................................................................................................................................apropos‬‬
‫فرمان ‪ man‬و ‪ help‬و ‪۷۶..................................................................................................................... info‬‬
‫تعریف متغیر در لینوکس ‪۷۸ ............................................................................................................................‬‬
‫فرمان ‪۷۸ ............................................................................................................................................... read‬‬
‫ادامه فرمان ‪۷۹ ..................................................................................................................................... read‬‬
‫تعریف ‪ FUNCTION‬در لینوکس‪۸۰ ..................................................................................................................‬‬
‫فرمان ‪۸۰ ...............................................................................................................................................alias‬‬
‫‪۸۰ ....................................................................................................................... COMMAND COMPLETION‬‬
‫فرمان ‪۸1 .................................................................................................................................................. cal‬‬
‫فرمان ‪۸1 .................................................................................................................................................env‬‬
‫بکارگیری خصوصیات فرمانوا ‪۸1 ..................................................................................................................‬‬
‫فرمان ‪۸1 .................................................................................................................................................... w‬‬
‫فرمان ‪۸۲ .................................................................................................................................................... id‬‬
‫فرمان ‪۸۲ ............................................................................................................................................ finger‬‬
‫فرمان ‪۸۲ .............................................................................................................................................. copy‬‬
‫فرمان ‪۸۳ .................................................................................................................................................. cat‬‬
‫فرمان ‪۸۳ .................................................................................................................................................. cut‬‬
‫فرمان ‪۸۳ ............................................................................................................................................... mail‬‬
‫تئوری فان نیومن ‪۸۴ ....................................................................................................................................‬‬
‫‪۸۴ ....................................................................................................................................................... PIPE FILE‬‬
‫فرمان ‪۸۴ ................................................................................................................................................ sort‬‬
‫فرمان ‪ head‬و ‪۸۵ ...................................................................................................................................tail‬‬
‫فرمان ‪۸۶................................................................................................................................................... tac‬‬
‫فرمان ‪۸۶...................................................................................................................................................rev‬‬
‫فرمان ‪۸۶................................................................................................................................................. less‬‬
‫فرمان ‪۸۶............................................................................................................................................. watch‬‬
‫فرمان ‪۸۷ ............................................................................................................................................... grep‬‬
‫ساخ فایل از خروجی یک فرمان ‪۸۷ ............................................................................................................‬‬
‫ساخ دایرکتوری ‪۸۸ ........................................................................................................................................‬‬
‫ساخ فایل ‪۸۸ ....................................................................................................................................................‬‬
‫فرمان ‪۸۹ ...............................................................................................................................................exec‬‬
‫استفاده از دستورات ‪ cut‬و ‪۸۹ ........................................................................................................... less‬‬
‫بررسی سیگنالوا ‪۹۰ ..........................................................................................................................................‬‬
‫مرجع فرمانوا ‪۹1 ...............................................................................................................................................‬‬
‫اطالعات سیستم ‪۹1 ...........................................................................................................................................‬‬
‫کلیدوای میانبر در خط فرمان ‪۹۲ .................................................................................................................‬‬
‫فرمانوایی برای یادگیری فرمانوای بیشتر و تازه ‪۹۳ ................................................................................‬‬
‫جستجو ‪۹۳ ...........................................................................................................................................................‬‬
‫فرمانوای مربوط به کار با فایلوا ‪۹۴ .............................................................................................................‬‬
‫فشردهسازی و پشتیبانگیری‪۹۶......................................................................................................................‬‬
‫ابزاروا و فرمانوای پرین ‪۹۶............................................................................................................................‬‬
‫شبکه ‪۹۷ ...............................................................................................................................................................‬‬
‫‪۹۸ ................................................................................................................................................................ SSH‬‬
‫مدیری کاربران ‪۹۸ ............................................................................................................................................‬‬
‫مدیری ‪ PROCESS‬وا‪۹۸ ...................................................................................................................................‬‬
‫کار با کد منبع و نصب از روی آن ‪۹۹ ..............................................................................................................‬‬
‫توقف و راهاندازی ‪۹۹ ...........................................................................................................................................‬‬

‫فشردهسازی و ‪BACKUP‬گیری ‪100 .....................................................................................‬‬

‫روشوای فشردهسازی‪1۰۰ ..............................................................................................................................‬‬


‫اولین روش‪1۰1 ................................................................................................................................. gzip :‬‬
‫دومین روش‪1۰1 ................................................................................................................................... zip:‬‬
‫سوّمین روش‪1۰1 ........................................................................................................................... bzip2 :‬‬
‫نحوهی گرفتن ‪1۰۲ ...........................................................................................................................BACKUP‬‬
‫دالیل ‪ backup‬گیری ‪1۰۲ ..........................................................................................................................‬‬
‫فرمان ‪1۰۳ ................................................................................................................................................tar‬‬
‫فرمان ‪1۰۶................................................................................................................................................ rsh‬‬
‫فرمان ‪1۰۶............................................................................................................................................. cpio‬‬
‫تشخیص فایلوای از نوع ‪1۰۷ ......................................................................................................... cpio‬‬

‫ویرایشگرها در لینوکس ‪109..................................................................................................‬‬

‫ویرایشگر ‪1۰۹ ............................................................................................................................................. VIM‬‬


‫انواع حال وای کاری در ‪11۰ ........................................................................................................... vim‬‬
‫دستورات و فرامین مهم و کاربردی ویرایشگر ‪11۳ ............................................................................. VIM‬‬
‫تعریف ‪11۶........................................................................................................................... abbreviation‬‬
‫دستگاهها‪ ،‬فایل سیستمها و استاندارد سلسله مراتب فایلسیستم‪117 .............................‬‬

‫‪ MOUNT‬و ‪ UNMOUNTS‬کردن ‪11۹ ................................................................................................................‬‬


‫فضای ‪1۲1 ............................................................................................................................................... SWAP‬‬
‫برخی دستورات مهم ‪1۲۲ .................................................................................................................................‬‬
‫فایل سیستم ‪1۲۲ ............................................................................................................................... XFS‬‬
‫مالک و مجوزوای فایل ‪1۲۳ .............................................................................................................................‬‬
‫ساختن لینک ‪1۲۴ ..............................................................................................................................................‬‬
‫ابزاروای جستجو ‪1۲۵ ........................................................................................................................................‬‬
‫‪ QUOTA‬چیس ‪1۲۷ .........................................................................................................................................‬‬
‫مراحل پیاده سازی‪1۲۷ ................................................................................................................. Quota‬‬
‫فعال کردن‪1۲۷ ............................................................................................................................... Quota‬‬
‫فعال کردن‪1۲۸ ................................................................................................................ journal quota‬‬
‫ایجاد دیتابیس‪1۲۸ ......................................................................................................................... Quota‬‬
‫‪1۲۸ ...................................................................................................................................... Quota Policy‬‬
‫‪1۲۹ .................................................................................................................................................REPQUOTA‬‬

‫نوشتن اسکریپت و مدیریت دادهها ‪130 ...............................................................................‬‬

‫فایلوای مهم ‪1۳۴ ................................................................................................................................. BASH‬‬


‫مدیری پایگاهدادهوای ‪1۳۵ .................................................................................................................. SQL‬‬

‫واسطهای کاربری ‪136.............................................................................................................‬‬

‫استفاده از ‪ CLIENT‬وای ‪ X‬بر روی شبکه ‪1۳۶..............................................................................................‬‬


‫فعال و غیرفعال کردن محیط گرافیکی ‪1۳۷ .................................................................................................‬‬
‫تنظیمات محیط گرافیکی ‪1۳۸ ..................................................................................................................‬‬

‫فعالیتهای مدیریتی ‪140.........................................................................................................‬‬

‫کاروای برنامهریزی شده ‪1۴۲ ..........................................................................................................................‬‬


‫امکانات زبان و منطقهای لینوکس ‪1۴۳ ..........................................................................................................‬‬
‫‪ LOCALE‬چیس ؟ ‪1۴۴ ......................................................................................................................................‬‬
‫تغییر دادن ‪ locale‬مربوط به فایلوای متنی ‪1۴۴ ................................................................................‬‬

‫سرویسهای ضروری سیستم ‪145 ..........................................................................................‬‬


‫‪1۴۵ ............................................................................................................................................................. NTP‬‬
‫ابزار ‪1۴۶............................................................................................................................................. HWLOCK‬‬
‫ثب وقایع (‪ )LOG‬در لینوکس‪1۴۶..................................................................................................................‬‬
‫بررسی ‪1۴۷ ...................................................................................................................................... SYSLOGD‬‬
‫دالیل ایجاد ‪ LOG‬در سیستم ‪1۴۸ ...................................................................................................................‬‬
‫تنظیمات مربوط به ‪1۴۹ ....................................................................................................... LOG DAEMON‬‬
‫ابزار ‪1۵۰ ............................................................................................................................................. LOGGER‬‬
‫‪ ROTATE‬کردن فایلوای ‪1۵۰ ................................................................................................................LOG‬‬
‫بررسی ‪MAIL SERVER‬وای لینوکس ‪1۵1 .....................................................................................................‬‬
‫‪ redirect‬کردن ایمیل ‪1۵۲ .........................................................................................................................‬‬
‫مدیری بر روی چاپ و چاپگروا ‪1۵۲ .............................................................................................................‬‬
‫ابزاروا ‪1۵۳ ......................................................................................................................................................‬‬

‫کار با شبکه‪154.......................................................................................................................‬‬

‫سخ افزار شبکه ‪1۵۴ ........................................................................................................................................‬‬


‫بررسی پروتکلوای ‪1۵۴ ................................................................................................................... TCP/IP‬‬
‫پورتوای شبکه ‪1۵۷ .........................................................................................................................................‬‬
‫پروتکل ‪1۵۸ ............................................................................................................................................... FTP‬‬
‫‪1۵۹ ....................................................................................................................................................... TELNET‬‬
‫‪1۵۹ ............................................................................................................................................................ HOST‬‬
‫‪1۵۹ ............................................................................................................................................................... DIG‬‬
‫‪1۶۰............................................................................................................................................ TRACEROUTE‬‬
‫ابزار ‪1۶۰......................................................................................................................................................PING‬‬
‫پیکربندی با آدرس ‪ IP‬استاتیک ‪1۶۰..............................................................................................................‬‬
‫پیکربندی ‪1۶۲..................................................................................................................................ROUTING‬‬
‫ابزار ‪1۶۳............................................................................................................................................. NETSTAT‬‬

‫امنیت ‪165 ................................................................................................................................‬‬

‫ابزاروایی برای مدیری رمز عبور ‪1۶۵.............................................................................................................‬‬


‫سرور تنومند در لینوکس ‪1۶۶ ..........................................................................................................................‬‬
‫پیکربندی ‪1۶۶ ........................................................................................................................................ INETD‬‬
‫پیکربندی ‪1۶۷..................................................................................................................................... XIENTD‬‬
‫ابزار ‪1۶۹..................................................................................................................................................... LSOF‬‬
‫استفاده از ‪1۶۹........................................................................................................................................ NMAP‬‬
‫محدود کردن دسترسی ‪1۶۹.................................................................................................................ROOT‬‬
‫تعیین محدودی وا‪1۷۰ ....................................................................................................................................‬‬
‫دستور ‪ FIND‬از دیدگاه امنی ‪1۷1 ..................................................................................................................‬‬
‫پیکربندی ‪1۷1 .......................................................................................................................................... SSH‬‬
‫کنترل دسترسی ‪1۷۲ .............................................................................................................................. SSH‬‬
‫ک ی امن با ‪1۷۲ .......................................................................................................................................... SCP‬‬
‫استفاده از ‪1۷۳ ......................................................................................................................................... GPG‬‬

‫نصب ‪174........................................................................................................... CENTOS 6‬‬

‫اگر اولین بار اس که ‪1۷۴ ............................................................................................................................ ...‬‬


‫اتصال اینترن ‪1۷۴ .............................................................................................................................................‬‬
‫نصب در ‪1۷۵ .................................................................................................... VMWARE WORKSTATION‬‬
‫مقدمه‬
‫چرا ‪ Linux‬اینقدر محبوب اس و توانایی استفاده و مدیری آن اینقدر اومی پیداکرده اس ؟‬
‫چرا بهعنوان یک خبره و عالقهمند در زمینهی ‪ IT‬الزم اس که به این سیستمعامل مسلط باشید؟‬
‫حقیق این اس که این سیستمعامل بهسرع در حال رشد‪ ،‬رایگان و منعطف اس ‪ .‬این‬
‫سیستمعامل توانایی کار در سروروایی بسیار عظیم تا کام یوتروای رومیزی و جیبی را دارد‪ .‬عالوه‬
‫بر ‪ Android‬که وستهی اصلی آن بر اساس وستهی لینوکس اس ‪ ،‬به لطف ‪Ubuntu Phone‬‬
‫گوشیوای ووشمند جدیدی نیز به این لیس در حال اضافه شدن وستند‪ .‬حتی اگر قبالً با‬
‫سیستموای ویندوز و ‪ Mac‬کارکرده باشید‪ ،‬دانستن لینوکس برای شما این برتری را ایجاد خواود‬
‫کرد که نسب به دیگران یک سر و گردن باالتر باشید؛ شانس بیشتری برای ترفیع گرفتن داشته‬
‫باشید و موقعی وای کاری بهتری در انتظار شما باشد‪.‬‬

‫چرا به خواندن این کتاب نیاز دارم؟‬


‫اگر برای یادگیری لینوکس از این کتاب استفاده کنید‪ ،‬بدون شک قدموای محکم و باصالبتی در‬
‫این زمینه برداشتهاید‪ .‬یادتان باشد که رسیدن به نتیجهای مطلوب در این زمینه‪ ،‬نیازمند تالشی‬
‫اس که شما به نمایش خواوید گذاش ‪ .‬ممکن اس عالقهمند به داشتن کاری خوب در زمینهی‬
‫لینوکس باشید؛ مثالً میخواوید مدیر سیستم شوید یا یک برنامهنویس متخصص لینوکس‪ ،‬در این‬
‫صورت این کتاب بهترین انتخاب برای شماس ‪ .‬در این کتاب مهارتوای الزم برای نصب‪ ،‬مدیری‬
‫و رفع اشکال سیستموای لینوکس بهصورت حرفهای آموزش داده میشود‪ .‬ومچنین مبانی الزم‬
‫برای کار با سخ افزاروا و افزودن سخ افزاروای جدید به سیستم بیان خواود شد‪ .‬بامطالعهی این‬
‫کتاب شما توانایی شرک در آزمونوای حرفهای لینوکس را کسب خواوید کرد‪ .‬نصب‪ ،‬پیکربندی‪،‬‬
‫نگهداری‪ ،‬شبکه و امنی مفاویمی وستند که در این کتاب موردبررسی قرارگرفتهاند‪.‬‬
‫تمام کسانی که عالقهمند به استفاده از لینوکس وستند‪ ،‬از مطالعهی این کتاب سود خواوند برد‪.‬‬
‫این کتاب یک رویکرد حرفه ای نسب به یادگیری لینوکس و کسب تسلط در آن دارد‪ .‬در نگارش‬
‫‪1۵‬‬ ‫مقدمه‬

‫این کتاب از توصیهوای متخصصان با دانش و تجربهی باال‪ ،‬بهخصوص مهندس حاجیغالمعلی‪ ،‬که‬
‫فردی باتجربهوای جهانی در این زمینه وستند‪ ،‬استفاده شده اس که از این جه این کتاب را‬
‫متفاوت و کمنظیر میکند‪.‬‬

‫چگونه این کتاب را مطالعه کنم؟‬


‫این کتاب با توجه به سرفصلوای آزمون ‪ LPIC1‬آمادهشده اس ‪ .‬ترتیب قرار گرفتن فصلوا به‬
‫ومان ترتیب سرفصلوای آزمون اس ‪ .‬به خوانندهی مبتنی توصیه میکنیم که کتاب را به ومان‬
‫ترتیب فصلوا دنبال کند و بعدازاینکه یکبار کتاب را خواند‪ ،‬میتواند برای مطالعهی بیشتر به‬
‫فصلوایی که نیاز بهمرور بیشتر دارند‪ ،‬مراجعه کند‪ .‬خوانندهای که دانش قبلی در مورد لینوکس و‬
‫آزمون ‪ LPIC1‬دارد‪ ،‬میتواند به فصلوایی که بیشتر به آن نیاز دارد و به ترتیب دلخواه خود مراجعه‬
‫کند‪.‬‬
‫به خاطر دا شته با شید که به ازای ور یک ساع مطالعه حداقل سه ساع (حتی بی شتر) تمرین‬
‫عملی در کام یوتر دا شته با شید‪ .‬بنابراین از وماکنون د ستر سی به یک سی ستم لینوکس را برای‬
‫خود تدارک ببینید‪ .‬ور جا نکته ای در کتاب گفته شتتتد‪ ،‬بعد از مطالعه به دنبال تمرین عملی آن‬
‫با شید؛ مثالً اگر د ستور ‪ ps‬را یاد گرفتید‪ ،‬که یکی از پرکاربردترین و مهمترین د ستورات لینوکس‬
‫استت ‪ ،‬حتماً بعد از یادگیری مطلب در کتاب‪ ،‬استتتفادهی عملی آن را تجربه کنید و ومینطور به‬
‫صتتفحهی راونمای آن‪ 1‬دستتتور با اجرای ‪ man ps‬مراجعه نمایید‪ .‬بهعنوانمثال صتتفحهی راونمای‬
‫این د ستور بیش از وزار خط تو ضیح دارد‪ .‬یادتان با شد برای م سلط شدن به ق سم وای مختلف‬
‫لینوکس و تبدیلشتتتدن به یک متخصتتتص و ومینطور قبولی در آزمون ‪ LPIC1‬الزم استتت که‬
‫تجربه ی عملی خوبی در ا ستفاده از لینوکس دا شته با شید‪ .‬ورچه که بی شتر تمرین عملی دا شته‬
‫باشتتید‪ ،‬ومانقدر مطالب در ذون شتتما بیشتتتر خواود ماند و ستترع کار و حضتتور ذون باالتری‬
‫خواوید داش ؛ در این صورت افراد به شما‪ ،‬بهعنوان یک متخصص‪ ،‬بیشتر اعتماد خواوند داش ‪.‬‬
‫یک نکته ی مهم دیگر وم این ا س که به خاطر دا شته با شید که از ابزاروایی که دارید به بهترین‬
‫نحو استفاده کنید‪ .‬مثالً ورگاه سؤالی برای شما پیش آمد حتماً به صفحات ‪ man‬لینوکس مراجعه‬
‫کنید‪ .‬مثالً اگر در مورد ‪ usb‬میخواوید ببینید که چه دستتتوراتی در لینوکس وجود دارد‪ ،‬دستتتور‬
‫زیر را بزنید‪:‬‬
‫‪apropos usb | less‬‬
‫آن حرک کنید و با ‪q‬‬ ‫در خروجی این دستور‪ ،‬که میتوانید با فلش وای باال یا پایین در‬
‫از آن خارج شوید‪ ،‬لیس دستورات مرتبط با ‪ usb‬و ومینطور توضیحات یک خطی آنوا را خواوید‬
‫یاف ‪ /.‬که با دستور ‪ man‬میتوانید توضیحات کامل آنوا را نیز مشاوده کنید‪.‬‬

‫‪1‬‬ ‫‪man page‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪1۶‬‬

‫عالوه بر صفحات ‪ man‬خود لینوکس و توضیحاتی که در داخل خود سیستم وجود دارد‪،‬‬
‫با استفاده از اینترن وم میتوانید به منابع بسیاری دسترسی داشته باشید‪ .‬مثالً در گوگل عبارت‬
‫زیر را جستجو کنید‪:‬‬
‫‪linux usb‬‬
‫ال‬
‫که اطالعات زیادی در مورد ‪ usb‬در محیط سیستمعامل لینوکس برای شما برمیگرداند‪ .‬یا مث ً‬
‫عبارت زیر را جستجو کنید‪:‬‬
‫‪linux usb command‬‬
‫که در مورد دستوراتی که در رابطه با ‪ usb‬در سیستمعامل لینوکس موجود اس برای شما اطالعات‬
‫زیادی را برمیگرداند‪.‬‬
‫عالوه بر اینوا عضو شدن در گروهوایی که در رابطه با لینوکس وستند اطالعات شما را بهروز نگه‬
‫خواود داش و ومینطور درصورتیکه سؤالی داشته باشید بهراحتی میتوانید آنوا را مطرح کرده‬
‫و از افرا د با تجربه پاسخ خود را دریاف کنید‪ .‬یکی از بهترین جوامع مجازی که به این منظور وجود‬
‫دارد ‪ linux‬در ‪ it.toolbox.com‬اس که اکید توصیه میکنیم بهعنوان یک متخصص لینوکس در‬
‫آن عضو شوید‪ .‬به این منظور به آدرس زیر مراجعه نمایید‪:‬‬
‫‪http://linux.ittoolbox.com‬‬

‫یادداشتبرداری و ‪ USB‬نمونه فایلها‬


‫یکی از بهترین توصیهوایی که به یک فرد در حال یادگرفتن لینوکس میتوان کرد این اس که‬
‫ومواره از مطالبی که یاد میگیرد‪ ،‬یادداش برداری کند و این یادداش وا را بهصورت منظم در‬
‫فایلوایی با ناموای مرتبط بر روی یک فلش درایو نگه دارد‪ .‬پس یک فلش درایو داشته باشید که‬
‫تنها برای این ودف‪ ،‬و نه ویچ کاربرد دیگری‪ ،‬در نظر گرفتهشده اس ‪ .‬درگذر زمان‪ ،‬شما بهواسطه‬
‫ی مطالعه و ومینطور کار کردن با سیستموای مختلف دانش و تجربهی زیادی کسب میکنید‪ ،‬اما‬
‫یک فرد در ورلحظه نمیتواند اطالعات بسیار زیادی را در حافظهی خود بهصورت شناور داشته‬
‫باشد‪ ،‬که انتظار داشتن چنین حضور ذونی وم به دور از واقعبینی اس ‪ .‬اکید ًا به شما توصیه میکنم‬
‫که وقتی دستوری را که بسیار مفید اس یاد گرفتید یا اینکه فایل تنظیمات و پیکربندی خاصی را‬
‫که مربوط به برنامهای اس که برای شما مفید اس انجام دادید‪ ،‬درصورتیکه فکر میکنید در آینده‬
‫نیز به آن نیاز پیدا خواوید کرد و برایتان مفید خواود بود‪ ،‬برای خودتان یادداشتی تهیه کنید‪ .‬یادتان‬
‫باشد که شما ومیشه به اینترن دسترسی ندارید‪ ،‬یا حتی اگر وم داشته باشید تنظیماتی را که پس‬
‫از ساع وا تالشِ خودتان به آن رسیدهاید با یک جستجوی ساده در اینترن نخواوید یاف ‪ .‬برای‬
‫زحمات خودتان ارزش قائل شوید و آنوا را ثب کنید‪.‬‬
‫‪1‬‬
‫درواقع توصیهی باال را استادم‪ ،‬مهندس حاجیغالمعلی ‪ ،‬به ما داشتند که در اینجا وم آوردهام‪.‬‬

‫‪1‬به جرئ میتوان گف ایشان جزو بهترین متخصصان سیستمعامل لینوکس در جهان وستند‪.‬‬
‫فصل ‪ 1‬معماری سیستم‬
‫در این فصل به بررسی قسم وای مختلف سیستمعامل لینوکس خواویم پرداخ ‪ .‬با بررسی‬
‫دایرکتوریوای مهم سیستم یاد خواویم گرف که در مورد سخ افزار سیستم و باال آمدن سیستم‬
‫به دانش خود بیفزاییم‪ .‬قرض بر این اس که شما به یک کام یوتر که بر روی آن لینوکس نصبشده‬
‫اس دسترسی دارید و در ‪ shell‬یا ‪ terminal‬آن دستوراتی را که الزم باشد میتوانید وارد کنید و‬
‫خروجیوا را مشاوده نمایید‪.‬‬
‫موارد زیر موردبررسی قرار خواوند گرف ‪:‬‬
‫‪ ‬تشخیص و پیکربندی تنظیمات سخ افزاری‬
‫‪ ‬باال آمدن (‪ )boot‬سیستم‬
‫‪ ‬تغییر ‪ runlevel‬وا و خاموش یا ‪ reboot‬کردن سیستم‬

‫که بهطور جزئیتر شامل موارد زیر اس ‪:‬‬


‫فعال و غیرفعال کردن دستگاهوای جانبی یک ارچه‪1‬‬ ‫‪‬‬
‫‪ ‬پیکربندی سیستم‬
‫‪ ‬تشخیص گونهوای مختلف دستگاهوای ذخیرهسازی‬
‫‪ ‬شناسهی دستگاهوای مختلف سیستم‬
‫‪ ‬تفاوت قطعات ‪ coldplug‬و ‪hotplug‬‬
‫‪ ‬ابزاروای مختلف جه مشاودهی اطالعات سخ افزاری (ومانند ‪ ،lspci ،lsusb‬و غیره)‬
‫‪ ‬ابزاروایی برای کار با دستگاهوای ‪USB‬‬
‫‪ ‬شناخ مفاویم ‪ ،hald ،udev ،sysfs‬و ‪dbus‬‬

‫‪1‬‬ ‫‪integrated peripherals‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪1۸‬‬

‫پیکربندی سختافزار‬
‫ومهی سیستموای عامل بر روی سخ افزار اجرا میشوند و این سخ افزار بر روند اجرای‬
‫سیستمعامل تأثیر میگذارد‪ .‬مثالً سخ افزار میتواند سریع یا کند‪ ،‬قابل اتکا یا دچار مشکل باشد‪.‬‬
‫پس تمام کام یوتروا به ومراه مجموعهای از قطعات سخ افزاری روانهی بازار میشوند که حتم ًا‬
‫شامل مواردی چون پردازندهی مرکزی‪ RAM ،1‬و وارد دیسک اس ‪ .‬در قلب بسیاری از این قطعات‬
‫سخ افزاری ‪ firmware‬قرار دارد که ابزاروای پیکربندی را فراوم آورده و روند باال آمدن‬
‫سیستمعامل را نیز آغاز میکند‪ .‬با مطالعهی دفترچهی راونمای بسیاری از قطعات سخ افزاری‬
‫میتوانید در مورد ‪ firmware‬آنوا اطالعات زیادی کسب کنید‪ ،‬اما به یاد داشته باشید که ومین‬
‫که سیستمعامل لینوکس باال آمد‪ ،‬مدیری دستگاهوای سخ افزاری از طریق ابزاروایی خواود بود‬
‫که سیستمعامل لینوکس فراوم آورده اس ‪ .‬قسم وای کلیدی که توسط ‪( firmware‬و بعد از اینکه‬
‫سیستمعامل باال آمد‪ ،‬توسط لینوکس) مدیری میشوند عبارتند از‪ :‬وقفهوا‪ ،۲‬آدرسوای ورودی و‬
‫خروجی‪ ،۳‬دسترسی مستقیم به حافظه‪ ،۴‬ساع بالدرنگ‪ ،۵‬و واسطوای ‪ ATA۶‬وارددیسکوا (که‬
‫خود بر دو نوع ‪ SATA‬و ‪ PATA‬وستند که اخیراً نوع ‪ SATA‬آن رایجتر شده اس )‪.‬‬

‫درک نقش ‪firmware‬‬


‫مهمترین ‪ firmware‬ومانی اس که بر روی برد مادر‪ ۷‬سیستم نصب شده اس ‪ ،‬که نقش راهاندازی‬
‫قطعات و کنترلروای سخ افزاری برد مادر کام یوتر و کنترل روند باال آمدن سیستم را بر عهده‬
‫دارد‪ .‬تا اواخر سال ‪ ۲۰1۰‬اکثر سیستموا مبتنی بر ‪ BIOS‬بودند که مخفف عبارت ‪Basic‬‬
‫‪ Input/output system‬اس ‪ .‬از اوایل سال ‪ ۲۰11‬سیستموای جدید مبتنی بر ‪ firmware‬ی وستند‬
‫که ‪ EFI‬نام دارد که مخفف ‪ Extended Firmware Interface‬اس ‪ .‬نسخهی تازهتر ‪ EFI‬که ‪EFI‬‬
‫‪ 2.0‬یا ومان ‪ UEFI‬نام دارد به کمک دو شرک ‪ Microsoft‬و ‪ Intel‬توسعهیافته اس که امکانات‬
‫بسیار بیشتری را در مقایسه با نسخهوای قبلی در اختیار مسئول سیستم قرار میدود‪ .‬بنابراین‬
‫استاندارد موجود برای سیستموای کام یوتری جدید ‪ UEFI‬اس ‪ .‬البته به خاطر حفظ سازگاری با‬
‫نسخهوای قبلی سیستموای کام یوتری بیشتر نسخهوای ‪ UEFI‬امکان کار کردن در حال ‪BIOS‬‬

‫‪1CPU‬‬

‫‪۲‬‬ ‫‪interrupts‬‬
‫‪۳‬‬ ‫‪I/O addresses‬‬
‫‪۴‬‬ ‫‪DMA access‬‬
‫‪۵‬‬ ‫‪the real-time clock‬‬
‫‪۶‬‬ ‫‪Advanced Technology Attachment‬‬
‫‪۷‬‬ ‫‪motherboard‬‬
‫‪1۹‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫را نیز دارند که در صورتی که قطعهای از قطعات سخ افزاری قدیمی باشد‪ ،‬باز وم امکان کار با آن‬
‫وجود خواود داش ‪.‬‬
‫‪1‬‬
‫در ادامه ابتدا به پیکربندی سخ افزار میپردازیم و بعد وم بهدق روند باال آمدن سیستم را بررسی‬
‫خواویم کرد‪.‬‬

‫بررسی قطعات ‪USB‬‬

‫توزیعوای جدید لینوکس به ومراه راهاندازوای ‪ USB‬ارائه شدهاند و نیازی نیس که برای اتصال و‬
‫راهاندازی قطعات ‪ USB‬معمولی کار خاصی انجام دوید‪ .‬بنابراین اگر مثالً یک کیبورد ‪ USB‬را به‬
‫کام یوترتان که بر روی آن لینوکس نصب شده اس وصل کنید‪ ،‬لینوکس آن را خواود شناخ ‪.‬‬
‫نکته‪ :‬به خاطر داشته باشید که برای استفاده از ‪ USB 3.0‬باید نسخهی کرنل لینوکسی‬
‫که از آن استفاده میکنید ‪ 2.6.31‬یا باالتر باشد‪ .‬برای دیدن نسخهی کرنل لینوکسی که دارید دستور‬
‫‪ uname –r‬را بزنید‪.‬‬
‫‪۲‬‬
‫در خط فرمان لینوکس دستور زیر را وارد کنید و س س کلید ‪ enter‬را فشار دوید‪:‬‬
‫‪$ lsusb‬‬
‫خروجی آن به مشابه خروجی زیر خواود بود‪:‬‬

‫با توجه به خروجی این دستور متوجه میشویم که ‪ ۸‬بأس ‪ usb‬تشخیص داده شده اس (بزرگترین‬
‫شماره در ستون دوم ‪ 008‬اس )‪ .‬در مثال ما ویچ دستگاوی به پورتوای ‪ USB‬وصل نیس بنابراین‬
‫بعد از ‪ ID‬ویچ شماره ای غیر از صفر و ویچ نامی نیامده اس ‪ .‬اگر دستگاوی به پورتوای ‪USB‬‬
‫سیستمی که شما بر روی آن ‪ lsusb‬را اجرا میکنید متصل باشد‪ ،‬در خروجی دستور ‪ lsusb‬اطالعات‬
‫آنوا را مشاوده خواوید کرد‪ .‬توصیه میکنیم که حتم ًا به صفحهی راونمای این دستور مراجعه‬

‫‪1‬‬ ‫‪boot‬‬
‫‪۲‬‬ ‫ومان صتتفحهی ستتیاوی که امکان وارد کردن دستتتورات را در آن دارید؛ تذکر‪ :‬این ‪ terminal‬یا ‪shell‬‬
‫یا‬
‫تو ضیحات و تو ضیحاتی از این د س ‪ ،‬یک بار در اینجا و برخی جاوای دیگر کتاب آمده ا س که خوانندهی‬
‫مبتدی وم بتواند بهخوبی مبحث را دنبال کند‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۲۰‬‬

‫نمایید‪ .‬برای این کار دستور ‪ man lsusb‬را بزنید‪ .‬این دستور آرگومانوای زیادی را میپذیرد که‬
‫مهمترین آنوا در جدول زیر آمده اس ‪:‬‬

‫توضیح‬ ‫آرگومان‬
‫در خروجی دستتتتور توضتتتیحات بیشتتتتری را‬ ‫‪-v‬‬
‫مینویسد‪.‬‬
‫در خروجی تن ها اطال عات مربوط به ‪ bus‬و‬ ‫]‪-s [[bus]:]devnum‬‬
‫‪ devnum‬داده شده را چاپ میکند‪.‬‬
‫به ک مک این آرگو مان میتوان ید اطال عات‬ ‫]‪-d [vendor]: [product‬‬
‫مربوط به محصتتول خاصتتی از تولید کنندهی‬
‫خاصی را ببینید‪.‬‬
‫اطالعتتات را در خروجی بتتهصتتتورت درختی‬ ‫‪-t‬‬
‫نمایش میدود‪ ،‬به این ترتیب راح تر میتوان‬
‫تشخیص داد که چه دستگاوی به چه کنترلری‬
‫متصل شده اس ‪.‬‬

‫دستور ‪ lspci‬و آدرسهای مربوط به دستگاههای ‪PCI‬‬

‫عالوه بر دستتتتگاهوای ‪ ،USB‬قطعاتی داریم که بر روی باسوای ‪ PCI1‬کام یوتر قرار دارند‪ .‬جه‬
‫مشاودهی پیکربندی دستگاهوای ‪ pci‬دستور زیر را بزنید‪:‬‬
‫‪$ lspci‬‬
‫مثالً فرض کنید که میخواویم پیکربندی ‪ pci‬کارت شبکه را مشاوده کنیم‪ ،‬دستور زیر را وارد‬
‫میکنیم‪:‬‬
‫‪$ lspci | grep Eth‬‬
‫که بر روی سیستم ما خروجی زیر را تولید میکند‪:‬‬
‫)‪05:00.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78‬‬
‫‪05:01.0 Ethernet controller: Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated‬‬
‫)‪10/100 Ethernet MAC + PHY (rev 31‬‬
‫پس ما دو پورت شبکه بر روی سیستم داریم‪ .‬آدرس ‪ 05:00.0‬برای کارت شبکهی اول به این‬
‫معناس که این کارت شبکه بر روی ‪ bus‬با شمارهی ‪ ،05‬اولین قطعه (‪ )00‬سخ افزاری اس‬
‫(معموالً اولین قطعه سرع بالقوهی باالتری دارد)‪ ،‬و‪ .0‬وم شمارهی ‪ function‬آن را نمایش میدود‪.‬‬
‫پس ‪ 05:00.0‬بهصورت ‪ bus:device.function‬اطالعات پیکربندی سخ افزاری را نمایش میدود‪.‬‬

‫‪1‬‬ ‫‪Peripheral component interconnect‬‬


‫‪۲1‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫یکی از نکات مهمی که باید به خاطر داشته باشید این اس که تا زمانی که محل اتصال قطعات‬
‫سخ افزاری را در داخل کام یوتر جابهجا نکرده باشید‪ ،‬این اطالعات ثاب خواوند بود‪ .‬بهخصوص‬
‫این مسئله برای کارتوای شبکه اومی خاصی دارد چون ممکن اس با ایجاد تغییرات نرمافزاری‬
‫نام آنوا عوض شود‪ ،‬مثالً ‪ eth1‬تبدیل شود به ‪ eth4‬درحالیکه اطالعات پیکربندی سخ افزاری آن‬
‫تا زمانی که جابهجایی سخ افزاری صورت نداده باشید‪ ،‬ثاب خواود بود (معموالً تغییرات نرمافزاری‬
‫بسیار بیشتر از تغییرات سخ افزاری اس )‪.‬‬
‫توصتتیه میکنیم که حتماً با اجرای دستتتور ‪ man lspci‬به صتتفحهی راونمای این دستتتور مراجعه‬
‫نمایید‪.‬‬

‫آشنایی با ‪Kernel Modules‬‬

‫قطعات سخ افزاری در لینوکس توسط راهاندازوای کرنل‪( 1‬وستهی سیستمعامل لینوکس) کنترل‬
‫میشوند‪ .‬بسیاری از راهاندازوای کرنل به فرم ماژول وستند که فایلوای مستقلی وستند که معمو ًال‬
‫در مسیر ‪ /lib/modules‬قرار دارند که میتوانند جه فراوم آوردن دسترسی به قطعات سخ افزاری‬
‫مرتبط با خودشان بارگذاری‪۲‬شوند‪ ،‬یا جه غیرفعال کردن چنان دسترسی‪ unload ،‬شوند‪ .‬لینوکس‬
‫در ونگام باال آمدن ماژولوایی را که نیاز دارد‪ ،‬را بارگذاری میکند‪ .‬فقط درصورتیکه نیاز به‬
‫بارگذاری ماژول وای اضافی که خودتان نیاز دارید‪ ،‬ممکن اس که الزم باشد که توانایی ‪ load‬یا‬
‫‪ unload‬کردن ماژولوا را داشته باشید‪.‬‬
‫دستور زیر را وارد کنید‪:‬‬
‫‪$ lsmod‬‬
‫خروجی آن بهصورت زیر خواود بود‪:‬‬
‫‪Module‬‬ ‫‪Size Used by‬‬
‫‪ipt_MASQUERADE‬‬ ‫‪7617 1‬‬
‫‪iptable_nat‬‬ ‫‪10949 1‬‬
‫‪ip_nat‬‬ ‫‪21229 2 ipt_MASQUERADE,iptable_nat‬‬
‫‪ip_conntrack‬‬ ‫‪53665 3 ipt_MASQUERADE,iptable_nat,ip_nat‬‬
‫‪...‬‬
‫ستتتون اول نام تمام ‪ module‬وایی را که بارگذاری شتتدهاند نمایش میدود‪ .‬برای کستتب اطالعات‬
‫بیشتر در مورد ‪ module‬خاصی میتوانید دستور ‪ modinfo‬و بعد نام آن ماژول را وارد کنید‪ .‬ستون‬
‫دوم نمایشدوندهی بخشوایی اس که از آن ماژول استفاده میکنند‪.‬‬
‫به خاطر داشته باشید‪ ،‬که خروجی دستور ‪ lspci‬ممکن اس بر روی برخی سیستموا بسیار طوالنی‬
‫شود‪ ،‬به ومین دلیل توصیه میکنیم که آن را بهصورت ‪ lsmod | less‬اجرا کنید‪.‬‬

‫‪1‬‬ ‫‪kernel drivers‬‬


‫‪۲‬‬ ‫‪load‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۲۲‬‬

‫نکته مهم‪ :‬ممکن اس شما دو کام یوتر داشته باشید که سخ افزاروای کامالً یکسانی دارند ولی‬
‫خروجی دستور ‪ lsmod‬بر روی آنوا متفاوت اس ‪ .‬یکی از دالیلی که میتواند باعث این مسئله شود‬
‫این اس که امکان ‪ compile‬کردن و چسباندن ‪ module‬به خود وستهی لینوکس وجود دارد که‬
‫در این صورت دیگر نام آن در خروجی ‪ lsmod‬نخواود آمد‪ ،‬زیرا که آن ‪ module‬دیگر بخشی از‬
‫وستهی سیستمعامل محسوب می شود و از ومان ابتدای کار که وسته بارگذاری میشود در‬
‫حافظهی اصلی حضور خواود داش ‪.‬‬
‫ال بارگذاری نشده اس ‪ ،‬میتوانید از دو‬
‫برای بارگذاری ‪ module‬ی که نیاز دارید ولی قب ً‬
‫دستور ‪ insmod‬و ‪ modprobe‬استفاده کنید‪ .‬بهعنوانمثال‪:‬‬
‫‪$ modprobe floppy‬‬
‫ومان کاری را انجام میدود که فرمان‬
‫‪$ insmod /lib/modules/2.6.26/kernel/drivers/block/floppy.ko‬‬
‫انجام خواود داد‪ .‬معموالً روش اول توصیه میشود‪.‬‬
‫برای ‪ unload‬کردن یک ‪ module‬که قبالً بارگذاری شده اس میتواند از دستور ‪modprobe‬‬
‫‪ –r‬یا ‪ rmmode‬استفاده کنید‪.‬‬
‫تمرین عملی‪ :‬صفحات ‪ man‬دستورات گفتهشده در باال را مطالعه کنید‪ .‬مثالً دستور ‪man modprobe‬‬
‫را وارد کنید و بعد آن را مطالعه کنید‪.‬‬

‫بررسی دایرکتوری‪/dev‬‬

‫‪.‬‬ ‫نمایش دستگاهوای متصل شده به سیستم اس‬ ‫این دایرکتوری شامل فایلوای ویژه جه‬
‫دستورات زیر را اجرا کنید‪:‬‬
‫‪$ cd /dev‬‬
‫‪$ ls -l | less‬‬
‫برای رفع ابهام‪ ،‬در این قسم تنها یکبار بهصورت بسیار جزئی و ساده نحوهی نوشتن دستور باال‬
‫را توضیح میدویم‪:‬‬
‫توضیح دستور باال‪ :‬بنویسید ‪ ls‬س س یک فاصله قرار دوید‪ ،‬بعد عالم منها را بزنید و‬ ‫‪‬‬
‫بعد از آن‪ ،‬بدون فا صله‪ ،‬ال کوچک انگلی سی را تایپ کنید‪ .‬حاال یک فا صله قرار دوید و‬
‫کلید شیف را نگه دارد و کلید \ را بر روی کیبورد خود فشار دوید تا کاراکتر | که به آن‬
‫‪ Pipe‬میگویند نوشتتته شتتود‪ .‬حاال یک فاصتتله قرار دوید و بنویستتید ‪ .less‬بعد از اجرای‬
‫دستور باال‪ ،‬با فشار دادن فلشوای باال و پایین میتوانید در متن خروجی‪ ،‬در صورتی که‬
‫بیش از یک صفحه باشد‪ ،‬حرک کنید‪ .‬برای خروج کلید ‪ q‬را فشار دوید‪.‬‬

‫با دق در خروجی دستورات باال متوجه میشویم که در زیر دایرکتوری ‪ /dev‬دستگاهوایی‬


‫(‪ )devices‬که به سیستم متصل وستند‪ ،‬مثل ماوس‪ ،‬کیبورد‪ ،‬وارد دیسک و ‪ ...‬قرار دارند‪ .‬در خروجی‬
‫‪۲۳‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫دستور باال (‪ )ls –l | less‬سم راس ترین فیلد اسم فایل‪ ،‬در کنارش تاریخ و ساع و مالک فایل و‬
‫س س مجوزوای دسترسی و استفاده از فایل اس ‪ .‬در لینوکس تقریب ًا ومهچیز یک نمایش بهصورت‬
‫فایل دارد‪ ،‬بنابراین مثالً فلش درایو شما میتواند در آدرس ‪ /dev/sdb‬نمود فایلی داشته باشد‪.‬‬
‫تشخیص نوع هارددیسک و دستگاههای کامپیوتر از روی نام فایل در زیر ‪:/dev‬‬
‫در زیر دایرکتوری ‪ /dev‬فایلوایی وجود دارند که نمایندهی دستگاهوای سخ افزاری وستند‪.‬‬
‫فایلوای مربوط به وارددیسکوای ‪ IDE‬معموالً بهصورت ‪ /dev/hdX‬اس که در آن ‪ X‬یک حرف‬
‫اس ‪ ،‬مثالً ‪ hda‬و در صورتی که این دیسک پارتیشن بندی شده باشد‪ ،‬مواردی ومچون ‪/dev/hda1‬‬
‫و ‪ /dev/hda2‬نیز خواویم داش (که مثالً دو عدد پارتیشن بر روی این وارددیسک پیکربندی شده‬
‫اس )‪ .‬در صورتی که وارددیسک از نوع ‪ SATA‬باشد بهصورت ‪ /dev/sdX‬نشان داده میشود‪.‬‬
‫درایووای فلش نیز بهصورت ‪ /dev/sdX‬نمایش داده میشوند‪ CDROM .‬و ‪ DVDROM‬نیز بهصورت‬
‫‪ /dev/scdX‬و ‪ /dev/srX‬نمود پیدا میکنند‪.‬‬

‫دستهبندی دستگاهها (‪)devices‬‬


‫از یک دیدگاه میتوان دستگاهوای کام یوتری را به دو دسته تقسیم کرد‪:‬‬
‫‪ .1‬دستگاههای بلوکی (‪ :)block devices‬تبادیل اطالعات میان چنین دستگاوی و سایر بخشوای‬
‫ال‬
‫کام یوتر بهصورت بلوک به بلوک اس ‪ .‬وارددیسک یک نمونه از این نوع دستگاهواس یا مث ً‬
‫اگر بخواوید از ‪ CD ROM‬یک بای بخوانید مجبور وستید که یک ‪ block‬بخوانید و س س از آن‬
‫‪ block‬خوانده شده‪ ،‬بای مورد نظر شما برای شما برگردانده میشود؛ دلیل این اس که اطالعات‬
‫بهصورت بلوک در ‪ CD ROM‬ذخیره شده اس ‪ .‬خواندن بهصورت بلوکی از این دستگاهوا به دلیل‬
‫نیاز به کارآیی باالس ‪ ،‬زیرا که خواندن بهصورت بی به بی سرع انتقال دادهوا را پایین‬
‫میآورد‪.‬‬
‫‪ .۲‬دستگاههای کاراکتری (‪ :)character devices‬این نوع از دستگاهوا اطالعات را بهصورت‬
‫حرفبهحرف برمیگردانند‪ .‬بهعنوانمثال کیبورد‪ ،‬مودم و پرینتر در این دسته قرار دارد‪.‬‬

‫در سم چپ خروجی د ستور (‪ )ls –l | less‬در زیر دایرکتوری ‪ ،/dev‬مجوزوای د ستر سی نو شته‬
‫شده اس ‪ .‬اولین حرف این مجوزوا‪ ،‬معنای خاصی دارد‪:‬‬
‫نمایش دهندهی‬ ‫اولین حرف‬
‫دایرکتوری‬ ‫‪d‬‬
‫‪File‬‬ ‫خط تیره (‪)-‬‬
‫‪Block device‬‬ ‫‪b‬‬
‫‪Character device‬‬ ‫‪c‬‬
‫‪Pipe‬‬ ‫‪p‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۲۴‬‬

‫‪Socket‬‬ ‫‪s‬‬
‫پس ‪ b‬برای دستگاهوای بلوکی و ‪ c‬برای دستگاهوای کاراکتری اس ‪.‬‬
‫تمرین عملی‪ :‬تحقیق کنید که ور کدام از موارد اشاره شده در جدول باال در سیستمعامل لینوکس‬
‫چه کاربردی دارند‪.‬‬

‫نمایش محتوای فایل‬


‫با فرمان ‪ cat‬میتوان محتوای فایل را نشتتان داد‪ .‬بهعنوانمثال برای اینکه محتویات وارددیستتک را‬
‫نشان دویم‪ ،‬فرمان زیر را اجرا میکنیم‪:‬‬
‫‪$ cat /dev/sda‬‬
‫ازآنجاکه خروجی ممکن اس طوالنی باشد و نمایش آن زمانبر شود‪ ،‬بعد از اجرای دستور جه‬
‫خاتمهی کار میتوانید از ترکیب کلیدوای ‪ control+c‬استفاده کنید‪.‬‬

‫روش دادن اسم دوّم به یک ‪device‬‬


‫یکی از روشوای انجام این کار استفاده از فرمان ‪ ln‬اس ‪:‬‬
‫‪$ ln /dev/fd0 a:‬‬
‫‪$ ls a: fd0‬‬
‫‪4349‬‬ ‫‪a:‬‬
‫‪4349‬‬ ‫‪fd0‬‬
‫‪ ‬نکتهی کاربردی‪ :‬یکی از ویژگیوای خوب دایرکتوری ‪ dev‬این اس که میتوانید بفهمید آخرین‬
‫باری که یک ‪ device‬کار کرده چه زمانی بوده اس ‪ .‬به این منظور کافی اس به تاریخ ایجاد فایلوا‬
‫در خروجی دستور ‪ ls –alh‬نگاه کنید‪.‬‬

‫حاال میخواویم ببینیم چند تا ‪ printer‬داریم و پورتوای آنوا را ببینیم‪:‬‬


‫*‪$ ls –l /dev/lp‬‬
‫‪crw-rw---- 1 root lp 6,0 aug 18 2006 jan fd0‬‬
‫در اینجا ما یک پرینتر داریم‪ .‬ممکن اس در سیستم شما پرینتر وصل باشد یا نباشد‪.‬‬

‫تعریف یک دستگاه جدید با دستور ‪mknod‬‬


‫‪$ cd /dev‬‬
‫‪$ mknod lp1 c 6 1‬‬
‫‪name: lp1ß‬‬
‫‪type: c‬‬
‫‪major: 6‬‬
‫‪minor: 1‬‬
‫متناظر با پرینتر با نام ‪lp1‬‬
‫با دستور باال یک پرینتر دیگر وم تعریف کردیم‪ .‬البته توجه کنید که‬
‫دستگاه پرینتر وجود ندارد‪ ،‬بنابراین با ارسال فایل به این ‪ device‬چیزی چاپ نخواود شد‪ .‬عدد ‪6‬‬
‫‪۲۵‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫عدد ‪ major‬به معنی اصلی اس که وستهی لینوکس (‪ )kernel‬با استفاده از آن تعیین میکند که‬
‫چه ‪ device driver‬ی را انتخاب کند و با آن کار کند‪ .‬عدد دوّم را ‪ minor‬میگوییم و با استفاده از‬
‫آن معلوم میشود که یک ‪ device‬چه مدلی دارد و ومچنین کدام یک از پرینتروای متصل به‬
‫کام یوتر اس ‪ type: c .‬نشاندوندهی نوع ‪ device‬اس که در اینجا با نوع دستگاه کاراکتری سر و‬
‫کار داریم‪.‬‬
‫پس برخی فایلوا در زیر دایرکتوری ‪ /dev‬نشتتاندوندهی دستتتگاهوای ‪ character‬ی یا ‪ block‬ی‬
‫وستتتتند و برخالف فایل وای معمولی قد و حجم ندارند‪ ،‬بلکه ‪ major‬و ‪ minor‬دارند که ‪major‬‬
‫شتتمارهی ‪ device‬اس ت و ‪ minor‬تعداد دستتتگاه با آن نوع را مشتتخص میکند‪ .‬مثالً وقتی چند تا‬
‫وارددی سک به یک کام یوتر مت صل و ستند که از یک نوع ‪ driver‬ا ستفاده میکنند برای ت شخیص‬
‫آنوا از یکدیگر کافی ا س که به عدد ‪ minor‬مراجعه شود‪ .‬به این ترتیب با این دو عدد ‪device‬وا‬
‫از وم تفکیک و شتتناخته میشتتوند‪ .‬بادتان باشتتد که فقط ‪ root‬اجازه ستتاخ فایلوای ‪ device‬را‬
‫دارد‪ ،‬و در واقع بهطور معمول این فایلوا را ما نمی سازیم و معموالً این خود سیستمعامل ا س که‬
‫بعد از متصتتتل شتتتدن دستتتتگاه به کام یوتر آن را تشتتتخیص میدود و نمود فایلی آن را در زیر‬
‫دایرکتوری ‪ /dev‬میآورد‪ .‬بنابراین فایلوای زیر دایرکتوری ‪ dev‬پویا وستتتتند و خود ستتتیستتتتم‬
‫‪device‬وایش را شناسایی میکند‪.‬‬
‫پس در این قسم یاد گرفتیم که فرمانی که امکان ساخ ‪ device file‬را میدود ‪ mknod‬اس و‬
‫البته فقط کاربر ‪ root‬امکان استتتفاده از آن را دارد‪ .‬برای مشتتاودهی صتتفحهی راونمای دستتتور‬
‫‪ ،mknod‬دستور زیر را اجرا کنید‪:‬‬
‫‪$ man mknod‬‬
‫حال بهعنوان ‪ root‬دستور زیر را اجرا کنید‪:‬‬
‫‪$ cd /dev‬‬
‫‪$ sudo su‬‬
‫‪# mknod pardis b 250 44‬‬
‫‪ major‬و شمارهی بعدی ‪ minor‬اس ‪ .‬البته ما اجازه ساخ‬‫‪ b‬یعنی ‪ block Device‬و شمارهی اول‬
‫نداریم چون در کام یوتر ما برای وستهی لینوکس دستگاوی با شمارهی ‪ ۲۵۰ major‬وجود ندارد‪،‬‬
‫پس پیغام ‪ no such device‬را مشاوده میکنیم‪ .‬پس به جای اینکه بهطور تصادفی یک عدد ‪major‬‬
‫بنویسیم به خروجی دستور زیر مراجعه میکنیم و متناسب با دستگاه مورد نظرمان شمارهی ‪major‬‬
‫را انتخاب میکنیم‪:‬‬
‫‪$ cat /proc/devices‬‬
‫چپ دایرکتوری ‪ dev‬حرفوای دیگری وم داریم مثل ‪ .p‬به فرمانوای‬ ‫به جز ‪ ،b ،d ،c‬و – ما در سم‬
‫زیر توجه کنید‪:‬‬
‫‪$ mknod pardis p‬‬
‫‪$ ls -l‬‬
‫‪total 8‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۲۶‬‬

‫‪ prw-r- -r--1 n. pardis lpi1 0‬تاریخ ‪Pardis‬‬


‫یک ‪ pipe file‬ساختیم‪ pipe file .‬وا که معمو ًال ابتدا و انتها ندارد و اطالعات پش سر وم نمیآید‪.‬‬
‫بهطور معمول ‪ pipe file‬وا خیلی کاربرد دارند و البته اطالعاتشان وم تمامی ندارد‪ .‬از جلمه‬
‫دستگاهوایی که بهصورت ‪ pipe file‬نمایش داده میشوند رطوب سنج و رادار وستند‪.‬‬
‫‪ ‬تمرین‪ :‬با اجرای فرمان ‪ man pipe‬در مورد ‪ pipe‬وا مطالعه نمایید‪.‬‬

‫عالوه بر فرمان ‪ mknod‬در لینوکس یک فرمان دیگر به نام ‪(MAKEDEV‬با حروف بزرگ) وجود‬
‫دارد و به منظور ایجاد فایل د ستگاهوا در زیر دایرکتوری ‪ dev‬به کار میرود (جه م شخص شدن‬
‫آخرین وضتتتعی دستتتتگاهوا و لیستتت کردن مجدد آنوا در زیر ‪ .)/dev‬با این فرمان دیگر نیازی‬
‫نداریم ‪ mknod‬را به کار ببریم‪.‬‬
‫‪$ MAKEDEV‬‬

‫بررسی دایرکتوری ‪/proc‬‬

‫این دایرکتوری‪ ،‬یک دایرکتوری خاصِ ساکن در حافظه و حاوی اطالعات مختلف درباره کاروای‬
‫درحال اجرا در سیستم لینوکس اس ‪ .‬در زیر دایرکتوری ‪ proc‬مجموعهای از دایرکتوریوای عددی‬
‫و تعدادی فایل مرتبط با تجهیزات وجود دارد‪.‬‬
‫‪$ cd/proc‬‬
‫‪$ ls -l | less‬‬
‫دایرکتوری ‪ proc‬فقط بهصورت ‪ logical‬اس و موجودی مستقلی نیس و آیینهی تمامنما از‬
‫اطالعات ‪ kernel‬اس ‪ .‬با استفاده از دادهوای زیر دایرکتوری ‪ /proc‬میتوانید ببینید که کرنل چه‬
‫فایلوایی را ‪ open‬کرده و چند نفر ‪ login‬وستند‪ .‬به محض اینکه سیستم را ‪ down‬کنید دایرکتوری‬
‫‪ proc‬گم میشود و به محض اینکه ‪ up‬کنید ساخته میشود‪ .‬در زیر این دایرکتوری به ازای ور‬
‫‪ process‬ی یک دایرکتوری داریم‪ .‬وقتی فرمان زیر را در زیر دایرکتوری ‪ proc‬میزنیم به ما یک‬
‫عدد میدود‪ ،‬که شماره پروسس (شل) مرتبط به شما میباشد‪.‬‬
‫‪$ cd /proc‬‬
‫‪$ echo $$‬‬
‫‪8827‬‬
‫دایرکتوری ‪proc‬‬ ‫ور کاری که انجام دوید و ور فرمانی که بزنید ‪ admin‬از طریق فایلوای زیر‬
‫میتواند ببیند که کجا وستید‪ .‬تعداد دایرکتوریوایی که زیر دایرکتوری ‪ proc‬وجود دارند ثاب‬
‫نیس و پیوسته در حال تغییر اس ‪.‬‬
‫‪ ‬نکته‪ :‬فرمانوای ‪ who‬و ‪ w‬برای اینکه لیس کاربران ‪ login‬کرده را تهیه کنند از دادهوای‬
‫زیر دایرکتوری ‪ proc‬استفاده میکنند‪.‬‬

‫البته در زیر این دایرکتوری تعدادی فایل مرتبط با تجهیزات نیز داریم‪ .‬فرمان زیر را اجرا کنید‪:‬‬
‫‪۲۷‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫‪$ cat cpuinfo‬‬


‫‪ cpuinfo‬اطالعات ‪ cpu‬را میدود‪ .‬ممکن اس کسی از شما ب رسد که ‪ cpu‬این کام یوتر از چه‬
‫مجموعه دستوراتی (‪ )instruction set‬پشتیبانی میکند؛ برای پاسخ به این سؤال کافی اس به فایل‬
‫‪ /proc/cpuinfo‬مراجعه نمایید‪.‬‬
‫که‬ ‫‪ ‬نکته‪ :‬برای اجرای برخی از برنامهوای کاربردی به خصوص در سطح سیستمی نیاز اس‬
‫مجموعه دستورات خاصی توسط ‪ CPU‬پشتیبانی شود‪ ،‬که میتوانید از خروجی فرمان‬
‫‪ cat /proc/cpuinfo‬در این مورد استفاده کنید‪.‬‬
‫‪ ‬نکته جهت دستیاری به اطالعات دقیقتر در مورد ‪ :cpu‬برنامهی ‪ x86info‬را نصب کنید‬
‫(‪ apt-get install x86info‬یا ‪ )yum install x86info‬و س س فرمان ‪ x86info –c‬را اجرا نمایید‪.‬‬
‫خروجی این دستور اطالعات بسیار دقیقی در مورد معماری پردازندهی سیستم و معماری‬
‫سیستمِ ‪ cache‬آن را در اختیار شما میگذارد؛ این فرمان عالوه بر کاربرد در توسعهی‬
‫نرمافزاروای سیستمی‪ ،‬جه خرید سیستموای حرفهای و بررسی صح اطالعات موجود در‬
‫کاتالوگوا میتواند استفاده شود‪.‬‬
‫‪no ( nop‬‬ ‫‪ ‬نکته ‪( bogomips‬پردازش جعلی)‪ :‬در پردازنده و زبان اسمبلی دستوری به نام‬
‫‪ )operation‬وجود دارد که فقط یک ‪ cycle‬از ‪ cpu‬میبرد‪ ،‬بدون اینکه کاری بکند و فقط زمانی‬
‫را از پردازنده صرف خود میکند‪ .‬مثالً ‪ Device Driver‬دیسک میداند که اگر یک فرمان به‬
‫دیسک بدود باید نیم ثانیه بعد جواب بیاید به اندازه نیم ثانیه ‪ nop‬را انجام میدود تا جواب‬
‫بیاید‪ .‬و اگر جواب نیامد ‪ time out‬میدود‪.‬‬

‫فایل ‪interrupts‬‬
‫فایل بعدی که در زیر ‪ /proc‬بررسی میکنیم ‪ interrupts‬اس ‪ .‬در این فایل شماره ور ‪ interrupt‬و‬
‫تعداد تکرار آن را میبینیم‪.‬‬
‫‪$ cat interrupts‬‬
‫ور مادر بورد تشکیل یافته از تعدادی قطعه اس که به یک بورد اصلی (یا بهتر اس بگوییم یک‬
‫بورد اصلی و چند بورد دیگر) وصل اس ‪ .‬وقتی ور کدام از قطعهوا بخواوند با بورد مادر صحب‬
‫کنند ‪ interrupt‬میدوند‪ .‬ومچنین دستگاوهایی وم که میخواوند با یکدیگر صحب کنند‬
‫‪ interrupt‬میدود‪ .‬مثالً کارت شبکه ‪ interrupt‬شماره ‪ 1۸۵‬میدود‪.‬‬

‫‪timer interrupt‬‬
‫اگر فرمان ‪ vmstat -s‬را بزنیم در انتهای خروجی آن به ما میگوید که ‪ context switching‬چند بار‬
‫انجام شده اس ‪ context switching .‬به معنای واگذاری کنترل از یک ‪ process‬به ‪ process‬دیگر‬
‫اس ‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۲۸‬‬

‫‪$ vmstat -s‬‬


‫مثال‪ :‬مدل دیسک را در سیستمی که واسط واردیسک آن ‪ ide‬اس ‪ ،‬پیدا کنید؟‬ ‫‪‬‬
‫پاسخ‪:‬‬ ‫‪‬‬

‫‪$ cd /proc/ide‬‬
‫‪$ ls -l‬‬
‫‪$ cd hda‬‬
‫‪$ ls -l‬‬
‫… ‪cash capacity … model‬‬
‫‪$ cat model‬‬
‫‪maxtor 2f040l0‬‬
‫وقتی در دایرکتوری ‪ proc‬وستتتیم با فرمان زیر میتوانیم مشتتاوده کنیم که وارد دیستتک ما چند‬
‫قسم شده اس ‪:‬‬
‫‪$ cat partitions‬‬
‫مثال‪ :‬اسکری تی بنویسید که با اجرای آن مدل ‪ cpu‬را بدود‪.‬‬ ‫‪‬‬
‫پاسخ‪:‬‬ ‫‪‬‬

‫‪$ head -5 /proc/cpuinfo | tail -1‬‬


‫… )‪model name: Intel(R‬‬

‫بررسی دایرکتوری ‪/sys‬‬

‫فایل سیستمی مجازی در زیر دایرکتوری ‪ /sys‬قرار دارد که با نام ‪ sysfs‬شناخته میشود‪ .‬این فایل‬
‫سیستم محلی اس که ابزاروای در سطح کاربر (و نه وسته) اطالعاتشان را در مورد دستگاهوای‬
‫سیستم به دس میآورند‪ .‬ومچنین به واسطهی این پوستهی ارائه شده میتوان تنظیمات مورد نظر‬
‫را بر دستگاهوای متصل به سیستم اعمال کرد (که البته معمو ًال نیازمند دانش عمیق و تخصصی در‬
‫ال بر روی سیستم ما‪ ،‬ومانطور که قبالً دیدیم کارت شبکه‬ ‫مورد آن قطعهی سخ افزاری اس )‪ .‬مث ً‬
‫در آدرس ‪ PCI‬با مقدار ‪ 05:00.0‬قرار داش ‪ .‬پس دستور زیر را اجرا میکنیم‪ ،‬که به دایرکتوری که‬
‫حاوی فایلوای مربوط به آن اس وارد شویم‪:‬‬
‫‪$ cd /sys/bus/pci/devices/0000:05:00.0‬‬
‫حال فرض کنید که میخواوید بدانیم که شمارهی ‪ irq‬آن چند اس ‪ .‬بعد از دستور باال‪ ،‬دستور زیر‬
‫را وارد میکنیم‪:‬‬
‫‪$ cat./irq‬‬
‫که در سیستم ما شمارهی ‪ 1۶۹‬را بر میگرداند‪.‬‬

‫دستوراتی برای بررسی سختافزار‬


‫زیر ‪ proc‬تعداد زیادی دایرکتوری عددی و فایل سخ افزاری داشتیم‪ .‬تعدادی فرمان داریم که‬
‫‪۲۹‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫که سخ افزار را زیر و رو‬ ‫اطالعات را از ‪ proc‬میخوانند‪ .‬یکی از آنوا فرمان ‪ dmidecode‬اس‬
‫میکند و اطالعات را از زیر ‪ proc‬در میآورد‪.‬‬
‫‪$ dmidecode | less‬‬
‫در خروجی دستور باال اطالعات مختلفی در مورد سخ افزار را مشاوده میکنید‪.‬‬
‫یک نکتهی مهم در مورد ‪ uuid‬یا "شتتناستتاگر یکتای جهانی" این استت که وقتی ‪ Hard‬را فرم‬
‫میکنید ‪ uuid‬به شما میدود‪ .‬بهعنوانمثال ‪ uuid‬کام یوتر کالس عدد ‪ ۳۲‬رقمی وگزا ‪8.4.4.4.12‬‬
‫اس ‪ .‬برای اینکه این عدد یکتا باشد و تکراری نباشد‪ ،‬اوّل ‪ Mac Address‬کارت شبکه کام یوتر را‬
‫میگیرد و بعد از روی آن ‪ uuid‬را می سازد‪ .‬اگر کام یوتر شما کارت شبکه ندا شته با شد ‪ cupid‬را‬
‫میگیرد‪ .‬در صورتی که خودتان خواستید ‪ UUID‬بسازید میتوانید از فرمان زیر استفاده کنید‪:‬‬
‫‪$ uuidgen‬‬
‫پس یادتان باشتتد اگر خواستتتید ‪ laptop‬بخرید چند فرمان را به یاد داشتتته باشتتید و ‪CD Live‬‬
‫لینوکس را ببرید و اطالعات سخ افزاری آن را بررسی کنید‪.‬‬
‫عالوه بر فرمان ‪ dmidecode‬فرمانوای و ‪ lshw‬نیز اطالعات مهمی در مورد سخ افزار سیستم‬
‫می دوند‪ .‬برای مثال مشخصات کامل مادر بورد و باطری و موارد دیگر را در خروجی این دستورات‬
‫میبینید‪ .‬ورچند خروجی دستور ‪ dmidecode‬بسیار مفصل اس ‪ ،‬در برخی مواقع‪ ،‬ورچند نادر‪،‬‬
‫اطالعات نادرستی را به نمایش میگذارد‪.‬‬

‫‪ coldplug‬در مقابل ‪hotplog‬‬


‫ور وق که یک قطعهی سخ افزار سر و کار دارید باید یک نکته را در نظر بگیرید؛ اینکه این قطعه‬
‫‪ coldplug‬اس یا ‪ .hotplug‬تفاوت این دو نوع سخ افزار در این اس که قطعات ‪ hotplug‬را چه‬
‫در موقع خاموش و چه در موقع روشن بودن سیستم میتوانید به سیستم متصل کنید یا از آن جدا‬
‫کنید‪ ،‬ولی قطعات ‪ coldplug‬را حتماً باید در موقع خاموش بودن سیستم وصل یا جدا کنید‪.‬‬
‫تذکر مهم‪ :‬متصل یا جدا کردن قطعات سخ افزاری ‪ coldplug‬در ونگامی که کام یوتر روشن‬
‫اس ممکن اس به آن قطعه یا کل کام یوتر آسیب بزند‪ .‬بنابراین ورگز چنین کاری نکنید و قبل‬
‫از متصل یا جدا کردن قطعهی سخ افزاری خاصی از سیستم از ‪ coldplug‬یا ‪ hotplug‬بودن آن‬
‫اطمینان حاصل نمایید‪.‬‬
‫بهطور معمول قطعاتی مانند پردازنده‪ ،‬حافظهی ‪ ،RAM‬کارتوای ‪( PCI‬مثل کارت شبکه)‪ ،‬و‬
‫وارد دیسکوا ‪ coldplug‬بودهاند‪ .‬ورچند نوع ‪ hotplug‬آنوا نیز برای کاربردوای خاص طراحی شده‬
‫اس ‪ .‬نوع ‪ hotplug‬این قطعات عموماً برای سروروایی که امکان خاموش کردن آنوا وجود ندارد به‬
‫کار برده میشوند‪ .‬مثالً در کام یوتروایی که زیرساخ وای تلفنومراه را پشتیبانی میکنند از ‪RAM‬‬
‫وای ‪ hotplug‬استفاده میشود‪ .‬به این ترتیب در صورتی که یکی از ‪ RAM‬وا خراب شود‪ ،‬فوراً‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۳۰‬‬

‫میتوان آن را تعویض کرد و در سیستم کار تلفنوا مشکلی پیش نمیآید‪.‬‬


‫قطعات سخ افزاری جدید خارجی (که نیازی نی س داخل ‪ case‬با شند و از خارج کام یوتر و صل‬
‫می شوند)‪ ،‬مثل ‪ USB ،Ethernet‬و ‪ IEEE-1394‬یا ومان ‪ firewire‬به صورت ‪ hotplog‬وستند و در‬
‫ونگام روشن بودن سیستم امکان اتصال و جدا کردن آنوا وجود دارد‪.‬‬
‫‪ ‬نکته‪ :‬به برنامهوای معمولی که در حال اجرا وستند‪ ،‬خواه توسط یک کاربر معمولی یا ‪،root‬‬
‫برنامهی ‪ user-space‬گفته میشود‪ .‬در مقابل این برنامهوا‪ ،‬برنامهوای ‪ kernel-space‬قرار‬
‫دارند که بخشی از وستهی سیستمعامل لینوکس وستند‪ .‬برنامهوای سم وسته بهطور‬
‫مستقیم میتوانند با سخ افزار در ارتباط باشند‪ ،‬اما برنامهوای ‪ user-space‬با استفاده از‬
‫امکاناتی که ‪ kernel‬فراوم میآورد‪ ،‬این کار را انجام میدوند‪.‬‬

‫‪HAL Daemon‬‬
‫‪ HAL‬یا ومان ‪ ،Hardware Abstraction Layer Daemon‬یا ‪ hald‬یک برنامهی ‪ user-space‬اس‬
‫که در ومواره در حال اجراس و به برنامهوای ‪ user-space‬اطالعاتی در مورد قطعات سخ افزاری‬
‫موجود میدود‪.‬‬

‫‪D-Bus‬‬
‫‪ Desktop Bus‬ومانند ‪ hald‬یک ‪ daemon‬اس و ومواره در حال اجراس ‪ D-Bus .‬این امکان را‬
‫فراوم میآورد تا پروسسوا با یکدیگر در ارتباط باشند‪ ،‬ومچنین در مورد ‪ event‬وا (مثل متصل‬
‫شدن یک قطعهی سخ افزاری جدید از ‪ )USB‬وم از طریق سایر ‪ process‬وا و وم از طریق‬
‫سخ افزار کسب اطالع کنند‪.‬‬

‫‪udev‬‬
‫از گذشته تا کنون لینوکس گرهوای مربوط به سخ افزار را در مسیر ‪ /dev‬ایجاد میکند‪ .‬وجود‬
‫قطعات سخ افزاری ‪ Hotplug‬باعث به وجود آمدن ‪ udev‬شد‪ :‬یک فایل سیستم مجازی که در‬
‫مسیر ‪ /dev‬ماون (‪ )mount‬میشود و فایلوای پویای دستگاهوای سخ افزاری را ایجاد میکند‪.‬‬
‫تنظیمات ‪ udev‬از مسیر ‪ /etc/udev‬انجام میشود‪ .‬توجه داشته باشید که تنظیمات پیشفرض برای‬
‫قطعات سخ افزاری رایج‪ ،‬کافی اس ‪.‬‬
‫اما قطعات ستتخ افزاری قدیمیتر مثل آنوایی که از پورت ‪ RS-232‬یا ‪ parallel‬وصتتل میشتتوند‬
‫(مثالً ماوس یا کیبوردوای قدیمی یا چاپگروایی که از پورت موازی وصتتتل میشتتتوند)‪coldplug ،‬‬
‫و ستند و الزم ا س که برای ات صال یا جدا کردن آنوا کام یوتر را خاموش کنید‪ .‬یادتان با شد که‬
‫اگر در موقع رو شن بودن سی ستم این کار را بکنید ممکن ا س به کام یوتر یا آن د ستگاه آ سیب‬
‫وارد شود‪.‬‬
‫‪۳1‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫تذکر‪ :‬ممکن اس شما در گذشته مانیتور را در حالتی که کام یوتر روشن اس جدا یا متصل کرده‬
‫باشیدو مشکلی پیش نیامده باشد‪ ،‬اما توصیه میشود که مانیتور را وقتی که کام یوتر روشن اس‬
‫متصل یا جدا نکنید‪ ،‬زیرا امکان آسیب دیدن کام یوتر یا مانیتور وجود دارد‪ .‬توجه داشته باشید که‬
‫استاندارد ‪ VGA‬چیزی در مورد ‪ hotpluggable‬بودن آن نمیگوید‪ .‬البته در قطعات سخ افزاری‬
‫جدید از دیودوای محافظ استفاده می شود‪ ،‬که در این صورت در صورت وجود آسیب‪ ،‬این دیودوا‬
‫خراب میشوند و قطعات داخلی سالم میمانند‪.‬‬

‫نحوهی باال آمدن یا ‪ boot‬شدن سیستم‬

‫باال آمدن سیستم را اصطالحاً ‪ Boot‬شدن کام یوتر میگویند و نرمافزاری که سیستمعامل را وارد‬
‫حافظه مینماید اصتتتطالحاً ‪ Boot Loader‬یا ‪ Boot Strap‬میخوانند‪ .‬به محض روشتتتن نمودن‬
‫کام یوتر فعالی وایی که انجام می شود تح عنوان (‪ post )power on self-test‬انجام می شود‪ .‬به‬
‫این معنی که نرمافزار ‪ BIOS‬تس ساده انجام میدود و اگر ‪ fail‬نکرد و مشکلی نبود (تس شامل‬
‫پردازنده‪ ،‬حافظه و سایر قطعات میباشد)‪ ،‬پس از پایان این تس سخ افزاری‪ ،‬اطالعات موجود در‬
‫‪ CMOS‬خوانده میشتتود که میبیند از چه چیزی یا از چه تکنولوژی این ستتیستتتم را باال بیاورد‬
‫(فالپی‪ ،‬سیدی‪ ،‬وارددیسک و ‪.)...‬‬
‫ما فرض میکنیم که تکنولوژی ما دی سک ا س و سی ستم از طریق دی سک سخ باال خواود آمد‪.‬‬
‫سکتور صفر دی سک سخ خوانده می شود و بی شتر از این وم اطالعاتی ندارد و نمیتواند سکتور‬
‫‪ 1000‬را مثالً بخواند‪ .‬وقتی این ستکتور خوانده شتد در وستط حافظه قرار میگیرد و در اوّل و آخر‬
‫حافظه قرار نمیدود‪ .‬عل این استت که در باالی حافظه ‪ interrupt‬ستتکتور استت یعنی مثالً اگر‬
‫‪ 1۰۰۰‬بای را ‪ ۴‬بای ‪ ۴‬بای تقسیم کنیم ‪ ۲۵۷‬بای اینتراپ را ‪ handle‬میکند‪ .‬پس اوّل حافظه‬
‫خرج شده ا س ‪ .‬برای فایلوا و ساختاروای فایلی مختلف‪ ISO 8859-1 ،‬مطرح و ت صویب شده‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۳۲‬‬

‫ا س که ‪ Magic Number‬معادل وگزا د سیمال ‪ OX AA55‬مربوط به ‪ MBR‬با شد و یادتان با شد‬


‫که آن را در پایان حافظه قرار میدود‪ .‬چون آنهایی که طول شان ثاب با شد در انتها قرار میگیرند‬
‫(اگر ستکتور صتفر را بخوانید آخر آن نوشتته شتده است ‪ .)AA55:‬به این منظور فرمان زیر را اجرا‬
‫کنید‪:‬‬

‫‪>> od –x /dev/sda | head -35‬‬


‫برای راحتی میتوانید خروجی را ‪ grep‬کنید‪ .‬یعنی دستور زیر را اجرا کنید‪:‬‬

‫‪>> od –x /dev/sda | head -35 | grep aa‬‬


‫و در خروجی میتوانید خط مربوط به ‪ aa55‬را مشاوده کنید‪.‬‬

‫‪ dmesg‬و اطالعات در مورد روند ‪boot‬‬


‫‪kernel ring buffer‬‬ ‫برخی اطالعات در مورد کرنل لینوکس و برخی ماژولوا در قسمتی به نام‬
‫نگهداری میشود‪ .‬در ونگام روند ‪ boot‬شدن سیستم لنیوکس اطالعاتی را از ‪kernel ring buffer‬‬
‫نمایش میدود‪ .‬جه نمایش این اطالعات فرمان زیر را میزنیم‪:‬‬
‫‪#>> dmesg‬‬
‫آن را بهصورت صفحهبهصفحه‬ ‫بنابراین بهتر اس‬ ‫خروجی این فرمان معموالً خیلی طوالنی اس‬
‫بخوانیم‪:‬‬
‫‪#>> dmesg | less‬‬
‫یا اینکه میخواویم آن را در یک فایل بنویسیم و بعداً بررسی کنیم‪:‬‬
‫‪#>> dmesg > boot.messages‬‬
‫اطالعات ‪ kernel ring buffer‬را در‬ ‫بسیاری از توزیعوای لینوکس بعد از اینکه سیستم باال آمد‪،‬‬
‫مسیر ‪ /var/log/dmesg‬نگهداری میکنند‪ .‬اطالعات ‪ kernel ring buffer‬در حافظهی ‪RAM‬‬
‫نگهداری میشود و وربار که سیستم خاموش میشود از بین میرود و بار دیگر که روشن شد‪ ،‬این‬
‫اطالعات دوباره تولید میگردد‪.‬‬
‫بعد از اینکه ‪ BIOS‬باال آمد و وستهی لینوکس را در حافظه قرار دارد و راهاندازیوای اولیه مربوط‬
‫به وستتته انجام شتتد‪ ،‬باید برخی از ‪ system initialization‬وا در ستتطح ‪( user‬کاربر) و نه ‪kernel‬‬
‫(و سته) انجام شود‪ .‬پس در حقیقی مکانیزمی الزم ا س تا به محض باال آمدن سی ستم بتواند‬
‫ستترویسوا و برنامهوایی را بهصتتورت خودکار اجرا کند‪ .‬ومچنین گاوی بر استتاس وقوع رخدادی‬
‫خاص و یا ت صمیم مدیر سی ستم‪ ،‬الزم ا س برخی سرویسوا آغاز به کار کنند‪ .‬برای انجام چنین‬
‫کاروایی راهحلوای شناخته شدهی زیر در لنیوکس عبارتند از‪:‬‬
‫‪ .1‬استفاده از روش سنتی ‪ Unix‬و فایل ‪Inittab‬‬
‫‪ .۲‬روش ‪Upstart‬‬
‫‪۳۳‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫‪ .۳‬روش ‪ Systemd‬که در سیستموای جدید وجود دارد‪.‬‬

‫تمرین عملی‪ :‬در مورد سه روش گفتهشده در باال در اینترن جستجو کنید و اطالعاتی را که کسب‬
‫کردهاید برای خود یادداش کنید تا بعداً بتوانید از آن استفادهی عملی بکنید‪.‬‬
‫پس تا اینجا یادگرفتیم که ‪ BIOS‬کاروای الزم را انجام میدود‪ kernel ،‬در حافظه قرار میگیرد‪ ،‬و‬
‫س س ‪ init‬اجرا می شود که اولین پروسسی‪ 1‬اس که اجرا می شود‪ .‬حاال ‪ init‬از مدیر سرویسوای‬
‫مختلفی میتواند استفاده کند که یکی ‪ system V‬و دیگری ‪ upstart‬اس ‪.‬‬
‫تمرین عملی‪ :‬در مورد ستتتتاختتتار ‪ Process‬در ستتتیستتتتمعتتامتتل لینوکس مطتتالعتته کنیتتد‪.‬‬
‫راونمایی‪ :‬عبارت ‪ linux process structure‬را در اینترن جستجو کنید‪.‬‬

‫فایل ‪/var/log/messages‬‬
‫منبع دیگر برای اطالعات ‪ log‬در ستتتیستتتتم این فایل استتت که معموالً توستتتط ‪ deamon‬وای‬
‫واقعهنگاری ومچون ‪ syslogd‬یا ‪ syslogd-ng‬در آن توضیحات الزم اضافه می شود‪ .‬البته بسیاری از‬
‫برنامهوای دیگر که در سی ستم اجرا می شوند و امکانات ‪ logging‬در آنوا تعبیه شده ا س ‪ ،‬نیز‬
‫توانایی نوشتن ‪ log‬در این فایل را دارند‪.‬‬
‫در برخی از توزیعوای لینوکس برخی از اطالعات مربوط به ‪ boot‬شدن سی ستم را میتوان در این‬
‫فا یل یا ف ‪ .‬الب ته عالوه بر این فا یل در برخی از توزیع وا فا یل ‪ /var/log/boot‬حاوی اطال عات‬
‫بسیاری در مورد روند باال آمدن سیستم اس ‪.‬‬
‫نکته‪ :‬به خاطر دا شته با شید که د ستر سی به فایلوای ذکر شده در باال نیازمند سطح د ستر سی‬
‫‪ root‬اس ‪.‬‬

‫مدیریت سرویسها به روش ‪System V‬‬

‫بعد از انجام فعالی وای الزم توسط ‪ BIOS‬و ومچنین فاز دوم ‪ startup‬و آماده شدن فایلسیستم‬
‫‪ ،root‬پروسه ‪ init‬از مسیر ‪ /sbin/init‬با شمارهی شناسه ‪ PID=1‬اجرا )‪ (exec‬میشود‪ .‬برنامه ‪init‬‬
‫بهعنوان اولین برنامه فضای کاربر برای به اجرا درآوردن پروسهوای دیگر از طریق ‪ fork‬به فایل‬
‫‪ /etc/inittab‬مراجعه میکند‪ .‬فایل ‪ inittab‬تعیین میکند که‪ runlevel‬جاری (که سیستم با آن باال‬
‫میآید) چیس و ‪ init‬را به مسیری دیگری برای اجرای برنامهوای مورد نظر ور‪ runlevel‬ودای‬
‫میکند‪ ..‬بهعنوانمثال در فایلی که در بر روی سیستم ما موجود اس ‪ ،‬سطری‬
‫بهصورت‪ :wait:/etc/rc.d/rc 5‬وجود دارد که باعث به اجرا درآمدن برنامهوایی در مسیر‬
‫‪/etc/rc.d/rc5.d‬میشود که با ‪ S‬شروع میشوند‪ .‬نحوه رفتار برنامهوا توسط کلید واژهوای ‪،once‬‬

‫‪1‬‬ ‫‪process‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۳۴‬‬

‫‪ respawn ،wait‬و غیره قابل تعریف اس که در ادامهی ومین فصل بهطور کامل توضیح داده شده‬
‫اس ‪.‬‬
‫تذکر‪ :‬اگر در ور یک از بخشوای زیر دستوری بود که بر روی سیستم شما اجرا نشد‪ ،‬معموالً به‬
‫این خاطر اس که سیستم شما مبتنی بر توزیعوای جدیدتر اس که مبتنی بر ‪ systemd‬وستند‪،‬‬
‫ولی شما بهعنوان مدیر سیستم باید با توزیعوای مختلف و سازوکاروای آنوا آشنا باشید‪.‬‬

‫مزایای مدیر سرویس ‪System V‬‬

‫‪symbolic‬‬ ‫یک یا چند‬ ‫سادگی‪ :‬برای فعال یا غیرفعالکردن یک سرویس‪ ،‬کافی اس‬ ‫‪‬‬
‫‪ link‬در یک یا چند مسیر ایجاد و یا حذف شوند‪ .‬حتی دستور ‪ chkconfig‬این مسئله را‬
‫سادهتر نیز کرده اس ‪( .‬برای اطالعات بیشتر ‪ man chkconfig‬را ببینید‪ .‬در صورتی که‬
‫‪ chkconfig‬بر روی سیستمتان نصب نیس با استفاده از ‪ apt-get install chkconfig‬یا‬
‫‪ yum install chkconfig‬آن را نصب کنید‪.‬‬

‫تضمین اجرای برنامهها به ترتیب تعیین شده‪ :‬بهعنوانمثال ‪ S10network‬قطع ًا قبل‬ ‫‪‬‬
‫‪System‬‬ ‫از ‪ S55sshd‬اجرا میشود‪ ،‬چون عدد ‪ 1۰‬کوجکتر از ‪ ۵۵‬اس ‪ .‬اگر سیستم شما از‬
‫‪ V‬استفاده میکند آنگاه کافی اس به مسیر ‪ /etc/rc2.d‬یا ‪ /etc/rc?.d‬که در آن? یک‬
‫عدد دلخواه کمتر از ‪ ۵‬اس ‪ ،‬مراجعه کنید‪.‬‬

‫ایرادهای مدیریت سرویسها با ‪System V‬‬

‫‪ .1‬کارایی (‪ )performance‬باالیی ندارد‪ ،‬که به ومین دلیل سیستموای جدیدتر و به خصوص‬


‫‪ systemd‬توسعه پیدا کرده اس ‪.‬‬
‫‪ ‬کارکرد آن ترتیبی اس و اصوالً برای راه اندازی چندین سرویس بهصورت ومزمان‬
‫طراحی نشده اس ‪.‬‬
‫‪ ‬بر خالف یک سرور‪desktop ،‬وا ممکن اس دهوا بار در روز خاموش و روشن شوند‬
‫که از این جه بهینه نشده اس ‪.‬‬
‫‪ .۲‬با سخ افزاروای ‪( hotplug‬مثالً ‪ ram‬وایی که ونگام روشن بودن سیستم به آن اضافه‬
‫میشود) سازگاری چندانی ندارد‪.‬‬
‫‪Script .۳‬وای آن سنگین و پیچیدهاند‪ .‬مثالً پاسخ دادن به سؤالوای زیر کمی دشوار اس ‪:‬‬
‫‪ ‬آیا نمونه دیگری از این سرویس در حال اجرا وس ؟‬
‫‪ ‬آیا فایل یا دایرکتوری الزم وجود دارد؟‬
‫‪ ‬آیا سرویسوای پیشنیاز باال وستند؟‬
‫‪۳۵‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫تالشوایی صتتورت گرف که ستتیستتتمی طراحی شتتود که بهینهتر باشتتد‪ .‬ستتیستتتم ‪ upstart‬در‬
‫ن سخهوای جدید لینوکس ا ستفاده می شود که مبتنی بر رویداد (‪ )event-based‬ا س ‪ .‬به موازات‬
‫‪ upstart‬ستتتیستتتتم دیگری‪ ،systemd ،‬نیز توستتتط تیم دیگری در حال توستتتعه بود که به ومراه‬
‫توزیعوای جدیدتر لینوکس نیز انتشار پیدا کرده اس ‪.‬‬

‫بررسی ‪runlevel‬ها در لینوکس‬


‫میخواویم ببینیم وقتی لینوکس را رو شن میکنیم در چه شرایطی قرار میگیرد‪ .‬سی ستمعامل‬
‫لینوکس در روش ‪ system V‬به محض باال آمدن در یکی از حاالت زیر قرار دارد‪:‬‬
‫وضعیت‬ ‫‪Runlevel‬‬
‫‪Shut down‬‬ ‫‪0‬‬
‫‪Single user mode‬‬ ‫‪1‬‬
‫‪Multi user mode‬‬ ‫‪2‬‬
‫‪Full user mode‬‬ ‫‪3‬‬
‫‪Graphical user mode‬‬ ‫‪5‬‬
‫‪Reboot‬‬ ‫‪6‬‬

‫نکته‪ runlevel4 :‬روی ‪pc‬وای ‪ intel‬معنای خاصی ندارد‪ ،‬ولی روی ‪mainframe‬وا و ‪solaris‬‬ ‫‪‬‬
‫و ‪ ...‬وجود دارد‪ .‬پس بهتر اس برنامهوا جه ‪ cross-platform‬بودن روی ‪ runlevel4‬نباشند‪،‬‬
‫تا در صورت استفاده از ومان تنظیمات در سیستموای دیگر مشکلی پیش نیاید‪.‬‬

‫‪runlevel‬‬ ‫یکی از راهوای خاموش کردن سی ستم نو شتن فرمان ‪ init 0‬ا س که در آن سی ستم به‬
‫صفر که ومان ‪ shut down‬اس میرود‪ .‬برای ‪ restart‬وم میتوانید از فرمان زیر استفاده کنید‪:‬‬

‫‪#>> init 6‬‬


‫یادآوری‪ :‬عالم ‪ #‬که در خط باال آمده اس به معنای سطح دسترسی ‪ root‬اس ‪.‬‬
‫نوع دیگری از ‪ init‬وجود دارد که ‪ telinit‬استتت ‪ telinit .‬نیز ومانند ‪ init‬میتواند با گرفتن عددی‬
‫‪ runlevel‬را تغییر دود‪ .‬البته ‪ telinit‬میتواند با گرفتن ‪ q‬و ‪ Q‬بهعنوان آرگومان‪ ،‬فایل ‪/etc/inittab‬‬
‫را دوباره بخواند و تغییرات اعمال شده در آن را دوباره اعمال کند‪ .‬بنابراین اگر در فایل ‪/etc/inittab‬‬
‫تغییری ایجاد کردهاید یکی از راهوای اعمال آن زدن فرمان زیر اس ‪:‬‬

‫‪#>> telinit q‬‬


‫البته راه دیگر ‪ restart‬کردن ستتیستتتم است که توصتتیه نمیشتتود و یکی از راهوای دیگر وم زدن‬
‫فرمان زیر اس ‪:‬‬

‫‪#>> kill -1 1‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۳۶‬‬

‫یادتان با شد در ‪ runlevel‬یک که ‪ single user mode‬ا س فقط و فقط ‪ admin‬میتواند با کن سول‬


‫کار ک ند‪ runlevel 2 .‬عالوه بر ‪ ،runlevel 1‬ام کان استتتت فاده از ‪ network‬را وم فراوم میآورد و‬
‫میتوانیم کاربران دیگری وم داشته باشیم‪.‬‬

‫برای اینکه بفهمیم در چه ‪ runlevel‬ی وستیم این فرمان را میزنیم‪:‬‬

‫‪>> runlevel‬‬

‫فرمان دیگری که در این خصوص وجود دارد‪ ،‬فرمان روبهرو میباشد‪:‬‬

‫‪>> who -r‬‬

‫فرمان دیگری در این خصوص‪:‬‬

‫‪>> ps -aef | less‬‬

‫‪ ‬نکته‪ :‬در ور محیطی و یا در ور ‪ runlevel‬ی میتوانیم محیط گرافیکال داشته باشیم که‬
‫یک فرمان داریم به نام ‪ startx‬که مثالً در ‪ runlevel1‬میزنیم ‪ startx‬که محیط گرافیکال‬
‫وم داشته باشیم‪ .‬بنابراین کار کردن در خط فرمان و نداشتن محیط گرافیکی به معنای کار‬
‫کردن در ‪ runlevel‬خاصی نیس ‪.‬‬

‫وقتی فایل روبهرو را باز کنیم اوّلین خطی که ‪ #Comment‬نیس ت ‪ ،‬شتتماره ‪ runlevel‬میباشتتد‪ .‬در‬
‫اصل این ‪ runlevel‬پیش فرض سیستم اس ‪.‬‬

‫‪less/etc/inittab $‬‬

‫اگر ما ‪ 015‬بگذاریم یعنی ‪ runlevel‬ی که میخواویم برویم ‪ 5‬اس اگر ‪ 013‬بگذاریم یعنی‬
‫‪ .runlevel3‬اگر در فایل باال ‪ runlevel‬پیش فرض سیستم را بر روی ‪ 6‬تنظیم کنیم‪ ،‬سیستم مدام‬
‫‪ restart‬میشود‪ .‬تنها فقط زمانی که بخواویم یک کام یوتر را ‪ test‬کنیم‪ ،‬چنین کاری انجام میدویم‪.‬‬
‫اگر فرمان ‪ init‬را به ومراه یکی از شمارهوای ‪runlevel‬وا بزنیم آن ‪ runlevel‬اجرا می شود‪ .‬بهطور‬
‫مثال‪:‬‬

‫‪$ man init‬‬

‫‪$ init 0‬‬

‫‪$ init 3‬‬


‫‪۳۷‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫سؤال‪ :‬کاربرد و تفاوت ‪ runlevel‬دو و سه چیس ؟‬ ‫‪‬‬


‫می دانیم که ‪ ۲ runlevel‬و ‪ ۳‬ور دو شبکه را فراوم میکنند ولی ‪ ۲‬زمانی اس که یک‬ ‫‪‬‬
‫ال دو نفر کار میکنند‪ .‬ولی در ‪ ۳‬نرمافزاروای ‪)network file system( nfs‬‬
‫لینوکس داریم و مث ً‬
‫ال دو لینوکس در دو اتاق به وم شبکه میشوند‪ .‬البته این تنظیمات قابل‬ ‫باال میآیند‪ .‬مث ً‬
‫تغییر اس ‪.‬‬

‫‪debian‬‬ ‫در نسخهی لینوکس ما در فایل ‪ runlevel ،inittab‬پیشفرض ‪ 5‬میباشد ولی در سیستم‬
‫‪ runlevel‬پیشفرض دو اس ‪ .‬حال به بررسی دقیق خط مربوط به ‪ runlevel‬در فایل ‪inittab‬‬
‫میپردازیم‪:‬‬

‫‪id: 5: initdefault:‬‬

‫‪ ،identifier :id‬این فیلد شناسه نام دارد و حداکثر ‪ ۴‬حرف میباشد‪.‬‬

‫‪ :5‬فیلد دوّم ‪ runlevel‬اس ‪ .‬مثالً ‪۲۳۵‬‬

‫مثال‪ :‬میخواویم نرمافزار رادار به نام ‪ mingerty‬در سیستم طوری تنظیم شود و قرار داده‬ ‫‪‬‬
‫شود که ومواره یک نسخهی آن در حافظه باشد و به محض ‪ kill‬شدن و از بین رفتن دوباره‬
‫داخل حافظه بیاید‪.‬‬

‫‪ init‬یک فایلی دارد که میداند در چه ‪ runlevel‬ی اس ‪ .‬وقتی بررسی ‪ init‬انجام می شود این خط‬
‫را میخواند و میفهمد در چه ‪ runlevel‬ای باید باشد و میفهمد چه نرمافزاری را و با چه ‪runlevel‬‬
‫ی در حافظه بیاورد‪ .‬استتتم نرمافزار ما مثالً ‪ Test‬استتت و میخواویم ومواره در ور ‪ runlevel‬که‬
‫بودیم یک نستخه از آن در حافظه باشتد‪ .‬اگر خط مربوط به اجرای یک برنامه در فرم ‪ inittab‬در‬
‫قسم ‪ runlevel‬چیزی نبود و خالی بود یعنی در تمام ‪ runlevel‬وا اجرا شود‪.‬‬

‫‪Id:: Action: process‬‬


‫فیلد ‪ Action‬نوع فعالیتی که ‪ init‬خواود داش را اعالم میکند‪ .‬که میتواند مقادیر زیر را بگیرد‪:‬‬
‫همواره یک کپی از پروسس در حافظه باشد و اگر نرمافزار را ‪ kill‬کنیم دوباره بر‬
‫‪Respawn‬‬
‫میگردد‬
‫پروسس ویچگاه اجرا نگردد‬ ‫‪Off‬‬
‫‪ Init‬باید منتظر پایان این پروسس باشد‬ ‫‪Wait‬‬
‫پروسس فقط یک بار اجرا شود‬ ‫‪Once‬‬
‫پروسس در ابتدای باال آمدن سیستم اجرا گردد‬ ‫‪Sysinit‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۳۸‬‬

‫‪ runlevel‬پیش فرض‬ ‫‪Initdefault‬‬

‫فیلد ‪ process‬برنامهای که تح ‪ runlevel‬اجرا خواود شد را نشان میدود که ما در این قسم‬


‫میتوانیم برنامهی خودمان را به نام ‪ mingrty‬قرار دویم‪.‬‬

‫‪1:235:respawn: /sbin/mingrty tty1.‬‬

‫‪init‬‬‫حال تنظیمات برنامهی ما تمام شد و آن را در فایل ‪ init‬قرار میدویم‪ .‬یادتان باشد که برای‬
‫الوی معنایی ندارد و اینکه در کجای حافظه باشد‪ .‬کرنل با الوی وا کار دارد و تشخیص میدود‪.‬‬

‫‪ -‬در لینوکس اگر ‪ Ctrl+Alt+del‬بزنید ‪ init‬بیدار میشود و ‪ ۳‬ثانیه وق دارد و در تمام ‪runlevel‬وا‬
‫اجرا میشود‪ .‬بهطور پیش فرض این کلیدوا سیتسم را ‪ restart‬میکنند‪.‬‬

‫‪$ less/etc/inittab‬‬

‫در فایل ‪ init‬مثالً مشخص شده اس که وقتی برق رف چند دقیقه بعد بهعنوانمثال خبری را برای‬
‫ومه کاربران از طرف ‪ Admin‬به وسیله فرمان ‪( wall‬مخفّف ‪ )write all‬بنویسد و به ومه خبر دود‪.‬‬
‫به وسیله این فرمان برای ومه یک خبری میفرستید‪.‬‬

‫‪$ wall‬‬

‫‪news‬‬

‫‪Ctrl+d‬‬

‫بخشی از فایل ‪ inittab‬یعنی آخرین خط آن تعیین میکند که محیط گرافیکال در چه ‪ runlevel‬ی‬


‫باال بیاید‪:‬‬

‫‪# Runxdm in runlevel 5‬‬

‫‪x:5:respawn: /etc/X11/prefdm-nodaemon‬‬

‫میتوانیم به جای ‪ 5‬عدد ‪ 1‬را بگذاریم تا در ‪ runlevel1‬وم محیط گرافیکال داشته باشیم پس این‬
‫خیلی خیلی نکته مهمی اس که حتماً نباید در ‪ runlevel5‬باشیم تا محیط گرافیکال داشته باشیم‪.‬‬

‫فرمان دیگری به نام ‪ switch desk‬وجود دارد که امکان تعیین محیط گرافیکالی (‪ kde ،Gnome‬و‬
‫‪ )...‬که میخواویم در آن کار کنیم را مشخص میکند‪.‬‬

‫‪$ less /etc/rc.d/rc‬‬


‫‪۳۹‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫فرمان باال یک ‪ shell script‬فوقالعاده مفصّل اس که جه بررسی اجرای فرمانوا و برنامهوای‬


‫مختلف در ‪ runlevel‬وای مختلف کاربرد دارد‪ .‬مثالً فرمان ‪ rc‬زیر در ‪ runlevel5‬اجرا میشود و این‬
‫‪ script‬تعداد زیادی نرمافزار را اجرا خواود نمود‪:‬‬

‫‪15:5:wait:/etc/rc.d/rc5‬‬

‫برای تغییر ‪ runlevel‬میتوانیم یکی از روشهای زیر را به کار ببریم‪ :‬اگر ‪ Manual‬این دو را بخوانیم‬
‫ور دو یکی وستند‪.‬‬

‫شماره ‪1( init runlevel‬‬

‫شماره ‪۲( telint runlevel‬‬

‫به عالوه برای ‪ down‬یا ‪ Reboot‬نمودن سیستم میتوان یکی از دستورالعملوای زیر را اجرا نمود‪.‬‬
‫‪ restart‬کردن‬ ‫‪ shutdown‬کردن‬
‫‪init 6‬‬ ‫‪init 0‬‬
‫‪reboot‬‬ ‫‪shutdown –h now‬‬
‫‪shutdown –r now‬‬ ‫‪power off‬‬
‫‪ctrl+alt+del‬‬ ‫‪halt‬‬

‫وقتی سیستمعامل میآید بررسی میکنند که آیا ‪ halt‬کار میکند‪ .‬دستور ‪ halt‬میتواند ‪ cpu‬را نگه‬
‫دارد و یا متوقف کند‪ .‬اگر ‪ halt‬کار نکند وقتی لینوکس داخل شود دیگر نمیتواند خارج شود‪ .‬اگر‬
‫‪ halt‬کار نکند پس چطور چک میکند که ‪ halt‬کار میکند؟ در ‪ LPI2‬خواویم گف ‪.‬‬

‫‪ -‬فرمان ‪ :chkconfig‬با اجرای این فرمان میتوانیم بفهمیم چه سرویسوایی در چه ‪runlevel‬وایی‬


‫باال وستند‪.‬‬

‫‪$ chk config --list | less‬‬

‫حاال میخواویم ‪ dhcpd‬را ‪ Active‬کنیم‪ ،‬پس فرمان زیر را اجرا میکنیم‪:‬‬

‫‪$ chk config --level 1 dhcp on‬‬

‫برای فعال کردن ‪ sedmail‬نیز‪ ،‬فرمان زیر را به کار میبریم‪:‬‬

‫‪$ chkconfig -- level 1 sendmail on‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۴۰‬‬

‫‪ ‬نکته‪ :‬فرمان ‪ kill -1 1‬نیز باعث میگردد که ‪ inittab‬توسط ‪ init‬مجدداً خوانده شود‪.‬‬

‫مدیریت سرویسها با ‪upstart‬‬

‫ومچنان که گفتیم این یک برنامه ‪ /sbin/init‬با طراحی متفاوت اس که بر مبنای رخداد کار میکند‬
‫و با ‪ system V‬که از ‪ inittab‬استفاده میکند‪ ،‬سازگاری دارد‪ ..‬بهعنوانمثال‪:‬‬
‫‪$ exec /etc/rc.d/rc $RUNLEVEL‬‬
‫‪ .‬ویژگی مثب دیگر ‪ upstart‬این اس که نیازی‬ ‫معنا دارد و به ومان مدل ‪ system v‬ارزشمند اس‬
‫به ارسال ‪ SIGHUP‬به ‪ init‬برای اعمال تغیرات فایلوای پیکربندی ندارد‪ .‬در ‪ LPIC2‬در مورد ‪signal‬‬
‫وا بیشتر خواویم آموخ ‪.‬‬
‫میتوان گف که تمام نسخهوای مدرن و جدید لینوکس از ‪ upstart‬استفاده میکنند‪ .‬یادتان باشد‬
‫که بهعنوان یک مدیر سیستم‪ ،‬باید توانایی کار با سیستموای موجود (‪ )legacy systems‬را داشته‬
‫باشتتید و ومچنین آمادگی الزم برای کار با ستیستتتموای جدید را نیز کستتب کنید‪ .‬بنابراین وجود‬
‫‪ upstart‬به این معنا نیستت که کار با ‪ system v‬و ‪ runlevel‬وا برچیده شتتده استت ‪ .‬وماکنون در‬
‫ب سیاری از مراکز ب سیار مهم و جدی در سرتا سر دنیا از ن سخهوای لینوک سی ا ستفاده می شود که‬
‫مبتنی بر ‪ system v‬و ‪ inittab‬وستند و ومینطور در سیستموای جدیدتر شما ‪ upstart‬را خواوید‬
‫دید‪.‬‬

‫مفهوم ‪ Job‬در ‪Upstart‬‬


‫از یک واحد کار (‪ )unit of work‬که با یک فایل پیکربندی‬ ‫تعریف‪ Job :‬عبارت اس‬ ‫—‬
‫تعریف میشود‪.‬‬

‫‪ ‬انواع ‪:job‬‬

‫‪( Task Job‬یا بطور خالصه ‪ :)task‬کاری (یا شغلی) که طول عمر و حال‬ ‫◦‬
‫پایانی مشخصی داشته باشد‪ .‬مثال‪ delete :‬کردن یک فایل‪ ،‬پشتیبان گیری‪ ،‬و‬
‫‪...‬‬

‫‪( Service Job‬یا ‪ :)daemon‬کاروایی که به مدت طوالنی باید در حال اجرا‬ ‫◦‬
‫باشند‪ .‬مانند سرویس نامهرسان (‪ ،vsftpd ،)sendmail‬و ‪...‬‬

‫‪ : Abstract Job‬کاروایی که ویچ ‪script‬ی را اجرا نکرده و فرزندی ایجاد‬ ‫◦‬


‫نمیکنند‪ .‬این نوع ‪ job‬متوقف نمیشود مگر اینکه مدیر سیستم صراحتاً آن را‬
‫متوقف کند‪.‬‬
‫‪۴1‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫وضعیتهای مختلف یک ‪( job‬ساده)‬


‫شکل زیر وضعی وایی را که یک ‪ job‬میتواند داشته باشد بهصورت ساده نشان میدود‪.‬‬

‫وضعیتهای مختلف یک ‪( job‬کاملتر)‬


‫یک ‪ job‬بر اساس شرایط‪ ،‬از حالتی به حال دیگر در میآید‪ .‬در جدول زیر وضعی وای‬ ‫—‬
‫مختلف یک ‪ job‬آمده اس ‪.‬‬

‫توضیح‬ ‫وضعیت‬
‫حال اولیه‬ ‫‪Waiting‬‬
‫قرار اس ‪ start‬شود‬ ‫‪Starting‬‬
‫در حال اجرای قسم ‪pre-start‬‬ ‫‪Pre-start‬‬
‫میخواود قسم ‪ script‬یا ‪ exec‬را اجرا کند‬ ‫‪Spawned‬‬
‫در حال اجرای قسم ‪post-start‬‬ ‫‪Post-start‬‬
‫سرویس باال اس‬ ‫‪Running‬‬
‫در حال اجرای قسم ‪pre-stop‬‬ ‫‪Pre-stop‬‬
‫در حال پایین آمدن‬ ‫‪Stopping‬‬
‫کشته شده اس‬ ‫‪job :Killed‬‬
‫در حال اجرای قسم ‪post-stop‬‬ ‫‪Post-stop‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۴۲‬‬

‫مراحل آغاز یک ‪Job‬‬


‫چرخه زندگی ‪ Job‬مانند یک ماشین حال (‪ )state machine‬اس ‪( .‬اگر رشتهی شما‬ ‫—‬
‫کام یوتر بوده‪ ،‬با این مفهوم در درس مداروای منطقی‪ ،‬یا نظریهی زبانوا و ماشینوا آشنا‬
‫شدهاید)‪ .‬وضعی یک ‪ Job‬به شکل کامل ”حال ‪/‬ودف“ (‪ )goal/state‬نشان داده میشود‪.‬‬

‫توضیح‬ ‫مرحله‬
‫‪ job‬در حال استراح‬ ‫‪stop/waiting‬‬
‫‪ job‬قصد دارد اجرا شود‬ ‫‪start/waiting‬‬
‫رخداد ‪ startup‬این ‪ job‬منتشر میشود‬ ‫‪start/starting‬‬
‫بند ‪ pre-start‬فایل پیکربندی (در صورت وجود) اجرا‬ ‫‪start/pre-start‬‬
‫میشود‬
‫به جاب شماره ‪ PID‬اختصاص مییابد‬ ‫‪start/spawned‬‬
‫بند ‪ post-start‬فایل پیکربندی (در صورت وجود) اجرا‬ ‫‪start/port-start‬‬
‫میشود‬
‫رخداد ‪ started‬منتشر میشود‬ ‫‪start/running‬‬

‫مراحل پایان یافتن یک ‪Job‬‬


‫‪stop/running‬‬ ‫—‬
‫‪stop/pre-stop‬‬ ‫—‬

‫‪:stop/stopping‬‬ ‫—‬

‫رخداد ‪ stopping‬منتشر میشود‪( .‬یعنی میتواند باعث آغاز و پایان ‪ job‬وای‬ ‫◦‬
‫مرتبط شود‪).‬‬

‫سیگنال مشخص شده در بند ”‪ “kill signal‬برای پایان دادن به پروسهوا‬ ‫◦‬
‫استفاده میشود‪.‬‬

‫‪:stop/killed‬‬ ‫—‬

‫‪:stop/post-stop‬‬ ‫—‬

‫‪ :stop/waiting‬رخداد ‪ stopped‬منتشر میشود‪.‬‬ ‫—‬


‫‪۴۳‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫‪initctl‬‬
‫ومچنان که از نام آن مشخص اس ‪ initctl ،‬ابزار کنترلی ‪ Upstart‬اس ‪.‬‬
‫‪ initctl‬ابزاری اس که مدیر سیستم توسط آن با ‪ init‬صحب میکند‪.‬‬ ‫—‬

‫‪$ initctl start JOB‬‬


‫‪$ initctl list‬‬
‫‪$ initctl stop JOB‬‬
‫‪$ initctl restart JOB‬‬
‫فرمان باال‪ ،‬اگر نمونهای از ‪ Job‬در حال اجرا نباشد‪ ،‬خطا میدود‪.‬‬
‫‪$ initctl reload JOB‬‬
‫فرمان باال ومانند ‪ SIGHUP‬در ‪ system v‬اس که مبتنی بر ‪ runlevel‬وا بود‪.‬‬
‫‪$ initctl status JOB‬‬

‫اطالعات بیشتر در مورد ‪initctl‬‬


‫برای سادگی بیشتر‪ ،‬دستوراتی به ‪ initctl‬پیوند شدهاند‪:‬‬
‫‪$ ls -l /sbin | grep initctl‬‬
‫‪-rwxr-xr-x. 1 root root 138784 Mar 20 2012 initctl‬‬
‫‪lrwxrwxrwx. 1 root root 7 Aug 5 2012 reload -> initctl‬‬
‫‪lrwxrwxrwx. 1 root root 7 Aug 5 2012 restart -> initctl‬‬
‫‪lrwxrwxrwx. 1 root root 7 Aug 5 2012 start -> initctl‬‬
‫‪lrwxrwxrwx. 1 root root 7 Aug 5 2012 status -> initctl‬‬
‫‪lrwxrwxrwx. 1 root root 7 Aug 5 2012 stop -> initctl‬‬
‫از ‪ initctl‬میتوان برای منتشر کردن رخدادوا بهصورت دستی نیز استفاده کرد‪ .‬ومچنین امکان‬
‫تعیین سطح جزئیاتی که ‪ log‬میشود نیز وجود دارد‪:‬‬
‫]‪$ initctl log-priority [debug/info/message/warn/error/fatal‬‬
‫که ور کدام از موارد دکر شده در داخل ][ میتوانند مورد استفاده قرار گیرند‪ .‬برای توضیحات بیشتر‬
‫به صفحهی ‪ man initctl‬مراجعه کنید‪.‬‬

‫‪event‬‬
‫رویداد یا ومان ‪ ،event‬عالم یا سیگنالی اس که توسط ‪ upstart‬به ‪ job‬وا یا ‪event‬وای دیگر‬
‫فرستاده میشود‪ .‬با منتشر شدن (‪ )emit‬یک رخداد‪ ،‬تمامی ‪job‬وای سیستمِ ‪ upstart‬تح تأثیر‬
‫قرار میگیرند‪ .‬نکتهی مهمی که در مورد سیستم ‪ upstart‬وجود دارد این اس که نمیتوان کاری‬
‫کرد که یک ‪ ،Job‬رخدادی را نبیند‪ .‬پس در صورت وقوع یک رخداد ومهی ‪ job‬وا آن را درک‬
‫خواوند کرد‪.‬‬
‫مثال‪ :‬موقع روشن شدن سیستم‪ upstart،‬یک رخداد به نام ‪ startup‬منتشر میکند‪ .‬از طرفی‪،‬‬ ‫‪‬‬
‫‪ job‬ی به نام ‪ rcS‬با پیکربندی زیر وجود دارد که نسب به این رخداد حساس اس ‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۴۴‬‬

‫‪start on startup‬‬
‫‪...‬‬
‫‪exec /etc/rc.d/rc.sysinit‬‬
‫‪...‬‬

‫انواع ‪event‬‬
‫‪ :signal event .1‬یک رخداد غیر ومزمان (‪ )asynchronous‬اس و منتشر کننده این رخداد‪،‬‬
‫برای دیدن نتیجه صبر نکرده و به کار خود ادامه میدود‪:‬‬

‫‪$ initctl emit --no-wait mysignal‬‬


‫‪ :method event .۲‬یک رخداد ومزمان (‪ )synchronous‬اس که معموالً با یک ‪ task‬ومراه‬
‫میشود (شبیه توابع برنامه نویسی)‪ .‬میتواند براساس موفقی یا عدم موفقی ‪ ،task‬به‬
‫کمک ‪ return code‬کاری انجام دود‪:‬‬

‫‪$ initctl emit mymethod ACTION=do_something‬‬


‫} ;‪"; exit ۲۰‬متاسفانه خطایی پیش آمد” ‪[$? -ne 0] && { echo‬‬
‫‪ :hook event .۳‬این رخداد ومانند ‪ method event‬بهصورت ومزمان (‪ )synchronous‬اس ‪.‬‬
‫این رخداد حال میانی ‪ method‬و ‪ signal‬اس ‪ .‬در واقع این رخداد‪ ،‬اعالنی اس در مورد‬
‫اینکه تغییری در سیستم در حال رخ دادن اس ‪ ،‬اما بر خالف رخداد ‪ ،signal‬منتشر‬
‫کنندهی آن قبل از ادامه به کار و انجام کار دیگر‪ ،‬منتظر آن میماند تا کامل شود‪ .‬بنابراین‬
‫‪ hook‬وا جه اطالع به بخشوای مختلف سیستم ونگامی که یک رویداد در حال شروع‬
‫یا پایان اس ‪ ،‬به کار میروند‪.‬‬

‫ترتیب منتشر شدن رخدادها‬


‫ترتیب منتشر شدن رخدادوا قانون خاصی ندارد‪ .‬ماوی کلمه رخداد به معنی غیر پیش بینی بودن‬
‫زمان و ترتیب آن اس ‪.‬‬

‫ترتیب اجرای ‪Job‬ها بر اثر یک رخداد‬


‫سه ‪ job‬به شکل زیر تعریف شده اس ‪:‬‬
‫‪/etc/init/X.conf‬‬
‫‪start on event-A‬‬
‫‪/etc/init/Y.conf‬‬
‫‪start on event-A‬‬
‫‪/etc/init/Z.conf‬‬
‫‪start on event-A‬‬
‫‪۴۵‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫پرسش‪ :‬در صورت منتشر شدن ‪ job ،event-A‬وا به چه ترتیبی اجرا میشوند؟‬
‫پاسخ‪ :‬معلوم نیس و نباید ترتیب آنوا مبنای چیزی قرار گیرد‪.‬‬
‫تمرین‪ job :‬ی بهنام ‪ ajib‬با پیکربندی زیر بسازید (‪:)/etc/init/ajib.conf‬‬
‫‪start on event-A‬‬
‫‪stop on event-A‬‬
‫‪script‬‬
‫‪sleep 30‬‬
‫‪end script‬‬
‫حاال در قدم بعدی‪ ،‬با فرمان زیر‪ ،‬رخداد ‪ event-A‬را منتشر کنید‪:‬‬
‫‪$ initctl log-priority debug‬‬
‫‪$ initctl emit event-A‬‬
‫پرسش‪ :‬در صورت منتشر شدن رخداد ‪ ،event100‬کدام ‪ job‬ابتدا اجرا خواود شد؟‬
‫پاسخ‪ :‬اول ‪stop‬وا پردازش میشوند‪.‬‬

‫مدیریت ‪runlevel‬ها در ‪Upstart‬‬


‫مشاوده ‪ runlevel‬جاری و تغییر آن با ‪ telinit‬تفاوتی با ‪ System V‬ندارد‪ .‬روش تغییر‬ ‫—‬
‫‪ runlevel‬پیش فرض در توزیعوای مختلف ممکن اس متفاوت باشد‪:‬‬

‫‪/etc/init/rc-sysinit.conf.‬‬ ‫در ‪ Ubuntu‬در فایل‬ ‫◦‬

‫‪/etc/inittab‬‬ ‫در ‪ RHEL6‬در‬ ‫◦‬

‫‪ systemd‬چیست؟‬
‫ور دو مدیر سرویس در لینوکس (‪ system V‬و ‪ )Upstart‬مبتنی بر ‪ init‬وستند و در حقیق تفاوت‬
‫پایهای با وم ندارند؛ ‪ init‬که ومان پروسس شمارهی یک در سیستم اس ‪ .‬در سال ‪ ۲۰1۰‬سیستم‬
‫دیگری نیز در طراحی شد که جایگزین ‪ init‬اس ‪ .‬به عبارت دیگر در سیستموایی که از ‪systemd‬‬
‫استفاده میکنند‪ systemd ،‬اولین پروسسی اس که اجرا میشود و یک ‪ daemon‬برای مدیری‬
‫سیستم اس ‪.‬‬
‫در این سیستموایعامل ‪ systemd‬اولین ‪ daemon‬ی اس که اجرا میشود و آخرین‬
‫‪ daemon‬ی اس که خاتمه مییابد‪ .‬ودف از طراحی ‪ systemd‬ایجاد یک مدیر سیستم بهینهتر از‬
‫‪ init‬بوده اس ‪ .‬به خاطر تواناییوای این سیستم و بهینه بودن آن‪ ،‬در سالوای ‪ ۲۰1۲‬و ‪۲۰1۳‬‬
‫توزیعوای عمده و اصلی لینوکس به سم استفاده از ‪ systemd‬رفتهاند‪ .‬امکانات این سیستم در زیر‬
‫آمده اس ‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۴۶‬‬

‫سطح موازی کاری باال‬ ‫◦‬

‫وابستگی کمتر به ‪script‬وا‬ ‫◦‬

‫مدیری وابستگی سرویسوا به شکل بهینه‬ ‫◦‬

‫شروع کردن سرویسوا در زمان درخواس‬ ‫◦‬

‫توزیعوای ‪ ... ،openSUSE 12.1 ،Mandriva 11+ ،Fedora 15+‬و احتماالً ‪ RHEL7‬امکان‬ ‫—‬
‫پشتیبانی از این سیستم را دارند‪.‬‬

‫که یک مدیر سیستم در حال حاضر توانایی کار با ‪ System V‬و ‪ Upstart‬را‬ ‫نکته‪ :‬الزم اس‬ ‫‪‬‬
‫داشته باشد و در آیندهای نزدیک نیز تسلط به ‪ systemd‬ضروری خواود بود‪.‬‬

‫خاموش کردن سیستم‬


‫برای خاموش کردن کام یوتر میتوانید از یکی از فرمانوای زیر استفاده کنید‪:‬‬
‫‪#>> shutdown –h now‬‬
‫‪#>> halt‬‬
‫‪#>> init 0‬‬
‫‪#>> telinit 0‬‬
‫اگر میخواوید قبل از خاموش کردن سیستم به تمام کاربرانی که در حال کار وستند‪ ،‬پیغام مناسبی‬
‫ارسال کنید که فایلوای خود را ذخیره کنند‪ ،‬فرمان زیر را بزنید‪:‬‬
‫”‪#>> shutdown –k “please save your files, we are going to shutdown in 10 minutes‬‬
‫دستور باال پیغام داده شده را نمایش میدود بدون اینکه سیستم را واقع ًا خاموش کند‪ .‬برای اینکه‬
‫سیستم بعد از ده دقیقه خاموش شود‪ ،‬فرمان زیر را میزنیم‪:‬‬
‫‪#>> shutdown –h +10‬‬
‫برای لغو کردن آن‪ ،‬فرمان زیر را میزنیم‪:‬‬
‫‪#>> shutdown –c‬‬

‫نکاتی در مورد ‪/etc/init.d‬‬


‫دایرکتوری ‪ init.d‬حاوی تعدادی اسکری شروع‪/‬پایان برای سرویسوای گوناگون اس ‪ .‬تقریباً تمام‬
‫سرویسوایی که بر روی سیستموا شما نصب شده باشند در این مسیر اسکری وای مدیریتی خود‬
‫را قرار می دوند‪ .‬یکی از نکات مهمی که باید به خاطر داشته باشید این اس که اسکری وایی که‬
‫در زیر دایرکتوریوای ]‪ /etc/rc[0-6‬قرار دارند ‪ symbolic‬لینکوایی وستند به اسکرپی وایی که‬
‫در مسیر‪ /etc/init.d‬قرار دارند‪ .‬برای مشاودهی این موضوع دستور زیر را اجرا کنید‪:‬‬
‫‪$ ls –alh /etc/rc3.d‬‬
‫‪۴۷‬‬ ‫فصل ‪ 1‬معماری سیستم‬

‫که یکی از خطوط خروجی آن در سیستم ما بهصورت زیر اس ‪:‬‬


‫‪lrwxrwxrwx 1 root root 17 May 4 07:18 K00ipmievd ->../init.d/ipmievd‬‬
‫اب تدای ‪ lrwxrwxrwx‬آمده استتت نشتتتاندو ندهی آن استتت که فایل با نام‬ ‫حرف ال که در‬
‫‪ K00ipmievd‬یک ‪ symbolic‬لینک استو مسیر‪ ../init.d/ipmievd‬مسیر واقعی آن را نشان میدود‪.‬‬
‫یعنی یک دایرکتوری باالتر میرود‪ ،‬ب عد داخل دایرکتوری ‪ init.d‬میرود و استتتکری ‪ ipmievd‬را‬
‫مشخص میکند‪ .‬این مسئله برای سایر اسکری وا ومانند ‪ mysql‬یا ‪ postgresql‬نیز صحیح اس ‪.‬‬
‫فصل ‪ 2‬ساختار لینوکس‬
‫در این فصل به موارد زیر خواویم پرداخ ‪:‬‬
‫‪ ‬چارت سازمانی لینوکس و فایل سیستموا‬
‫‪ ‬طراحی شمای دیسک سخ‬
‫‪ ‬نصب کردن یک ‪boot manager‬‬
‫مدیری کتابخانهوای اشتراکی‪1‬‬ ‫‪‬‬

‫چارت سازمانی لینوکس‬


‫آنچه در شکل زیر مشاوده میکنید چارت بخشوا و دایرکتوریوای مختلف لینوکس اس ‪ .‬در فصل‬
‫دیگری از کتاب در مورد دایرکتوریوای ‪ /proc‬و ‪ /dev‬و با دستورات مرتبط با آنوا نیز آشنا شدیم‪.‬‬
‫در این فصل به بررسی بخشوای دیگر سیستمعامل لینوکس خواویم پرداخ و با اجزای آن بیشتر‬
‫آشنا خواویم شد‪ .‬در ادامه در مورد فایل سیستم و پارتیشن بندی و دستورات مرتبط با آن صحب‬
‫خواویم کرد‪.‬‬

‫‪1‬‬ ‫‪shared libraries‬‬


‫‪۴۹‬‬ ‫فصل ‪ ۲‬ساختار لینوکس‬

‫بررسی دایرکتوری‪/‬‬

‫این دایرکتوری ‪ root‬یا ریشه مبنای سیستم فایل لینوکس اس ‪ .‬از نظر منطقی کلیه دایرکتوریوا‬
‫و فایلوای لینوکس صرف نظر از محل فیزیکیشان در این دایرکتوری قرار دارند‪ .‬یعنی ممکن اس‬
‫‪ /home‬شما بر روی یک وارددیسک باشد و ‪ /tmp‬نیز بر روی یک وارددیسک دیگر‪ ،‬که این دیدگاه‬
‫فیزیکی اس ‪ ،‬ولی در دیدگاه منطقی‪ ،‬آن چنان که در ساختار فایل سیستم و خروجی دستور ‪ls /‬‬
‫نمایش داده میشود‪ ،‬ومگی زیر دایرکتوری ‪ /‬وستند‪ .‬پس وقتی ‪ cd /‬را میزنیم به ریشه اصلی‬
‫لینوکس میرویم جایی که ریشهی ومهی دایرکتوریوای دیگر زیر آن قرار دارند یعنی از باال به‬
‫لینوکس و دایرکتوریوا و فایلوای داخل آن نگاه میکنیم‪.‬‬
‫‪cd /$‬‬
‫‪ls -l$‬‬
‫‪ drwxr-xr-x2root 4096 Aug 4 16:15 bin‬مشخصات دایرکتوری ‪....‬‬
‫‪d‬‬ ‫چپترین مکان کاراکتر‬ ‫یادآوری‪ :‬برای یک ‪ object‬در خروجی دستور ‪ ls –l‬اگر در سم‬ ‫‪‬‬
‫بود یعنی دایرکتوری اس ‪ .‬و اگر – منها بود یعنی این یک فایل اس ‪.‬‬

‫‪ :۴۰۹۶‬حجم دایرکتوری ‪ :Bin‬نام دایرکتوری‬


‫تعریف علمی دایرکتوری این ا س که دایرکتوری فایلی ا س که تو سط سی ستمعامل خوانده و‬
‫نو شته می شود‪ .‬در لینوکس مودم فایل ا س کارت شبکه‪ ،‬کارت صدا و ‪ ...‬فایل و ستند‪ .‬تجهیزات‬
‫جدید ساختار فایلوایشان استاندارد اس ‪.‬‬

‫بررسی دایرکتوری ‪bin‬‬

‫این دایرکتوری شامل تعداد زیادی از ‪ utility‬وای لینوکس اس ‪ .‬این ‪ utility‬وا‪ ،‬دستورات در‬
‫دسترس سیستمعامل لینوکس وستند‪ .‬یعنی بسیاری از فرمانوایی که در لینوکس به کار میگیریم‬
‫زیر این دایرکتوری قرار دارند‪ .‬این دستورات به فرم ‪ binary‬وستند و به ومین دلیل نام این‬
‫دایرکتوری را ‪ bin‬گذاشتهاند‪ .‬بسیاری از فرمانهای لینوکس مانند‪ cat,cp,ls,more,tar‬و ‪ ...‬در‬
‫این دایرکتوری قرار دارند‪ .‬حاال میخواویم زیر دایرکتوری ‪ bin‬برویم و فایلوای زیر آن را بررسی‬
‫کنیم‪:‬‬
‫‪$ cd /bin‬‬
‫‪$ ls –l | less‬‬
‫فایلوای این دایرکتوری بهطور مفصل در این کتاب مطرحشده و بررسی میشوند‪.‬‬
‫و‬ ‫یا نه؟ اگر فقط ‪ type‬را بزنید کافی نیس‬ ‫نکته‪ :‬اگر از شما پرسیدند یک فرمان ‪ builtin‬وس‬
‫یک ‪ -a‬که مخفّف ‪ all‬به معنی ومه میباشد وم باید بگذاریم که ومه را نمایش دود‪.‬‬
‫‪$ type-a cd‬‬
‫‪cd is a shell builtin‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۵۰‬‬

‫‪/bin/cd‬‬
‫(یعنی بخشی از ‪ shell‬باشد) بلکه ممکن اس در یک سیستم ‪ builtin‬و در‬ ‫‪ cd‬حتماً ‪ builtin‬نیس‬
‫سیستم دیگری فرمان خارجی باشد‪.‬‬

‫بررسی دایرکتوری ‪boot‬‬

‫‪GRUB boot‬‬ ‫این دایرکتوری حاوی وسته لینوکس و دیگر فایل وایی اس که مورد نیاز برنامه‬
‫‪ Manager‬اس ‪ .‬این وسته و فایلوای دیگر میتوانند در ور دایرکتوری نیز قرار گیرند به این دلیل‬
‫که فایلوای زیر این دایرکتوری فقط یک ک ی از فایلوای اصلی اس ولی بهطور مرسوم آنوا را‬
‫در این دایرکتوری قرار میدوند‪.‬‬
‫حاال به سراغ دایرکتوری ‪ boot‬میرویم‪:‬‬
‫‪$ cd /boot‬‬
‫‪-l $ ls‬‬
‫دایرکتوری ‪ boot‬دایرکتوری اس که فایلوایی که سیستمعامل را باال میآورند زیر آن قرار دارند‪.‬‬
‫در لینوکس وستهی اصلی و ومهکاره ‪( vmlinuz‬که در خروجی دستور باال آن را میبینید) میباشد‪.‬‬
‫که تمام مدیری وا را انجام میدود‪ ،‬این فایل ‪ executable‬اس و زیر این دایرکتوری قرار دارد‪.‬‬
‫برای مشاوده ی اطالعات بیشتر در مورد این فایل‪ ،‬دستور زیر را اجرا کنید (توجه داشته باشید که‬
‫بعد از نوشتن ‪ file vmlinuz‬کلید ‪ tab‬را فشار دوید تا بهطور اتوماتیک نام فایل کامل شود‪ ،‬زیرا‬
‫ممکن اس نسخهی ‪ vmlinuz‬سیستم شما‪ ،‬که ومان توزیع ‪ kernel‬شما اس ‪ ،‬متفاوت باشد و فایل‬
‫با نام زیر یاف نشود)‪:‬‬
‫‪$ file vmlinuz-2.6,18-194.e15‬‬
‫‪Is executable file ….‬‬
‫راه دیگر برای اجرای فرمان باال‪ ،‬استفاده از روش زیر اس ‪:‬‬
‫)‪$ file /boot/vmlinuz-$(uname –r‬‬
‫فرمان ‪ uname‬به ما اطالعات ‪ kernel‬را میدود و چه تاریخی و چه ساعتی و اسم کام یوتر را به ما‬
‫میدود‪.‬‬
‫‪$ uname-a‬‬
‫فایل دیگری که داریم ‪ system.map‬میباشد که به شما میگوید ‪ kernel‬از چه اجزایی تشکیلشده‬
‫اس ‪.‬‬
‫‪ ‬نکته‪ :‬پس یادمان باشد که زیر دایرکتوری ‪ boot‬نرمافزاروای مربوط به سیستمعامل قرار دارند‪.‬‬
‫اگر سیستمعامل باال نیامد‪ ،‬یادمان باشد این فایلوا را باید بررسی کنیم‪.‬‬

‫بررسی فایلوای زیر دایرکتوری ‪ boot‬و نحوهی باال آمدن سیستم را بهطور کامل در ‪ lpic2‬بررسی‬
‫میکنیم‪.‬‬
‫‪۵1‬‬ ‫فصل ‪ ۲‬ساختار لینوکس‬

‫بررسی دایرکتوری ‪home‬‬

‫محل قراردادی دایرکتوری خانگی کلیه کاربران‪ .‬مانند دایرکتوری خانگی ‪/home/hamid/‬برای‬
‫کاربری به نام ‪hamid‬‬
‫‪$ cd /home‬‬
‫بهمحض اینکه شما ‪ userId‬تعریف میکنید زیر دایرکتوری ‪ home‬برای آن ‪ user Id‬یک دایرکتوری‬
‫درس میشود‪.‬‬
‫‪$ ls -l‬‬
‫در زمان کار ور وق به ور دایرکتوری دیگری جز خانهی خودمان رفتیم برای اینکه به خانهی‬
‫خودمان برگردیم این فرمان را میزنیم‪.‬‬
‫‪$ cd‬‬
‫وقتی فرمان زیر را میزنیم به ما میگوید که کجا وستیم و مسیر جاری که ما در آن وستیم را به‬
‫ما میدود‪.‬‬
‫‪$ pwd‬‬

‫‪Master Boot Record‬‬

‫در فصل قبل در مورد نحوهی باال آمدن سیستم و ومچنین ‪ runlevel‬وا صحب کردیم‪ .‬در اینجا‬
‫در مورد ‪ MBR‬که اومی زیادی دارد صحب میکنیم‪ .‬در ونگام باال آمدن سیستم‪MBR ،‬‬
‫کوچکترین برنامهای اس که در حافظه قرار میگیرد و تس مقدماتی را انجام میدود که اگر‬
‫ومهچیز درس باشد سکتور صفر را از ‪ active partition‬میخواند و این برنامه ‪ stage1‬را خوانده‬
‫س س ‪ stage2‬را وارد سیستم نموده و پس از آن سیستم باال میآید و بعدازآن وم بحث ‪runlevel‬‬
‫وا مطرح اس که قبالً در موردش صحب کردیم‪ .‬حال این فرمان را میزنیم و ‪ cd‬میکنیم‪:‬‬

‫‪$ cd/boot/grub/‬‬

‫‪$ ls -l‬‬

‫‪ ‬نکته‪ :‬در سیستم ما از ‪ grub‬نسخهی یک استفاده اس ‪ .‬در سیستم شما ممکن اس خروجی‬
‫متفاوت باشد‪.‬‬

‫مشاوده میکنیم که در خروجی ‪ Stage1‬دارای حجم ‪ 512‬بای اس که بسیار کوچک میباشد و‬


‫پیش از آن ‪ ۴۴۶‬بای وجود دارد و بعد ‪ stage2‬میآید که خیلی بزرگتر اس و بعد کرنل قرار می‬
‫گیرد‪ .‬بدین ترتیب تکامل را م شاوده میکنیم‪ .‬پس متوجه شدیم ما شین که رو شن می شود ‪bios‬‬
‫خوانده (فعال) می شود‪ .‬س س ‪ MBR‬را باال میآورد و بعد ‪ stage1‬و ‪ stage2‬را داریم و بعدازآن نیز‬
‫خود سیستمعامل باال میآید‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۵۲‬‬

‫ونگام روشن کردن کام یوتری که بر روی آن لینوکس و در ‪ ِ MBR‬آن ‪ grub legacy‬نصب شده با‬
‫صتتفحهی ستتیاوی روبهرو میشتتوید که چند گزینه برای انتخاب کردن دارد و اگر بر روی ومین‬
‫سی ستم ویندوز نیز ن صب شده با شد‪ ،‬ویندوز نیز یکی از گزینهوا خواود بود که با انتخاب گزینهی‬
‫موردنظر و زدن کلید ‪ enter‬کام یوتر با آن سیستمعامل باال خواود آمد‪ .‬اینکه ‪ timeout‬این صفحه‬
‫چه مقدار با شد و چند ثانیه در این صفحه منتظر بماند یا تنظیماتی ومچون ت صویر پ ش زمینه‪،‬‬
‫گزینهی پیشفرض انتخابشتتده‪ ،‬و ‪ ...‬چه باشتتد در فایل ‪ /boot/grub/menu.lst‬قابل تنظیم است ‪.‬‬
‫کافی اس که در این فایل تنظیمات خود را ذخیره کنید و خارج شوید‪.‬‬
‫توجه داشتتته باشتتید که درصتتورتیکه نستتخهی ‪ grub‬شتتما ‪ ۲‬باشتتد‪ ،‬که در اکثر توزیعوای جدید‬
‫لینوکس ومین نسخه ا س ‪ ،‬فایل تنظیمات ‪ grub‬در مسیر ‪ /etc/default/grub‬قرار دارد‪ .‬در ‪grub‬‬
‫‪ 2‬الزم اس که بعد از اعمال تغییرات دستور ‪ update-grub‬را بزنید تا تغییرات اعمال شود‪.‬‬
‫درصورتیکه بر روی سیستم شما ‪ gurb‬نصب نشده باشد‪ ،‬به کمک دستور ‪ grub-install‬میتوانید‬
‫این کار را انجام دوید‪ .‬توصیه میکنیم که قبل از انجام این کار حتماً ساختار پارتیشنوای خود را‬
‫بهخوبی بشناسید و ومچنین صفحهی ‪ man‬دستور ‪ grub-install‬را بهخوبی مطالعه کنید‪.‬‬
‫در لینوکس کر نل ‪ kernel‬کار ز یادی ان جام نمید ود و وقتی باال میآ ید وظی فهی مدیر ی روی‬
‫منابع را دارد و یک معاون اجرایی به نام ‪ init‬دارد که ومهکاره اس و شماره پروسس آنیک اس ‪.‬‬
‫‪ init‬فعالی وای الزم برای اجرای برنامهوا و سرپا بودن سی ستم را انجام میدود و زمانی که بیکار‬
‫شد‪ ،‬میخوابد و برای اجرای بقیه نرمافزاروا به فایل ‪ /etc/inittab‬مراجعه میکند‪ .‬پس یادمان باشد‬
‫که شتتتماره ‪ process‬فایل ‪ init‬عدد یک ‪ 1‬استتت و اولین برنامهای که بعد از کرنل وارد حافظه‬
‫میشتتود ومین ‪ init‬میباشتتد‪ .‬اگر کرنل ‪ init‬را پیدا نکند عمالً ستتیستتتم کار نمیکند و از شتتما‬
‫میخواود که یکی دیگر را معرفی کنید‪ .‬یک فرمان بستتتیار مهم داریم که چارت ستتتازمانی میان‬
‫پروسسوا را نشان میدود و اینکه در ابتدا چه چیزی واردشده و زیر بخشوای ورکدام چیس ‪:‬‬

‫‪$ pstree‬‬
‫سیستم را بهطور کامل نشان میدود (اگر با کاربر ‪ root‬آن‬
‫بهعالوه فرمان زیر وضعی پروسسوای‬
‫را اجرا کنید) و شبیه ‪ process manager‬ویندوز (یا ‪ )Ctrl+Alt+del‬اس ‪ .‬پس خروجی این دستور‬
‫ومان نرمافزاروای در حال اجرا داخل سیستم وستند‬

‫‪$ ps-aef | less‬‬

‫‪ init‬وقتی باال میآید برای اینکه بفهمد چه برنامهوایی را باال بیاورد و چهکاروایی را انجام دود فایل‬
‫‪ inittab‬را میخواند و اجرا میکند‪.‬‬

‫‪$ less /etc/inittab‬‬


‫‪۵۳‬‬ ‫فصل ‪ ۲‬ساختار لینوکس‬

‫این فایل خیلی خیلی مهم اس ‪ -‬در این فایل خطوایی که با‪ #‬شروع میشوند توضیحات وستند‪.‬‬
‫پس ‪ inittab‬را ‪ init‬میخواند‪.‬‬
‫سی ستم وقتی ‪ crash‬میکند‪ fsck ،‬باید خوانده شود‪ .‬از کجا این مو ضوع را متوجه می شود؟ وقتی‬
‫لینوکس باال میآ ید اولین فایلی که ‪ init‬میخواند ‪ rc.sysinit‬استتت ‪ .‬وقتی این فایل را میخواند‬
‫چک میکند که آیا فایلی به نام ‪ autofsck‬داریم یا نه؟‬

‫‪$ less /rc.sysinit /Autofsck‬‬


‫پس در یک ‪ if‬چک میکند اگر ومچنین فایلی وجود دارد به شتتتما پیغام میدود که ستتتیستتتتم‬
‫آگاوانه ‪ down‬نشده بلکه گویا مشکلی وجود داشته اس ‪ .‬کار بعدی این اس که نرمافزاری به نام‬
‫‪ fsck‬را اجرا میکند‪ .‬پس یکراه خوب برای اینکه بفهمید یک سرور در چه ساعتی و چه تاریخی‬
‫‪ up‬شده اس این خواود بود که فرمان زیر را بزنیم‪:‬‬

‫*‪$ less/.Autofsck‬‬

‫پس این فایل را باز میکند و میبیند که چه ساعتی ‪ up‬شده اس و وقتی ‪ shutdown‬کنیم این‬
‫فایل پاک میشود یعنی اگر درس ‪ shutdown‬کنیم پاک میشود و دوباره که ‪ up‬کنیم ‪ system‬آن‬
‫را دوباره میسازد‪ .‬ولی اگر درس ‪ shutdown‬نکنیم پاک نمیشود و در سیستم میماند‪ .‬پس ‪fsck‬‬
‫را صدا میزند و با ورود آن کار سنگینی انجام میدود‪ .‬کارش این خواود بود که نوع فایل سیستم‬
‫را تشخیص میدود و نرمافزار مربوط را اجرا میکند‪ .‬البته ومهی فایل سیستموا را چک نمیکند‪.‬‬

‫‪ ‬نکته‪ fsck :‬ومهی فایل سیستموا را چک نمیکند‪ ،‬بلکه ابتدا ‪ super block‬را میخواند‪ ،‬س س‬
‫جمع ‪ object‬وا را به دس می آورد و اینکه چقدر باید خالی باشد و پسازآن به سراغ‬
‫دایرکتوریوا میرود و فایلوای زیر آنوا را میخواند‪ .‬پس وقتی سیستم ‪ crash‬میکند در باال‬
‫آمدن بعدی ‪ fsck‬میآید داخل حافظه تا مشکل را حل کند‪.‬‬

‫ما میتوانیم به ‪ fsck‬بگوییم درستت کار نکند در بعضتتی مواقع ممکن استت مشتتکالتی برای ما به‬
‫وجود آورد‪ .‬در ب سیاری از زمانوا ‪ fsck‬خودش در س کار نمیکند و میتواند م شکل ایجاد کند‪.‬‬
‫مثالً میگوید فایل یک کاربر دیگر مال ‪ userid‬ا ستاد ا س و میگوید من به یک تناقض ر سیدم و‬
‫‪ prompt‬میدود‪ .‬در چنین شتترایطی مستتئول ستتیستتتم خودش باید موضتتوع را دنبال کند‪ .‬به ور‬
‫دلیلی یک وکر یا نرمافزار بد ‪ pointer‬وای فایل وا یا دایرکتوری وا را جابجا کرده و ‪prompt‬ی که‬
‫میآید ‪ file system check‬ا س و خیلی خیلی خطرناک ا س و ‪ admin‬خودش باید د ستی این‬
‫مشکل را حل کند‪.‬‬
‫ولی اگر به تناقض نر سد و تعدادی فایل پیدا کند که بی صاحب ا س ‪ fsck‬میبرد زیر دایرکتوری‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۵۴‬‬

‫‪ lost+found‬میگذارد‪ .‬زمانی که شما لینوکس را به کار میگیرید و یک پارتیشن لینوکسی درس‬


‫میکنید حتماً یک ‪ lost+found‬درست میکند و فایلوایی که صتتاحب ندارند زیر این دایرکتوری‬
‫قرار میدود و شتتتما بهعنوان ‪ admin‬باید تکلیف فایل وای ‪ lost+found‬را معلوم کنید‪ .‬در ادامه‬
‫روش انجام دادن آن را بررسی خواویم کرد‪.‬‬

‫یک سناریو عملی‬

‫فرض کنید ما یک شبکه بزرگ داریم و وزار نفر کاربر در حال انجام دادن فعالی وایشان وستند‪.‬‬
‫ناگهان برق میرود و وقتی برق میآید لینوکس باال میآید و ‪ fsck‬را صدا میکند و نگاه میکند که‬
‫مثالً تعدادی فایل بیصاحب پیدا کرده اس و در ‪ lost+found‬قرار میدود‪ .‬حال میخواویم ور‬
‫فایل را در جای خودش بگذاریم‪.‬‬
‫باید ابتدا با فرمان ‪ string‬محتویات این فایلوا را بخوانیم و ببینیم به چه کستتی و کجا ربط دارد‪.‬‬
‫فرمان ‪ string‬محتویات یک فایل را میخواند و چیزوای قابل استتتتفاده آن را بیرون میکشتتتد و‬
‫نمایش میدود‪ .‬حاال یک فایل را عمدی زیر ‪ lost+found‬میبریم و س س با طی مراحلی آن را سر‬
‫جای اولش برمیگردانیم‪ .‬بهعنوانمثال فایل ‪ date‬را به زیر ‪ lost+found‬انتقال میدویم‪.‬‬

‫‪ )1‬ابتدا شماره ‪ inode‬آن را پیدا میکنیم چون فایلی که زیر ‪ lost+found‬درس میکند‪ ،‬بهصورت‬
‫عددی اس ‪:‬‬

‫‪$ ls –l-i /bin/date‬‬

‫‪#2042244‬‬
‫توجه کنید که ‪ –i‬در آرگومانوای ‪ ls‬موجب نشتتتان داده شتتتدن ‪ inode‬فایل بر روی پارتیشتتتن‬
‫موردنظر در دیسک میشود‪.‬‬

‫‪ )۲‬یک ک ی از آن را در خانهی خودمان قرار میدویم‪:‬‬

‫‪$ cp /bin/date/ ~/#2042244‬‬

‫‪ admin‬حاال باید تشخیص دود‪ ،‬جنس این فایل چیس ؟ چون باید سر جایش بگذاریم اولین کاری‬
‫که توصیهشده استفاده از فرمان ‪ file‬اس ‪ .‬پس با فرمان ‪ file‬جنس آن را پیدا کنیم‪:‬‬

‫‪$ file ~/#2042244‬‬

‫ال تاریخ را میدود و میگذارد سر جایش در غیر‬


‫میگوید ‪ exe‬اس و اجرایش میکند و میبیند مث ً‬
‫این صورت اگر بگوید ‪ Data‬اس با فرمان ‪ string‬داخل آن را ببینید‪.‬‬
‫‪۵۵‬‬ ‫فصل ‪ ۲‬ساختار لینوکس‬

‫‪$ string \# 2042244‬‬

‫فرمان ‪string‬‬

‫فرمان ‪ string‬فرمانی اس که یک فایل باینری را میخواند و آنوایی که حدس میزند ‪ ascii‬اس‬


‫سه تا پش سر وم نشان میدود‪ .‬پس درصورتیکه فایلی در ‪ lost+found‬بود از روی ‪ string‬باید‬
‫فهمید که مربوط به کدام دایرکتوری اس ‪.‬‬

‫‪$ man string‬‬

‫یک راهحل وم این اس که وقتی سیستم و سرویسوا و ‪ package‬وا و ‪ ...‬را نصب میکنیم و خوب‬
‫که تس کردیم و تحویل دادیم یکچیز دیگر وم به صاحب سیستم تحویل میدویم‪ .‬کاری که‬
‫میکنیم این اس که این فرمان را میزنیم‪:‬‬

‫‪$ cd /; ls –li | sort -n > outputFileToPrint‬‬

‫س س از آن پرین وم میگیریم‪ .‬این فرمان کاری که میکند این اس که ومهی فایلوا را با‬
‫‪ inode‬وای آنوا ‪ sort‬شده نگه میدارد و زمانی که یکی از این فایلوا زیر ‪ lost+found‬قرار گرف‬
‫خیلی راح بهوسیله شمارهشان میتوانیم سر جایش برگردانیم‪ .‬توجه داشته باشید برای اینکه‬
‫زیردایرکتوریوا وم بهطور بازگشتی بازبینی شوند الزم اس که در آرگومانوای دستور ‪ ls‬در باال‬
‫‪ R‬را نیز اضافه کنیم‪ .‬این روش درجاوایی جواب میدود که فایلوایشان ‪ static‬اس و معمو ًال‬
‫کموزیاد نمیشود‪ .‬ولی اگر فایلوا مرتباً کموزیاد شود و تغییر کند و پویا باشد‪ ،‬این روش مناسب‬
‫نیس ‪ .‬مثالً در یک دانشگاه این روش کارایی چندانی ندارد‪ ،‬فقط میتوان فایلوای اساسی را سر‬
‫جای خودشان برگرداند‪.‬‬

‫فرمان ()‪sar system activity report‬‬


‫فرمان دیگری که داریم به نام ‪ sar‬است که اطالعاتی راجع به اینکه چند درصتتد حافظه پرشتتده و‬
‫چه تعداد فایل ‪ open‬کردیم را به ما نشتتان میدود‪ .‬در صتتفحهی راونمای ‪ sar‬میتوانیم اطالعات‬
‫زیادی را به دس ت آوریم‪ .‬فرمان دیگری وم وجود دارد به نام ‪ lsof‬که فایلوایی که باز اس ت را به‬
‫ما نشان میدود‪.‬‬

‫‪$ sar -r 2 10‬‬

‫‪$ lsof | less‬‬

‫فرمان ‪ lsof‬کاربردوای بسیار زیادی دارد‪ ،‬که مختصری از آنوا در جدول زیر آمده اس ‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۵۶‬‬

‫دستور‬ ‫توضیح‬
‫‪lsof‬نام فایل‬ ‫پروسسهایی که فایل مورد نظر را باز کردهاند‬
‫پروسسهایی که دایرکتوری یا ‪mount point‬‬
‫‪losf +D‬آدرس دایرکتوری موردنظر‬
‫موردنظر را استفاده میکنند (مفید برای امنیت و‬
‫‪)umount‬‬
‫‪lsof –u‬نام کاربر‬ ‫اطالعات و ‪ PID‬مربوط به فایلهای باز توسط‬
‫کاربر موردنظر‬

‫‪lsof -u ^lakshmanan‬‬ ‫اطالعات و ‪ PID‬مربوط به فایلهای باز توسط همه‬


‫جز یک کاربر خاص‬

‫‪lsof -c ssh‬‬ ‫اطالعات مربوط به فایلهای بازی که در نامشان‬


‫عبارت ‪ ssh‬را دارند‬

‫`‪kill -9 `lsof -t -u lakshmanan‬‬ ‫تمام فایلهایی را که یک کاربر خاص بازکرده است‪،‬‬


‫‪ kill‬کنید‬

‫‪lsof -i TCP:1-1024‬‬ ‫اتصاالت شبکه بهصورت ‪ TCP‬در بازهی پورتهای‬


‫‪ 1‬تا ‪1024‬‬

‫‪lsof -i@172.16.12.5:22‬‬ ‫تمام اتصاالت موجود به یک ‪ host‬بر روی یک‬


‫پورت خاص‬

‫‪lsof -i -sTCP:ESTABLISHED‬‬ ‫اطالعات تمام ‪ connection‬های ‪ TCP‬که‬


‫‪ ESTABLISHED‬هستند‬

‫‪lsof -u daniel -i @1.1.1.1‬‬ ‫کارهایی که کاربر مورد نظر در سرور با ‪ IP‬داده‬


‫شده انجام میدهد‬
‫‪lsof +L1‬‬ ‫ابزاری برای یافتن هکرها‬

‫بررسی دایرکتوری ‪lib‬‬

‫این دایرکتوری حاوی فایلوای کتابخانه برای کلیه برنامهوای ذخیره شده در دایرکتوری‬
‫وای ‪/sbin/‬و ‪/bin/‬و از جمله ماژولوای قابل بارگذاری درایو که مورد نیاز راه اندازی لینوکس اس ‪،‬‬
‫میباشد‪.‬‬
‫‪$ cd /lib‬‬
‫‪$ ls –l‬‬
‫تعداد زیادی فایل میبینیم که در اکثر آنوا ‪ so‬داریم که ‪ so‬مخفّف ‪ shared object‬اس که به‬
‫اشتراک گذاشته میشود و در اختیار ومه برنامهوا قرار میگیرد‪ .‬که مترادف آن در ویندوز ‪ dll‬اس ‪.‬‬
‫سؤالی که ممکن اس مطرح شود این اس که از کجا بفهمیم که مثالً فرمان ‪ date‬چه ‪library‬‬
‫وایی را استفاده میکند؟ این فرمان را میزنیم‪:‬‬
‫‪۵۷‬‬ ‫فصل ‪ ۲‬ساختار لینوکس‬

‫‪$ ldd /bin/date‬‬


‫)‪linux-gate.so.1 => (0x00ea8000‬‬
‫)‪librt.so.1 => /lib/librt.so.1 (0x00c78000‬‬
‫)‪libc.so.6 => /lib/libc.so.6 (0x008dd000‬‬
‫)‪libpthread.so.0 => /lib/libpthread.so.0 (0x00a54000‬‬
‫)‪/lib/ld-linux.so.2 (0x008ba000‬‬
‫به شما میگوید که چه ‪ lib‬وایی را استفاده میکند‪ .‬چیزی که مهم اس در لینوکس ورژن‬
‫کتابخانهوا اس که ومان شمارهای که در جلوی ‪so‬وا نوشتهشده اس ‪ ،‬میباشد‪.‬‬

‫پیکربندی مسیرهای مربوط به فایلهای کتابخانهای‬


‫ورگاه برنامهای نیاز به یک کتابخانهی اشتراکی داشته باشد در سیستم به دنبال فایل ‪ so‬آن خواود‬
‫گ ش ‪ .‬متغیروا و تنظیماتی وجود دارند که م شخصکنندهی این م سیروا و ستند‪ .‬متغیر محیطی‬
‫‪ LD_LIBRARY_PATH‬ن شاندوندهی دایرکتوریوایی ا س که فایلوای کتابخانهای میتوانند‬
‫قرار دا شته با شند‪ .‬در صورتیکه این متغیر در سی ستم شما تنظیم شده ا س در خروجی د ستور‬
‫‪ echo $LD_LIBRARY_PATH‬مقدار آن را نمایش میدود‪ .‬درصتتتورتی که این متغیر محیطی‬
‫تنظیمنشده اس به کمک دستور ‪ export‬میتوانید آن را مقداردوی کنید‪.‬‬
‫اما تنظیم م سیر کتابخانهوا با د ستور باال موقتی ا س و بعد از خاموش و رو شن شدن سی ستم‬
‫پایدار نمیماند‪ .‬روش دائمی استفاده از ابزار ‪ ldconfig‬اس ‪ .‬فایل ‪ /etc/ld.so.conf‬مسیروایی را که‬
‫مربوط به فایلوای کتابخانهای و ستند را لی س کرده ا س که بعد از اجرای د ستور ‪ ldconfig‬در‬
‫خط فرمان توسط شما‪ ،‬به آن مسیروا مراجعه میکند و اطالعات اسامی کتابخانهوا را در یک فایل‬
‫باینری‪ 1‬بهروز میکند تا درصتتورتیکه برنامهای در ونگام اجرا نیاز به آن کتابخانه داشتت بتواند از‬
‫آن استتتفاده کند‪ .‬تنظیمات اعمالشتتده بهواستتطهی پیکربندی ‪ ldconfig‬دائمی وستتتند‪ .‬شتتما نیز‬
‫میتوانید ومانند فایل وای دیگر موجود در مستتتیر ‪ /etc/ld.so.conf.d/‬تنظیمات خود را زیر این‬
‫دایرکتوری قرار دوید و بعد فرمان ‪ ldconfig‬را اجرا نمایید‪ .‬این دستور بهخصوص برای حل مشکل‬
‫تداخل نسخهی کتابخانهوای کاربردی در یک سیستم بسیار مفید اس ‪.‬‬

‫مدیریت فضای دیسک با ‪LVM‬‬

‫جایگزینی برای پارتیشنبندی ‪ logical volume management‬یا ومان ‪ LVM‬اس ‪ .‬جه داشتن‬
‫‪ LVM‬یک یا چند پارتی شن م شخص را میکنیم و برای ‪ MBR‬آنوا کد ‪ 0x8e‬را در نظر میگیریم‬
‫(یا مقدار معادل در سی ستموای جدید مبتنی بر ‪ .)GPT‬آنگاه تو سط مجموعهای از ابزاروا ومانند‬
‫‪ ،lvcreate ،vgcreate ،pvcreate‬و ‪ lvscan‬میتوانیم آن وا را مدیر ی کنیم‪ .‬در صتتتورتی که در‬
‫سی ستم شما ‪ LVM‬وجود دا شته با شد‪ ،‬در م سیر ‪ /dev/mapper‬میتوانید در مورد آنوا مطلع‬
‫‪1‬‬ ‫‪binary‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۵۸‬‬

‫شوید‪ ،‬مثالً در سیستم ما ‪ /dev/mapper/myvol-home‬وجود دارد‪.‬‬


‫سؤال مهمی که ممکن اس پرسیده شود این اس که کاربرد ‪ LVM‬چیس و چرا از آن استفاده‬
‫میکنیم؟ درواقع مهمترین فایدهی ‪ LVM‬این اس که امکان ‪ resize‬کردن ‪ logical volume‬وایی‬
‫را که تعریف کردهایم بهراحتی به ما میدود؛ بدون اینکه نگران موقعی یا اندازهی پارتیشتتتنوای‬
‫کناری با شیم‪ .‬مثل این ا س که این ‪ logcical volume‬وا مثل فایل در یک فایل سی ستم معمولی‬
‫و ستند‪ .‬پس در شرایطی که در مورد اندازهی نهایی پارتی شنوایی که بر روی دی سک نیاز داریم‪،‬‬
‫اطالع ندا شته با شیم‪ ،‬یکی از انتخابوای منا سب ‪ LVM‬ا س که میتوانیم یک حجم اولیهی به‬
‫ورکدام از پارتی شنوا اخت صاص دویم و بعد در صورت نیاز به تغییر اندازهی ورکدام‪ ،‬امکان تغییر‬
‫دادن آنوا بهراحتی وجود خواود دا ش ‪ .‬م شکلی که ا ستفاده از ‪ LVM‬دارد‪ ،‬پیچیدگی آن ا س ‪.‬‬
‫در صورتیکه از ‪ LVM‬ا ستفاده میکنید حتماً ا ستراتژی و روش ‪ disaster recovery‬ب سیار جدی و‬
‫دقیقی دا شته با شید‪ ،‬چون در صورتیکه یکی از د ستگاهوای ذخیره سازی شما دچار م شکل شود‪،‬‬
‫بازیابی اطالعات درون ‪ LVM‬پیچیدگیوای خاص خود را خواود داش ‪ .‬یکی دیگر از استفادهوای‬
‫‪ LVM‬در حالتی اس که بخواوید یک ‪ file system‬خیلی بزرگ داشته باشید؛ میتوانید با ‪LVM‬‬
‫چندین وارددیسک را به وم متصل کنید و بهصورت یک ‪ logical volume‬مدیری کنید‪.‬‬

‫دایرکتوری ‪/var‬‬

‫این دایرکتوری شتتامل فایلوای موق از انواع گوناگون استت ؛ فایلوای ‪ log‬ستتیستتتم‪ ،‬فایلوای‬
‫‪ spool‬پرین ‪ ،‬فایلوای ‪ mail‬و موارد مشتتتابه در این دایرکتوری قرار میگیرند‪ .‬پس محتوای این‬
‫دایرکتوری ومواره تغییر میکند‪.‬‬
‫ومچنان که در این کتاب بیان شتتده استت ‪ kernel ring buffer ،‬در این دایرکتوری و در مستتیر‬
‫‪ /var/log/dmesg‬قرار دارد‪.‬‬
‫از دیگر فایلوای مهم در این دایرکتوری ‪ /var/log/messages‬استتت که اطالعات ‪ log‬نرمافزاروای‬
‫گو ناگون را در خود دارد‪ .‬ومچنین فا یل ‪ /var/log/syslog‬الگ وای ستتتیستتتتمی را در بر دارد‪.‬‬
‫ومچنین برخی از توزیع وای لینوکس اطالعات مربوط به زمان ‪ boot‬را نیز در یک فایل جداگانه‬
‫در م سیر ‪ /var/log/boot‬نگه میدارند که تو سط ‪ bootlogd‬انجام می شود‪ .‬ومچنان که ا شاره شد‪،‬‬
‫صتتف پرنی در مستتیر ‪ /var/log/cpus‬قرار میگیرد که درواقع فایلوایی وستتتند که برای پرین‬
‫کردن ارسالشدهاند که در سیستموایی که از ‪ cpus‬استفاده میکنند‪ ،‬وجود دارد‪.‬‬
‫فایل ب سیار مهم دیگری که در زیر این دایرکتوری قرار دارد ‪ wtmp‬ا س که تمام ‪ login‬و ‪logout‬‬
‫وای سیستم را در خود نگه میدارد‪ .‬این فایل در مسیر ‪ /var/log/wtmp‬قرار دارد‪ .‬برخی دستورات‬
‫مثل ‪ last‬و ‪ lastb‬از اطالعاتی که در این فایل ثب شده اس ‪ ،‬برای گزارش دوی استفاده میکنند‪.‬‬
‫فصل ‪ 3‬مدیریت بستههای نرمافزاری‬
‫در این فصل با سیستم مدیری بستهوا در لینوکس آشنا خواوید شد‪ .‬در ابتدا در مورد ‪ rpm‬که در‬
‫‪ Oracle Enterprise Linux ،RHEL ،CentOS‬و ‪ CERN Linux‬استفادهشده‪ ،‬سخن به میان آمده‬
‫و س س به ‪ yum‬جه نصب بستهوا اشارهشده اس ‪ .‬در ادامه در مورد نکات امنیتی مرتبط با نصب‬
‫بستهوا نیز اشارهشده اس ‪.‬‬
‫در ادامه در مورد ‪ apt-get‬و ‪ dpkg‬که در توزیعوای ‪ Mint ،Ubuntu ،Debian‬و ومچنین‬
‫‪ Xamin‬استفادهشده اس ‪ ،‬بحث شده اس ‪.‬‬

‫مدیریت بستهها با ‪rpm‬‬

‫برای شروع فرض کنید یک نرمافزار به نام ‪ sin‬دارید و میخواویم به یک فرد دیگر وم این نرمافزار‬
‫را بدویم‪ .‬در فصل قبل با توجه به معرفی ‪ shared object‬وا فهمیدیم که ک ی نمیگیریم‪ .‬آیا با‬
‫نرمافزار ‪ tar‬بک آپ بگیریم و آن را به فرد بدویم روی سیستم آن فرد مشکلی به وجود نمیآید؟‬
‫ممکن اس آن فرد وم یک نرمافزار ‪ sin‬داشته باشند و با وم ‪ conflict‬کند و ممکن اس با‬
‫سخ افزار سیستم سازگار نباشد‪ .‬به عبارتی پس اگر خواستید حتّی یک فایل را وم ‪ backup‬بگیرید‬
‫و انتقال دوید بهتر اس از جنس ‪ package‬باشد‪ .‬در دنیا چندین ‪ package manager‬وجود دارد از‬
‫جمله آنوا ‪ rpm‬در ‪ CentOS‬و ‪ dpkg‬در ‪ debian‬وستند‪.‬‬

‫‪package‬‬ ‫‪ ‬تمرین‪ :‬با جستجوی عبارت ‪ linux package manager‬در ‪ Wikipedia‬در مورد‬
‫‪ manager‬وای مختلف مطالعه کنید‪.‬‬

‫دو روش برای نصب بستهوای نرمافزاری وجود دارد‪:‬‬

‫‪ )1‬یک راه قرار دادن بسته نرمافزاری بر روی سیستم و ترجمه برنامهوا و س س اجرای‬
‫ال محسوس اس ‪.‬‬‫اسکری وای متعدد برای نصب که معموالً نیاز به تخصص باال کام ً‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۶۰‬‬

‫‪ )۲‬راه دیگر انتخاب یک نرمافزار اس که بتواند بر روی بسته نرمافزاری مدیری نموده و به‬
‫تخصص کمتری برای نصب و ارتقا نیاز داشته باشد‪ .‬در این بخش بر روی این روش تمرکز‬
‫خواویم کرد‪.‬‬

‫روش اوّل در مواقعی که ‪ source‬و یا ‪ object‬بسته نرمافزاری در اختیار بوده و یا محصول‬


‫مستقل از سخ افزار نوشته شده اس به کار گرفته میشود و البته تعداد این گونه بستهوای‬
‫نرمافزاری کم نیس و معموالً بایستی ابزاروای توسعه مانند مترجموا نیز بر روی سیستم نصب‬
‫باشد‪ .‬این روش مثل این اس که شما مواد اوّلیه را از فروشگاه بگیرید و در منزل تهیه کنید‪ .‬برخی‬
‫از این ابزاروا عبارتاند از ‪ ،g++ ،gcc ،make ،gnu make‬و برخی کتابخانهوا که بستهی نرمافزاری‬
‫ممکن اس به آن وابسته باشد مثل ‪ libclang‬که پرکاربرد اس ‪.‬‬
‫روش دوّم مثل این ا س که بروید ر ستوران و غذا سفارش دوید‪ .‬مزایایی که ‪ rpm‬دارد این ا س‬
‫که میشتتود با یک خط فرمان ‪ 1۰‬نوع ‪ package‬را باوم نصتتب کرد‪ .‬و ‪ database‬ی دارد که باعث‬
‫میشود شما به تناقض نخورید و بستهوای مختلف باوم تداخل پیدا نکنند‪.‬‬
‫فرم کلّی نحوهی نامگذاری محصول در لینوکس بسیار متفاوت با مایکروساف اس ‪ .‬در لینوکس‬
‫نام گذاری ‪ package‬وا قانونمندی دارد که مطابق زیر اس ‪:‬‬

‫‪package name-version-buid. architecture.ending‬‬

‫)‪example: farsilinux-1.0.5-2.i686.rpm (or.deb‬‬

‫در بعضی از ‪ package‬وا در قسم ‪ architecture‬داریم ‪ noarch‬که یعنی به ‪ architect‬خا صّی نیاز‬
‫ندارد‪ .‬برای نصب این ‪ package‬از طریق ‪ rpm‬به این صورت عمل میکنیم‪:‬‬

‫‪>> rpm –i farsilinux-1.0.5-2.i686.rpm‬‬

‫پس ما اآلن متوجه شدیم که مثالً وقتی که میخواویم از اینترن ‪ package‬دانلود کنیم و نصب‬
‫کنیم ‪ ۲‬تا راه حل داریم‪ .‬یک راه این اس که ‪ rpm‬آن را بیاوریم و با یک فرمان ساده آن را نصب‬
‫کنیم‪ .‬ولی این زیاد مد روز دنیا نیس چون نرمافزاروایی که در دنیا مینویسند با ‪ tar‬و ‪ zip‬شده‬
‫بیرون میدوند‪.‬‬
‫البته راه دیگر استتتفاده از دستتتور ‪ yum‬استت که بهطور مستتتقیم به ‪ repository‬وای موجود در‬
‫اینترن متصل میشود و بستهوا را دانلود و نصب میکند‪ .‬مثال‪:‬‬

‫‪>> yum install cmake‬‬

‫با اجرای فرمان باال‪ ،‬بستهی ‪ cmake‬و بستهوای پیشنیاز آن از مخزنوای اینترنتی یا محلی که‬
‫‪۶1‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫برای ‪ yum‬در مسیر ‪ /etc/yum.repos.d‬تنظیم شده اس ‪ ،‬دانلود شده و بر روی سیستم نصب خواود‬
‫شود‪.‬‬

‫نکته‪ :‬یادتان باشد که ممکن اس به خاطر مالحظات امنیتی کام یوتروایی که شما مسئول آن‬ ‫‪‬‬
‫وستید به اینترن متصل نباشد‪ .‬بااینحال میتوانید مخزنوایی را برای بستهوای مختلف در‬
‫کام یوتروای محلی خاصی که به اینترن متصل وستند دانلود کنید و س س کام یوتروای‬
‫دیگری که به اینترن متصل نیستند‪ ،‬از آنوا برای نصب بستهوا با استفاده از دستور ‪yum‬‬
‫استفاده کنند‪ .‬برای این کار الزم اس که آدرس مخزن محلی را برای آن سیستم در مسیر‬
‫‪ /etc/yum.repos.d‬تنظیم کنید‪.‬‬

‫ابزار ‪yumdownloader‬‬

‫‪ yumdownloader‬ابزاری جه دانلود کردن بستهوای ‪ RPM‬برای مخزنوای ‪ yum‬اس ‪ .‬این ابزار‬


‫از پیکربندیوای صورت گرفته برای ‪ yum‬بهخصوص فایل ‪ /etc/yum.conf‬استفاده میکند‪.‬‬

‫تمرین عملی‪ :‬درصورتیکه سیستم شما مبتنی بر ‪ RHEL‬اس ‪ ،‬دستور ‪ man yumdownloader‬را‬
‫اجرا کنید و صفحهی راونمای آن را مطالعه نمایید‪.‬‬

‫فایل پیکربندی ‪/etc/yum.conf‬‬

‫این فایلی پیکربندی ‪ yum‬اس ‪ .‬دو بخش در این فایل وجود دارد‪ main :‬و ‪ .repository‬قسم‬
‫‪ Main‬تمامی پیکربندیوای سراسری را مشخص میکند‪ .‬قسم ‪ Main‬تنها باید در یک جا‬
‫تعریفشده باشد‪ .‬قسم ‪ Repository‬پیکربندی مربوط به ور سرور‪/‬مخزن را تعریف میکند‪ .‬امکان‬
‫داشتن یک یا چند قسم ‪ repository‬وجود دارد‪.‬‬
‫در قسم ‪ main‬امکان مشخص کردن دایرکتوری ‪ logfile ،cache‬و موارد دیگر وجود دارد‪.‬‬
‫توصیه میکنم که حتماً صفحهی راونمای ‪ man yum.conf‬را مطالعه نمایید‪.‬‬

‫تواناییهای ‪ rpm‬مختص ‪root‬‬

‫‪ Userid‬ادمین (‪ )root‬با فرمان ‪ rpm‬خیلی کاروا میتواند انجام دود‪:‬‬

‫مشاوده لیس محتویات بسته نرمافزاری‬ ‫‪‬‬


‫مشاوده لیس ومه محتویات بستهوای نرمافزاری‬ ‫‪‬‬
‫مشاوده شرح بسته نرمافزاری‬ ‫‪‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۶۲‬‬

‫بررسی و بازبینی بسته نرمافزاری (مثالً کمبود)‬ ‫‪‬‬


‫بازبینی فایل در بسته نرمافزاری‬ ‫‪‬‬

‫عناصر تشکیلدهندهی یک ‪:rpm‬‬

‫نام و نسخه محصول‬ ‫‪.1‬‬


‫تاریخ تولید و نام کام یوتر مولد‬ ‫‪.۲‬‬
‫شرح محصول‬ ‫‪.۳‬‬
‫اندازه و (‪ checksum )md5‬محتویات ور فایل‬ ‫‪.۴‬‬
‫مشخصه شخص و یا سازمان تولید کننده و ‪...‬‬ ‫‪.۵‬‬

‫پس ما متوجه شدیم که اگر یک فایل ‪ 1k‬داشته باشیم کلّی اطالعات ابتدا و انتهای آن میآید‪ .‬حاال‬
‫این فرمان را با وم میزنیم‪:‬‬

‫‪>> cd /var/lib/rpm‬‬

‫‪>> ls –l | less‬‬

‫این دایرکتوری بانک اطالعاتی ‪ rpm‬قرار دارد‪.‬‬ ‫تح‬


‫در زیر این دایرکتوری ما اطالعات و مشخصات ‪ package‬وا و اینکه ‪ install‬شدهاند یا نه را داریم و‬
‫معموالً ‪ admin‬ویچ وق زیر این دایرکتوری را دستتت کاری نمیکند‪ .‬در زیر این دایرکتوری ما‬
‫‪ conflict‬وا را وم داریم که مثالً وقتی یک نرمافزار داریم و میخواویم یک نرم افزار دیگر با ومان‬
‫نام وم بگذاریم ‪ conflict‬میدود و یکی از آنوا را اینجا میآورد چون برنامهنویس را گیج میکند‪.‬‬
‫پس اینطور جمعبندی کنیم که ‪ rpm‬زیر دایرکتوری ‪ var‬تعداد زیادی فایل راجع به فا یل وایش‬
‫دارد و میتوانیم حجم‪ ،‬نام و تعداد فایل وایی که زیر این دایرکتوری داریم را ببینیم‪ .‬پس یادتان‬
‫با شد که اگر این دایرکتوری را د س کاری کنید و یک فایل را مخدوش کنید یک ‪ package‬جدید‬
‫نمیتوانید ن صب کنید و میگوید من نمیدانم اگر این ‪ package‬جدید را ن صب کنم تناقض دا ش‬
‫یا خیر‪.‬‬
‫پس ما متوجه شتتتدیم که ‪ rpm‬از ‪ database‬استتتتفاده میکند‪ .‬پس زمانی که مثالً میگوید ‪sin‬‬
‫‪ already installed‬از کجا میفهمد؟ چون در ‪ database‬وجود دارد‪ .‬با فرمان خیلی ستتتاده ‪rpm‬‬
‫میتوانیم این کاروا را انجام دویم‪:‬‬

‫نصب بستهوا‬ ‫‪‬‬


‫استعالم فایل متعلق به بسته‬ ‫‪‬‬
‫‪۶۳‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫حذف بستهوا‬ ‫‪‬‬


‫تولید بسته فایل از کد منبع ‪source‬‬ ‫‪‬‬
‫بروز درآوردن بستهوا‬ ‫‪‬‬
‫کنترل صح بسته‬ ‫‪‬‬
‫پرسوجو با استفاده از بانک اطالعاتی ‪rpm‬‬ ‫‪‬‬
‫کنترل صح فایل و فعالی وای دیگر‬ ‫‪‬‬

‫ال ‪game‬‬
‫بهعنوانمثال ناگهان یک فایل از بین میرود و با یک فرمان ساده میپرسیم که این فایل مث ً‬
‫و‬ ‫متعلق به کدام ‪ package‬میباشد‪ rpm .‬در زمان نصب و ارتقاء و حذف بسته نرمافزاری فعالی‬
‫کنترلوای زیادی انجام میدود بهطور مثال‪:‬‬

‫‪ )1‬آیا فضای کافی بر روی دیسک سخ برای نصب وجود دارد؟‬

‫‪ )۲‬آیا نرمافزاروای موردنیاز وجود دارند؟‬

‫‪ )۳‬آیا نصب نرمافزار باعث بازنویسی فایلوای موجود خواود شد؟‬

‫فرمانی که برای نصب بسته نرمافزاری به کار میبریم به این صورت اس ‪:‬‬

‫… ‪>> rpm -i package-filename‬‬

‫‪>> rpm -i zip-2.3-18.rpm‬‬

‫‪ :i‬مخفّف ‪install‬‬

‫اگر صفحهی ‪ man‬فرمان ‪ rpm‬را بخوانید میبینید که چه آپشنوایی دارد‪.‬‬

‫‪>> man rpm‬‬

‫بهعنوانمثال برخی از ‪option‬وای آن به شرح ذیل میباشد‪:‬‬

‫‪ --force‬را زمانی به کار میبریم که نتوانیم یک ‪ package‬را نصب کنیم و بخواویم حتماً نصب شود‪.‬‬
‫ولی ومیشه نباید ‪ --force‬را به کار ببریم‪ --force .‬یعنی مجبور وستی که بعضی از خطاوا را نادیده‬
‫بگیری که ممکن اس مشکل ساز شود‪.‬‬

‫*‪>> rpm -ivh sam‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۶۴‬‬

‫‪v :verbose‬‬ ‫‪h :hash‬‬ ‫‪ -‬نمایش میزان درصد تکمیل نصب‪h.‬‬

‫حال میخواویم یکی از ‪package‬وا را با وم ببینیم‪:‬‬

‫‪>> cd /all-rpms/‬‬

‫فرمان ‪ less‬تا امروز فایل را برای ما صفحه به صفحه میخواند ولی ‪ less‬میتواند ‪ package‬وا را وم‬
‫بخواند و اطالعاتش را برای ما نمایش دود‪.‬‬

‫*‪>> less kernel-2.‬‬

‫وقتی فرمان باال را بزنیم اطالعات کامل این ‪ package‬را میبینیم و ومچنین اسم فایلوایی که بعد‬
‫از نصب این ‪ package‬روی ور دایرکتوری میسازد را نمایش میدود‪ .‬با این اطالعات میتوانیم‬
‫بفهمیم که بعد از نصب یک ‪ package‬کجا میرود‪.‬‬

‫نصب نرمافزار از طریق شبکه وم امکانپذیر اس ‪:‬‬


‫* … ‪>> rpm -ivh ftp://‬‬
‫از طریق ‪ ftp‬و بدون قرار دادن بسته نرمافزاری در کام یوتر خودمان‪ ،‬مانند مثال باال‪ ،‬میتوان نصب‬
‫کرد‪ .‬اگر بخواویم یک ‪ package‬را از روی سیستم حذف کنیم وم میتوانیم از فرمان ‪ rpm‬استفاده‬
‫کنیم‪.‬‬
‫‪>> rpm -e package –name‬‬

‫‪ :e‬مخفّف ‪erase‬‬
‫‪>> rpm -e talk‬‬

‫با این فرمان پاک کردن میبینیم که بستهی نرمافزاری موردنظر پاک میشود ولی جزوه آنکه ‪posix‬‬
‫اس ‪ ،‬پاک نشد حاال دوباره نصب میکنیم‪:‬‬
‫‪>>man talk‬‬
‫*‪>> rpm-ivh talk‬‬

‫آپشن دیگری که در حذف یک ‪ package‬داریم ‪ –nodeps‬اس ‪ .‬ور ‪ package‬یک سری‬


‫وابستگیوایی دارد که اگر آنوا ‪ install‬نباشند کار نمیکند و ‪ nodeps‬یعنی مجبور وستی که‬
‫وابستگیوا را کنترل نکنی‪ .‬و از داخل ‪ database‬میفهمد که چه چیزی به چه بستهای وابسته اس ‪.‬‬
‫زمانی که به این صورت یک ‪ package‬را از سیستم حذف کنید بهطور کامل حذف میشود‪.‬‬

‫نکته‪ :‬به شرطی یک ‪ package‬را ‪ install‬یا ‪ upgrade‬کنید که دلیل موجهی برای کارتان داشته‬ ‫‪‬‬
‫باشید‪.‬‬
‫‪۶۵‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫دالیل ‪ upgrade‬کردن‪ :‬شما به شرطی ‪ update‬کنید که نیاز داشته باشید‪ .‬دالیلی مثل‪:‬‬

‫برطرف نمودن اشکاالت‬ ‫‪‬‬


‫اضافه نمودن امکانات بیشتر‬ ‫‪‬‬
‫حذف نمودن بعضی از امکانات که در عمل الزم نبوده و یا مشکلزا میباشد‬ ‫‪‬‬

‫‪>> rpm -uvh package-name‬‬

‫‪ upgrade :u‬که این ‪ option‬با ‪ u‬بزرگ نوشته میشود‪ upgrade .‬وم مثل ‪ install‬اس ‪ .‬اگر در زمان‬
‫‪ upgrade‬آپشن ‪ –nodeps‬را بزنید یعنی اینکه ویچ وابستگی را چک نکند‪ .‬به وسیله ومین فرمان‬
‫‪ rpm‬میتوان اطالعات مختلفی راجع به بستهوای نرمافزاری نصب شده بدس آورد‪ .‬که از جمله‬
‫میتوان به آپشن ‪ –q‬که مخفف ‪ query‬به معنای پرسوجو میباشد اشاره کرد‪ option –f.‬در این‬
‫مثال اختیاری اس ‪:‬‬

‫‪>> rpm –qf package-name‬‬

‫نکته‪ :‬اگر یک فایلی را اشتباواً پاک کردیم بهوسیله فرمان ‪ rpm‬با آپشن ‪ –q‬و ‪ f‬میتوانیم‬ ‫‪‬‬
‫بفهمیم که متعلق به چه ‪package‬ای اس چون در ‪ database‬اطالعات را نگه میدارد‪.‬‬

‫‪>> rpm -q talk‬‬

‫اگر فایل ‪ passwd‬را اشتباو ًا پاک کرده باشیم با این فرمان آن را پیدا کرده و ‪ package‬آن را دوباره‬
‫نصب میکنیم‪.‬‬

‫‪>> rpm –qf /etc/passwd‬‬

‫‪q :query‬‬ ‫‪f :file‬‬

‫‪>> rpm -qf /bin/cat‬‬

‫نکته جالب اینکه در صورتی که استفاده از ‪ rpm‬را فراموش کرده باشید‪ ،‬از دستور ‪ cpio‬برای‬ ‫‪‬‬
‫نصب میتوانید استفاده کنید‪.‬‬

‫‪>> man rpm2cpio‬‬

‫‪>> rpm2cpio careutils-5 +TAB > file_name‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۶۶‬‬

‫توجه کنید که ‪ +TAB‬به معنای این اس که کلید ‪ tab‬را فشار دوید‪.‬‬


‫‪>> cpio -itv < file_name‬‬

‫برای ‪ print‬گرفتن فرمان ‪( pr‬مخفف ‪ )printer‬را به کار میبریم‪:‬‬


‫‪>> man pr‬‬
‫‪>> pr file_name‬‬

‫نمایش مشخصات بسته نرمافزاری‪ :‬مشخصه و توضیحات مختصری از بسته نرمافزاری که‬ ‫‪‬‬
‫با فرمان ‪ rpm‬نصب میگردند‪ ،‬نمایش داده میشود‪.‬‬

‫‪>> rpm-qi talk‬‬

‫نکته‪ :‬اگر بخواویم تعداد کل ‪package‬وایی را که داریم بدس آوریم این فرمان را میزنیم‪:‬‬ ‫‪‬‬

‫‪>> rpm -qa |wc‬‬


‫‪q :query‬‬ ‫‪a :all‬‬ ‫‪w :word count‬‬

‫‪ wc‬تعداد خطوا‪ ،‬تعداد ‪word‬وا و تعداد بای وای یک فایل را به ما میدود‪.‬‬

‫اسامی فایلوای نصب شده در ور ‪ package‬را با فرمان زیر میتوانیم مشاوده کنیم (آرگومان ‪ l‬به‬
‫معنای ‪ list‬کردن اس )‪:‬‬

‫‪>> rpm –ql file-name‬‬

‫فرمان روبهرو فایلوای ‪ package‬را میدود‪.‬‬

‫‪>> rpm -ql talk‬‬

‫فایلوای پکیج ‪:kernel‬‬

‫‪>> rpm –ql kernel | less‬‬

‫حاال اگر بخواویم ببینیم چند تا فایل دارد (آرگومان ‪ l‬در مقابل ‪ wc‬به جه شمارش تعداد خطوط‬
‫اس )‪:‬‬

‫‪>> rpm –ql kernel | wc -l‬‬

‫‪ package‬دیگری به نام ‪ portmap‬وجود دارد‪ .‬این بسته شامل تعدادی فایل میباشد‪ .‬شما میتوانید‬
‫اطالعات راجع به ور ‪ package‬را زیر این دایرکتوری پیدا کنید و بخوانید و اطالعات زیادی راجع به‬
‫‪۶۷‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫ور ‪ package‬بدس آورید‪.‬‬

‫‪>> man portmap‬‬

‫‪>> rpm -ql portmap‬‬

‫اکثر اینها فایل ‪ readme‬دارند با این فرمان میبینید که چقدر ‪ readme‬داریم‪.‬‬

‫‪>> cd /usr/share/doc‬‬

‫‪>> find.-name readme | less‬‬

‫و اطالعات زیادی مثالً برای ‪debug‬‬ ‫پس یادتان باشد که دایرکتوری ‪ /usr/share/doc‬خیلی مهم اس‬
‫کردن آن دارد‪.‬‬

‫فرمانهای زیر برای دیدن ‪script‬های بسته نرمافزاری است‪:‬‬

‫‪>> rpm -qp -- scripts p-file-name‬‬

‫‪>> cd /all-rpms/‬‬

‫*‪>> rpm -qp -- scripts samba-3‬‬

‫برای ‪ install‬کردن یک ‪ package‬ما یک ‪ preinstallation‬و یک ‪ post installation‬داریم‪.‬‬

‫به عبارتی وقتی یک پکیج را نصب میکنید ‪ ۲‬تا ‪ shell script‬میتواند داشته باشد و اگر بخواویم‬
‫یک ‪ package‬را ‪ remove‬کنیم وم یک ‪ preremove‬و یک ‪ postremove‬داریم‪ .‬پس یک ‪package‬‬
‫حداکثر ‪ ۴‬تا اسکری دارد‪ .‬و البته حداقل میتواند ویچ اسکری تی نداشته باشد‪.‬‬

‫فرمان زیر نسخه (‪ )version‬یک ‪ package‬را به ما میدود‪.‬‬

‫‪>> rpm -q sendmail‬‬

‫سؤال‪ :‬کاربرد ‪ script‬وا در یک بسته (‪ )package‬نرمافزاری چیس ؟‬ ‫‪‬‬


‫ال ‪ user id‬داریم یا خیر‪ ،‬نسخه قبلی جدیدتر اس یا خیر‪ ،‬و‬
‫پاسخ‪ :‬شرایط را چک میکند‪ .‬مث ً‬
‫مواردی از این دس را بررسی میکند‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۶۸‬‬

‫بازبینی بسته نرمافزاری‬

‫‪>> rpm –v package -name‬‬

‫‪ option –v‬جه بررسی سالم بودن بستهی نرمافزاری اس ‪ .‬در صورتی که مشکلی نباشد فرمان‬
‫باال چیزی در خروجی نمایش نمیدود و در صورتی که مشکلی باشد آن را مشخص میکند‪.‬‬

‫‪ ‬نکته‪ :‬ور چقدر تعداد ‪v‬وا را در آرگومان فرمان باال بیشتر کنید‪ ،‬توضیحاتی که در خروجی‬
‫نمایش میدود بیشتر خواود بود‪.‬‬
‫‪ ‬نکته‪ :‬فرمان ‪ ls –l‬به ما میگوید‪ ،‬فایل ‪ talk‬متعلق به چه سالی اس ‪.‬‬

‫‪>> ls –l file-name‬‬

‫در فرمان ‪ rpm‬آپشن ‪ verify‬گاوی اوقات برای ‪ debugging‬استفاده میشود و بهعنوانمثال یکی از‬
‫کاربردوای آن در ادامه آمده اس ‪ .‬با ‪ vi‬فایل ‪ talk‬را تغییر میدویم (مثالً چند کاراکتر در آخر آن‬
‫مینویسیم) و س س ‪ rpm –v file-name‬را میزنیم‪ ،‬یعنی عمداً فایل ‪ talk‬را تغییر میدویم و س س‬
‫بسته را با فرمان ‪ rpm –v file-name‬کنترل میکنیم‪.‬‬

‫‪>> vi./talk‬‬

‫‪>> rpm -v talk‬‬

‫(این تکنیک در قلب سیستم ‪verify‬‬ ‫یکی از راهوای بررسی صح فایلوا‪ ،‬استفاده از ‪ md5sum‬اس‬
‫فرمان ‪ rpm‬نهفته اس )‪ md5sum .‬یک ‪ checksum‬محاسبه میکند و اگر این مقدار با مقدار محاسبه‬
‫شدهی اصلی تفاوت داشته باشد‪ error ،‬میگیریم‪ .‬در خروجی دستور ‪ rpm‬وم در ‪ verify‬کردن برای‬
‫خطا دو دلیل ممکن اس وجود داشته باشد؛ یکی اینکه این فایل اندازهاش عوض شده اس و یکی‬
‫دیگر اینکه ‪ md5‬آن عوض شده اس ‪ .‬بنابراین میبینیم که آرگومان ‪ -v‬چقدر مهم اس و اگر فایل‬
‫تغییری کند به ما اطالع میدود‪ .‬مناسب اس که ‪admin‬وا ور چند روز یک بار برای اینکه مطمئن‬
‫شوند فایلی دس کاری یا خراب نشده اس این فرمان را روی فایلوای ‪package‬وا اجرا کنند‪.‬‬

‫مثال‪ :‬فایل ‪ passwd‬را با این روش چک میکنیم‪:‬‬

‫‪>> md5sum /etc/passwd‬‬

‫‪844412345676‬‬

‫‪>> vi passwd‬‬
‫‪۶۹‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫یک حرف را تغییر میدویم و تغییرات را ذخیره میکنیم‪.‬‬

‫‪>> md5sum /etc/passwd‬‬

‫‪8444567897887‬‬

‫حاال میبینیم که عدد ‪ checksum‬عوض شده اس ‪.‬‬

‫مثال ‪ :2‬در این مثال میخواویم ‪ permission‬وا را تغییر دویم‪.‬‬

‫‪>> rpm-v file-name‬‬

‫‪>> chmod 777 file-name‬‬

‫‪>> rpm -v file-name‬‬

‫که این وم مسئله بسیار مهمی برای‬ ‫میبینید که به ما میگوید ‪permission‬وا عوض شده اس‬
‫فایلوای مهم اس که باید توسط یک ‪ admin‬بررسی شود‪.‬‬
‫توجه داشته باشید با دستور ‪ lsattr‬میتوانید ‪ attribute‬وای یک فایل را مشاوده کنید‪ .‬مثال‪:‬‬
‫‪>> lsattr /etc/passwd‬‬
‫و دستور ‪ touch‬بخشی از ‪ attribute‬وای فایل را میتواند تغییر دود‪ .‬اجرای این فرمان با یک‬
‫آرگومان‪ ،‬نام فایل‪ ،‬در صورتی که فایل موجود نباشد آن را میسازد و درصورتیکه وجود داشته باشد‬
‫تاریخ دسترسی فایل و برخی از ‪ attribute‬وای آن را تغییر میدود‪ .‬توجه کنید که با مراجعه به‬
‫صفحهی ‪ man touch‬میتوانید با دادن آرگومانوا مختلف رفتار آن را تغییر دوید‪ .‬مثالً با دادن‬
‫آرگومانی میتوان گف که در صورتی که فایل وجود نداش آن را نسازد‪.‬‬

‫‪>> touch file-name‬‬

‫نکتهای که باید توجه داش این اس که تغییر در ‪ attribute‬وا به واسطهی اجرای دستوراتی مثل‬
‫‪ touch‬اثری بر روی ‪ checksum‬وای محاسبهشده و ‪ verify‬وای انجامشده توسط ‪ rpm‬ندارد‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۷۰‬‬

‫مدیریت بستههای نرمافزاری توسط ‪apt-get‬‬

‫در توزیع ‪ Debian‬و دنبالهرو آن ‪ Ubuntu‬و چند توزیع دیگر تعدادی ابزار برای مدیری بستتتهوای‬
‫نرمافزاری داریم‪ .‬تعدادی از این ابزاروا را بهطور مختصر بررسی میکنیم‪:‬‬
‫‪ apt-get ‬ابزاری برای مدیری بستهوای نرمافزار صورت ‪ command-line‬اس ‪ ،‬که البته‬
‫واسطوای کاربری گرافیکی نیز برای آن طراحیشده اس ‪ ،‬و برای فعالی وای زیر کاربرد دارد‪:‬‬
‫‪ .1‬نصب و مدیری بستهوای نرمافزاری‬
‫‪ .۲‬بهروزرسانی بستهوای نرمافزاری‬
‫‪ .۳‬اعمال کردن ‪ patch‬وای امنیتی‬
‫‪ .۴‬به روز نگه داشتن سیستم‬
‫‪ .۵‬دانلود کردن فایلوای ‪ source‬مربوط به بستهوا‬

‫و موارد بسیار دیگر که با مراجعه به ‪ man apt-get‬میتوانید در مورد آن مطالعه کنید‪.‬‬

‫نصب بستهی نرمافزاری‬


‫برای نصب بستهوای نرمافزاری از دستور زیر استفاده میکنیم‪:‬‬
‫}‪apt-get install {package‬‬
‫این فرمان با آرگومان ‪ install‬بستهی نرمافزاری جدید را نصب میکند ولی در صورتی که قبالً نصب‬
‫شده باشد آن را به آخرین نسخه بروز رسانی میکند‪.‬‬
‫مثال‪:‬‬
‫‪apt-get install zip‬‬

‫حذف بستهی نرمافزاری‬


‫}‪apt-get remove {package‬‬
‫افزار نصب شده را حذف مینماید‪ .‬البته ‪configuration‬‬ ‫این فرمان با آرگومان ‪ remove‬بستهی نرم‬
‫آن نرم افزار ومچنان بر روی سیستم باقی میماند‪.‬‬
‫مثال‪:‬‬
‫‪apt-get remove zip‬‬
‫نکته‪ :‬اگر بخواویم بهطور کامل و به ومراه فایلوای ‪ configuration‬یک نرمافزار را حذف نماییم‪ ،‬از‬
‫دستور زیر استفاده میکنیم‪:‬‬
‫}‪apt-get --purge remove {package‬‬
‫مثال‪:‬‬
‫‪apt-get --purge remove mysql-server‬‬
‫‪۷1‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫نحوهی بهروزرسانی نرم افزارها‬


‫‪apt-get update‬‬
‫‪apt-get upgrade‬‬
‫توسط این فرمان فایلوای اصلی نرمافزاروا بهروز رسانی میشود‪ .‬برای اجرای این فرمان باید به‬
‫اینترن دسترسی داشته باشیم و شامل بهروزرسانیوای امنیتی موردنیاز سیستم نیز میباشد‪.‬‬

‫نحوهی بهروزرسانی توزیع‬


‫این فرمان معموالً برای ارتقا توزیع نصبشده روی سیستم به نسخه جدیدتر استفاده میشود‪.‬‬
‫‪apt-get dist-upgrade‬‬
‫زمانی که بخواوید ‪ version‬لینوکس نصبشده را ارتقا دوید این فرمان را وارد میکنیم‪.‬‬

‫جستجوی بستهها‬
‫قبل از اینکه بخواوید بسته ای را نصب کنید ممکن اس بخواوید در مورد آن اطالعات کسب کنید‬
‫یا حتی نام کامل و دقیق آن را بدانید‪ .‬به این منظور دستور ‪ apt-cache‬تعبیهشده اس ‪ .‬بهعنوانمثال‬
‫دستور‪:‬‬
‫‪$ apt-cache search mysql‬‬
‫تمام بستهوایی را که مرتبط با کلمهی ‪ mysql‬وستند را برای شما لیس خواود کرد‪ .‬اگر بخواوید‬
‫در مورد بستهی خاصی که در ‪ repository‬آنالین قرار دارد و ونوز نصب نشده اس ‪ ،‬بدون نصب‬
‫کردن اطالعات کسب کنید دستور ‪ apt-cache show PackageName‬را وارد کنید که در آن‬
‫‪ PackageName‬نام بستهی موردنظر شماس که به کمک دستور قبلی آن را یافتهاید‪.‬‬

‫مدیریت بستهها توسط فرمان ‪dpkg‬‬

‫‪ dpkg‬نرمافزاری اس برای مدیری بستهوا که برای نصب یا مدیری ‪ package‬وای مجزا استفاده‬
‫میشود‪ .‬این فرمان بهطور مستقیم باید به بسته نرمافزاری دسترسی داشته باشد یعنی ابتدا دانلود‬
‫نمایید و س س توسط این فرمان آن را نصب کنید‪ .‬این فرمان با بستهوای نرم افزاری ‪ ،deb‬که در‬
‫توزیعوای ‪ Mint ،Ubuntu ،Debian‬و ‪ Xamin‬وستند‪ ،‬کار میکند‪.‬‬

‫روش نصب و بروز رسانی‬


‫}‪dpkg -i {.deb package‬‬
‫کلید ‪ –i‬در این فرمان بسته نرمافزاری را نصب میکند و در صورتی که قب ً‬
‫ال نصب شده باشد نسخه‬
‫بهروز آن را نصب میکند‪.‬‬
‫مثال‪:‬‬
‫‪dpkg -i zip_2.31-3_i386.deb‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۷۲‬‬

‫روش نصب همزمان چند بسته نرم افزاری‬


‫}‪dpkg -R {Directory-name‬‬
‫کلید ‪ –R‬بهصورت ومزمان چندین بسته نرمافزاری که تح یک دایرکتوری وستند را نصب میکند‬
‫و نیازی نیس که فرمان نصب را برای تکتک بستهوا اجرا کنیم‪.‬‬
‫‪dpkg -R /tmp/downloads‬‬

‫روش حذف بسته نرم افزاری‬


‫}‪dpkg -r {package‬‬
‫این فرمان کاری که انجام میدود این اس که یک بسته نرمافزاری را حذف میکند‪ ،‬ولی فایلوای‬
‫‪ configuration‬را حذف نمیکند‪.‬‬
‫مثال‪:‬‬
‫‪dpkg -r zip‬‬
‫‪ version‬آن در‬ ‫نکته‪ :‬در صورتی که از بستهی نرم افزاری که قصد حذف آن را دارید فقط یک‬ ‫‪‬‬
‫سیستم نصب شده باشد‪ ،‬در زمان حذف نیازی به نوشتن نام کامل آن ندارید و فقط با نوشتن‬
‫‪ zip‬میتوانید آن را حذف کنید‪ ،‬ولی اگر چندین ‪ version‬از آن را داشتید‪ ،‬باید حتماً مشخص‬
‫کنید‪.‬‬
‫نکته‪ :‬اگر بخواویم بهطور کامل یک نرمافزار را با تمام فایلوای ‪ configuration‬آن حذف کنیم‬ ‫‪‬‬
‫کلید ‪ –P‬را به کار میبریم‪:‬‬

‫}‪dpkg -P {package‬‬
‫مثال‪:‬‬
‫‪dpkg -P zip‬‬

‫لیست تمامی بستههای نرم افزاری نصب شده‬


‫‪dpkg -l‬‬
‫برای مشاوده لیس تمامی بستهوای نصب شده از کلید ‪ –l‬استفاده میکنیم که بهطور مختصر به‬
‫ومراه نسخه نمایش میدود‪ .‬اگر بخواویم یک بستهی نرمافزاری خاص را لیس نماییم یعنی تمامی‬
‫نسخهوایی که از یک نرمافزار داریم‪:‬‬
‫}‪dpkg -l {package‬‬
‫مثال‪:‬‬
‫‪dpkg -l apache‬‬
‫برای بهدس آوردن اسامی فایلوایی که در یک بستهی نرمافزاری وجود دارد‪ ،‬آماده شده و مکانی‬
‫که فایلوا در آنجا نصب شدهاند به این صورت عمل میکنیم‪:‬‬
‫}‪dpkg -L {package‬‬
‫‪۷۳‬‬ ‫فصل ‪ ۳‬مدیری بستهوای نرمافزاری‬

‫پیکربندی مجدد بستههای نصب شده‬


‫مجدد تنظیم کنید از دستور ‪dpkg-reconfigure‬‬ ‫ورگاه بخواوید بستهای را که قبالً نصب شده اس‬
‫استفاده کنید‪ .‬بهعنوانمثال‪:‬‬
‫‪sudo dpkg-reconfigure mysql-server-5.1‬‬
‫با اجرای دستور باال ومان سؤاالتی که ونگام نصب ‪ mysql-server‬پرسیده شده بود‪ ،‬مجدداً پرسیده‬
‫میشود‪.‬‬

‫دستور ‪aptitude‬‬
‫عالوه بر دستورات باال‪ ،‬در توزیعوای مبتنی بر ‪ ،debian‬واسط سطح باالی دیگری به واسطهی دستور‬
‫‪ aptitude‬فراوم شده اس ‪ .‬توصیه میکنیم که به صفحهی ‪ man‬این دستور را مطالعه نمایید‪.‬‬
‫فصل ‪ 4‬دستورات لینوکس‬
‫در این فصل به موارد زیر خواویم پرداخ ‪:‬‬
‫‪ ‬کار با خط فرمان‬
‫‪ ‬کار با فایلوای متنی‬
‫‪ ‬مدیری فایلوا‬
‫‪ ‬مدیری اجرای پروسسوا‬
‫‪ ‬مدیری اولوی پروسسوا‬
‫‪ ‬جستجو در فایلوا‬
‫‪ ‬استفاده از ‪ vi‬و ‪vim‬‬

‫در این فصل فرمان وای متعددی را در لینوکس بررسی خواویم کرد که برای ور یک مثالوای و‬
‫سؤالوای خوبی مطرح شده اس ‪ .‬بعدازآن نحوهی تعریف متغیر و تابع در خط فرمان را خواویم‬
‫گف و درنهای به بحث بسیار مهم سیگنالوا خواویم رسید‪ .‬این فصل یکی از فصلوای مهم برای‬
‫تبدیلشدن به یک ‪ admin‬خبره اس ‪.‬‬
‫برای شتتتروع کار فرمانی به نام ‪ abcd‬را وارد میکنیم که خطا میدود و پیغام ‪command not‬‬
‫‪ found‬را ‪ bash‬به شما میدود که فرمانی با این نام ندارد به عبارتی خود گار سن ما آنالیز میکند‬
‫و به ما جواب میدود که اصالً چنین چیزی در منو نداریم!‬
‫‪$ abcd‬‬
‫‪-bash: abcd: command not found‬‬
‫در لینوکس تعاریفی مثل فرمان داخلی و خارجی وجود دارد‪ .‬حاال یک سؤال مطرح اس ‪.‬‬
‫سؤال‪ :‬فرمانهای داخلی و خارجی را تعریف کنید؟‬
‫در مایکروساف ویندوز فرمان داخلی به فرمانی گفته می شود که مثالً در رستوران وقتی از گارسن‬
‫نمک میخواوید از میز کناری به شما نمک را میدود‪ .‬دقیقاً یعنی اینکه اگر گارسن خودش فرمان‬
‫را اجرا ک ند میگوییم فر مان داخلی استتت ‪ .‬مثالً در وی ندوز ‪ cmd‬و ‪ Windows PowerShell‬را‬
‫‪۷۵‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫بهعنوان گارستتتن داریم‪ .‬در ویندوز فرمانوایی مثل ‪ dir‬یا ‪ cd‬یا ‪ cls‬فرمانوای داخلی وستتتتند و‬
‫توسط گارسن انجام میشود‪.‬‬
‫فرمان خارجی فرمانوایی وستتتند که بر روی تجهیزات خارجی قرار دارند و توستتط نرم افزار اجرا‬
‫میشوند‪ .‬فرمان خارجی فرمانی اس که نمیتواند خود گارسن انجام دود بلکه میبرد پش صحنه‬
‫و عوامل ذیربط آماده میکنند‪ .‬مثل دستور ‪ format‬که روی ‪ hard‬اس و گارسن بلد نیس ‪.‬‬
‫برای اینکه بفهمیم چه فرمانی داخلی و چه فرمانی خارجی استت در لینوکس فرمانی داریم به نام‬
‫‪ type‬که به ما میگوید چه فرمانی داخلی و چه فرمانی خارجی اس ‪.‬‬
‫‪$ type cd‬‬
‫‪cd is a shell builtin‬‬
‫‪ shell‬به معنی پوسته و بیرونیترین الیه نرم افزاری اس که با شما صحب میکند و به شما جواب‬
‫میدود و درواقع ومان گارسن ما اس ‪ .‬از طریق گارسن و یا ‪ shell‬فعالی موردنظر ما و در پش‬
‫صحنه انجام میگیرد و البته حتماً مدیری وس و توسط مدیر چک میشود‪ .‬آیا این فرمان را داریم‬
‫یا نداریم و یا میشود و یا نمیشود و بررسیوای مشابه را انجام میدود و جواب سرویس مورد نظر‬
‫ما را میدود‪.‬‬
‫‪$ type date‬‬
‫‪date is /bin/date‬‬
‫با زدن فرمان باال به ما میگوید که ‪ date‬زیر دایرکتوری‪ /bin‬قرار دارد‪.‬‬
‫حاال دو بار فرمان ‪ date‬را بزنید که تاریخ را به شما کامل نشان میدود‪ .‬بعد از اینکه فلش باال (را‬
‫بزنید و دوباره ‪ type date‬را بزنید میبینید عالوه بر جملهای که در باال به ما گف یک کلمه دیگر‬
‫وم به نام ‪ hash‬مینویسد‪.‬‬
‫سؤال‪ :‬این ‪ hash‬به چه معنی اس ؟‬ ‫‪‬‬

‫‪$ date‬‬
‫‪$ date‬‬
‫‪$ type date‬‬
‫)‪date is hashed (/bin/date‬‬
‫در لینوکس اگر شما یک فرمان را چند بار استفاده کنید‪ ،‬سیستم جای آن را به خاطر میس ارد و‬
‫در دفعات بعدی به دنبال آن نمیگردد و این بار میگوید من میدانم جای آن کجاس ؛ پس ‪hashed‬‬
‫به این معنی اس که بعد از یکبار صدا زدن فرمان در دفعات بعدی جای آن را به خاطر میس ارد‬
‫و در دفعات بعدی به دنبال آن نمیگردد به عبارتی آدرس آن در حافظه مستقر (‪ )resident‬میشود‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۷۶‬‬

‫فرمانهای لینوکس‬

‫فرمان ‪history‬‬
‫فرمان ‪ history‬تمام فرمان وایی را که شما زدید با تاریخ و ساع در یک پایگاه داده نگه میدارد‪.‬‬
‫لینوکس از نظر امنیتی در سطح باالیی قرار دارد که به مرور در کالس مطرح خواویم کرد‪.‬‬
‫‪$ history‬‬

‫فرمان ‪who‬‬
‫به وسیله فرمان ‪ who‬یا ‪ w‬میتوانیم بفهمیم که چه ‪ user Id‬وایی ‪ login‬به اضافه آدرس ‪ Ip‬ور‬
‫‪ userId‬وستند‪.‬‬
‫‪$ who‬‬
‫یا‬
‫‪$w‬‬
‫در ادامه این فرمانوا را بهدق بررسی خواویم کرد‪.‬‬

‫فرمان ‪bash‬‬
‫با اجرای این فرمان داخل ‪ terminal‬فعلی که وستند یک ‪ bash‬دیگر اجرا میشود که میشود ‪bash‬‬
‫داخل ‪ .bash‬میتوانید این فرمان را به تعداد زیاد اجرا کنید‪ ،‬ولی در این صورت الزم خواود شد که‬
‫به ومان تعداد وم ‪ exit‬کنید تا تمام ‪bash‬وا بسته شوند و به خط فرمان اولیه برگردید‪.‬‬

‫فرمان ‪apropos‬‬
‫فرمان دیگری به نام ‪ apropos‬وجود دارد که کار‪ search‬را انجام میدود‪ .‬در س مثل ج ستجویی‬
‫که شتتما در ‪ Google‬انجام میدوید؛ این فرمان بر روی ستترور کالس به دنبال فرمانی که بهعنوان‬
‫آرگومان به آن دادهاید‪ ،‬میگردد‪ .‬در سی ستم خودتان ج ستجو میکند و ور مطلب موجود را که با‬
‫رشتهای که جستجو کردهاید‪ ،‬وماونگی داشته باشد؛ برای شما نمایش میدود‪:‬‬
‫‪$ apropos useradd‬‬

‫فرمان ‪ man‬و ‪ help‬و ‪info‬‬


‫زمانی که شما یک توزیع از لینوکس را نصب میکنید بهاندازه کافی راونما و ‪ Document‬روی‬
‫سیستم نصب میشود که به آنوا ‪ Manual‬گفته میشود‪ .‬در لینوکس تقریباً تمامی فرمانوا دارای‬
‫‪ help ،Manual‬یا ‪ info‬وستند‪ .‬شما بهوسیله فرمان ‪ Man‬میتوانید ‪ Manual‬مربوط به ور فرمانی‬
‫را که وجود دارد ببینید‪.‬‬
‫‪$ man date‬‬
‫‪۷۷‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫با زدن فرمان باال ‪ Manual‬مربوط بهفرمان ‪ date‬را دیدید‪ .‬در باالی صفحه عدد یک داخل پرانتز در‬
‫جلوی فرمان ‪ Date‬در ‪ Manual‬آن نشاندونده ی این اس که این فرمان را ومه میتوانند اجرا‬
‫کنند و یک فرمان عمومی میباشد‪ .‬حاال فرمان زیر را میزنیم‪:‬‬
‫‪$ man useradd‬‬
‫مشاوده میکنیم که در باالی ‪ Manual‬داخل پرانتز عدد ‪ ۸‬نوشتهشده (‪ )۸‬که این ‪ ۸‬نشان میدود‬
‫این فرمان مخصوص ‪ admin‬میباشد و بهطور کلی فرمانوایی که در ‪ Manual‬آنوا ‪ ۸‬نوشته شده‬
‫باشد فقط و فقط توسط ‪ root‬اجرا میشوند؛ بهجز در مواردی که از طرف ‪ root‬به یک کاربر معمولی‬
‫وم ‪ permission‬داده باشیم‪ .‬برای اطالعات بیشتر در مورد اعدادی که در باالی صفحهی ‪manual‬‬
‫وا نوشته میشود‪ ،‬فرمان زیر را اجرا میکنیم‪:‬‬
‫‪$ man man‬‬
‫صفحهی ‪ man‬باال حاوی اطالعات مهمی اس که یک ‪ admin‬خوب حتماً باید با آن آشنا باشد‪.‬‬
‫حاال اگر ‪ Manual‬مربوط به فرمان ‪ sin‬که برای محا سبهی ‪ sin‬به کار میرود را بزنید‪ ،‬در صفحهی‬
‫راونمای آن داخل پرانتز عدد (‪ )۳‬نو شته شده ا س ‪ .‬با مراجعه به ‪ ( man man‬صفحهی راونمای‬
‫‪ ،)man‬متوجه میشویم که عدد ‪ ۳‬مربوط به توابع میباشد‪.‬‬
‫‪$ man sin‬‬
‫و اگر در ‪ Manual‬یک فرمان عدد (‪ )۵‬داخل پرانتز بود مختص فایل پیکربندی اس ‪ .‬عدد (‪ )۶‬برای‬
‫بازیوا (‪ )Game‬اس ‪ .‬عدد (‪ )۲‬برای ‪ system call‬میباشد‪.‬‬
‫بهجز ‪ manual‬ما ‪ help‬وم داریم‪:‬‬
‫‪$ help cd‬‬
‫و فرمانوای داخلی ‪ help‬دارند و ‪ Manual‬خاصی ندارند‪ .‬پس ‪ Man‬برای‬ ‫‪ cd‬یک فرمان داخلی اس‬
‫فرمانوای خارجی اس ‪ .‬فرمانوای داخلی ‪ Manual‬ندارند بلکه ‪ help‬دارند‪ .‬در لینوکس فرمان‬
‫دیگری به نام ‪ info‬داریم که میشود گف با ‪ Manual‬حدود ‪ ۹۰%‬مشترک اس ‪.‬‬
‫پس یاد گرفتیم که در لینوکس باوجود امکاناتی مثل ‪ Manul‬و ‪ help‬و ‪ info‬نیازی به کتاب و‬
‫یادداش و جستجو در صفحات وب نداریم و در ضمن اگر شما اشتباوی انجام دوید خود لینوکس‬
‫وم به شما کمک میکند که آن را رفع کنید‪ .‬بهعنوانمثال فرمان ‪ cp‬را بهتنهایی وارد کنیم‪:‬‬
‫‪$ cp‬‬
‫به شما نمیگوید که چنین چیزی نداریم بلکه میگوید باید بگویید که چه چیزی را میخواوید‬
‫ال‬
‫‪ copy‬کنید‪ .‬در لینوکس ما فرمان داریم و دُم فرمان یا ومان آرگومانوا (‪ )arguments‬که وقتی مث ً‬
‫فقط ‪ cp‬بزنید فرمان را ناقص وارد کردید و دُم فرمان را ندادهاید‪ .‬اگر کسی فرمان را اشتباه و یا‬
‫ناقص وارد کرد‪ ،‬اول دعوایش می کند و س س درستش را به فرد آموزش میدود و راونماییاش‬
‫میکند‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۷۸‬‬

‫تعریف متغیر در لینوکس‬


‫در لینوکس ما متغیر داریم و میتوانیم بهراحتی به آن مقدار دویم‪:‬‬
‫‪$ x=2‬‬
‫برای اینکه مقدار یک متغیر یا محتویات یک متغیر را ببینیم از ‪ echo‬استفاده میکنیم و جلوی اسم‬
‫متغیر عالم ‪ $‬قرار می دویم که مقدار آن را در نظر بگیرد نه اینکه اسم متغیر را بنویسد‪:‬‬
‫‪$echo $x‬‬
‫دستور زیر مقدار متغیر ‪ x‬را در ‪ t‬میریزد‪:‬‬
‫‪$ echo t=$x‬‬
‫برای اینکه یک عبارت را در کنار مقدار متغیر چاپ کند به این صورت مینویسیم‪:‬‬
‫‪$ echo ${x}aictc‬‬

‫فرمان ‪read‬‬
‫برای خواندن اطالعات در لینوکس فرمان ‪ read‬را داریم که بهوسیلهی فرمان ‪ type‬میفهمیم که‬
‫یک دستور ‪ builtin‬میباشد‪:‬‬
‫‪$ type read‬‬
‫‪read is a shell builtin.‬‬
‫وقتی فرمان ‪ read‬و س س نام متغیر را وارد مینمایید‪.‬‬
‫‪$ read NAME‬‬
‫س س منتظر میماند تا شما اطالعاتی را وارد کنید و بهعنوانمثال ‪ zahra‬را وارد میکنیم‪ .‬وقتی‬
‫‪ echo‬کنیم میبینیم که مقدار متغیر را برای ما مینویسد‪( .‬توصیه میشود اسامی متغیروا را بزرگ‬
‫بنویسید)‪:‬‬
‫‪$ echo $NAME‬‬
‫‪zahra‬‬
‫اطالعات بیشتر از فرمان ‪ read‬را میتوان با فرمان ‪ help read‬مشاوده نمود‪ .‬فرمانوای ‪ builtin‬فقط‬
‫‪ help‬دارند‪.‬‬
‫‪$ help read‬‬
‫‪ ‬مثال‪ :‬با توجه به ‪ help‬فرمان ‪ ،read‬کاری کنید اگر فرمان ‪ read‬بعد از ‪ ۵‬ثانیه جواب نداد یک‬
‫‪ time out‬بدود و خارج شود‪:‬‬

‫‪$ read –t5 NAME‬‬


‫چه کاری انجام دویم تا اسم را بیشتر از سه حرف نگیرد؟‬
‫‪$ read –n3 NAME‬‬
‫در ‪ read‬اگر اسم متغیر را وارد نکنید ‪ error‬نمیدود و بهطور پیشفرض ورودی داده شده را در‬
‫متغیر ‪ reply‬میگذارد‪ .‬حاال میخواویم که اسم بیشتر از ‪ ۳‬حرف نگیرد و ‪ ۷ time out‬ثانیه باشد‪.‬‬
‫‪$read-n3 –t7 NAME‬‬
‫‪ -p‬در فرمان ‪ read‬به ما ‪ prompt‬میدود‪.‬‬
‫‪۷۹‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫‪$ read-p "PLEASE ENTER YOUR NAME: "–t7 -n14 NAME‬‬


‫اگر فرمان زیر را بزنیم بعد از مدت ثانیهای که در آن مشخص میکنیم خط قطع میشود که این‬
‫فرمان برای کنترل و کار کردن کاربران مناسب اس ‪.‬‬
‫‪ ‬مثال در یک خط برنامهای بنویسید که یک اسم را بخواند و حرف اوّل آن را چاپ کند؟‬

‫روش اول‪:‬‬
‫‪$ read -p "ENTER UR NAME:" -t 7 -n3 NAME; echo $NAME |cut -c1‬‬
‫‪ENTER UP NAME: pardis‬‬
‫‪p‬‬
‫روش دوّم‪:‬‬
‫;‪/tmp/a -c1 echo $NAME > /tmp/a; cut $ read –p "ENTER NAME:" –t 7 -n 14 NAME‬‬
‫ولی توصیه میشود ورگز از این روش استفاده نکنید و ‪ current directory‬خود را با فایلوای متفرقه‬
‫پر نکنید‪.‬‬
‫‪ ‬مثال‪ :‬برنامهای بنویسید که اسمی را بخواند و حرف آخر آن را چاپ کند؟‬

‫‪$ read -p "ENTER Name:" –t 7 -n 14 NAME;echo $ NAME |tail -c2‬‬


‫‪ ‬نکته‪ :‬حرف آخر اسم مورد نظر ما ‪ s‬اس ‪ .‬یادتان باشد آخرین حرف اسم قبل از ‪ ENTER‬اس‬
‫زیرا ‪ Enter‬وم که بعد از اسم وارد کردیم وم یک کاراکتر حساب میشود‪ ،‬پس باید آرگومان‬
‫‪ –c2‬میدادیم و نه ‪ ،–c1‬که ومین کار را کردیم‪ .‬پس دلیل اینکه ‪ ۲‬مینویسیم به این خاطر‬
‫اس که اگر مثالً کلمه ‪ Hello‬را ما به ‪ echo‬بدویم و بگوییم ‪ octal dump‬آن را به ما بدود به‬
‫این صورت جواب میدود‪:‬‬

‫‪$ echo hello |od -c‬‬


‫‪0000000 h e l l o \n‬‬
‫‪ \n‬وم که ‪ enter‬اس یکی حساب میشود‪.‬‬
‫‪ ‬نکته‪ :‬از طریق فرمان ‪ od‬میتوانیم ور کلیدی که در این فرمان وارد کنیم را مشاوده کنیم‪:‬‬

‫‪$ read a; echo $a |od –c‬‬


‫تمرین‪ :‬فرمان ‪ man od‬را بزنید و صفحهی ‪ man‬آن را مطالعه کنید‪.‬‬

‫ادامه فرمان ‪read‬‬


‫‪$ read a b‬‬
‫‪Najibeh pardis‬‬
‫‪$ echo $a‬‬
‫‪Najibeh‬‬
‫ومیشه اولین داده ورودی تا قبل از ‪ space‬را میدود به اوّلین متغیر و دوّمین ورودی و ور چه که‬
‫باز وم بعد از ‪ space‬میزنیم را به ومان ‪ b‬که متغیر دوّم اس میدود و اگر تعداد داده ورودی کمتر‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۸۰‬‬

‫بود متغیر آخری چیزی گیرش نمیآید‪.‬‬

‫تعریف ‪ function‬در لینوکس‬


‫ما در زبانوای برنامهنویسی میتوانیم ‪ function‬تعریف نماییم در ‪ bash‬لینوکس وم امکان انجام‬
‫این کار را داریم‪ .‬بهعنوانمثال میخواویم به جای فرمان ‪ date‬حرف ‪ t‬که مخفّف تاریخ اس را به‬
‫کار ببریم‪ .‬به این صورت عمل میکنیم‪:‬‬
‫)(‪$ t‬‬
‫{‬
‫‪date‬‬
‫}‬
‫حاال اگر بزنید ‪ t‬میبینید که به شما تاریخ را میدود (مثل اجرای فرمانوا در خط فرمان)‪ .‬پس‬
‫میتوانیم ‪ function‬وم بنویسیم‪.‬‬

‫فرمان ‪alias‬‬
‫فرمان دیگری که داریم و به منظور تعیین اسم مستعار به کار میرود ‪ alias‬اس ‪.‬‬
‫‪$ alias z = date‬‬
‫حاال اگر ‪ z‬را بزنیم میبینیم که تاریخ را نمایش میدود‪.‬‬
‫‪$z‬‬
‫تا اینجا متوجه شدیم که ما با یک ‪ shell‬یا پوستهای روبهرو وستیم که وم فرمانوای داخلی را‬
‫متوجه و وم فرمانوای خارجی را میشود‪ .‬میتوان به آن ‪ alias‬داد و ‪ function‬وم تعریف کرد‪.‬‬
‫پس ما متوجه شدیم که میتوانیم گارسن را با نظر خودمان ودای کنیم‪.‬‬

‫‪Command completion‬‬
‫در لینوکس ما ‪ command completion‬داریم‪ ،‬یعنی اگر شما یک حرف و یا چند حرف اول یک‬
‫فرمان را بزنید و س س کلید ‪ tab‬را فشار دوید‪ ،‬تمامی فرمانوایی که با آن حروف شروع میشوند‬
‫را میبینید‪.‬‬
‫بهعنوانمثال فقط بزنید ‪ d‬و کلید ‪ Tab‬را فشار دوید میبینید تمام فرمانوایی که با حرف ‪( d‬کلید‬
‫‪ )d+Tab‬شروع می شوند را برای شما میآورد و به شما میگوید مثالً من ‪ 1۸۴‬فرمان دارم که با‬
‫حرف ‪ d‬شروع می شوند‪ ،‬اگر ‪ yes‬را بزنیم اسم فرمانوا را میدود‪ .‬کاربرد اینزمانی اس که فرمان‬
‫خیلی طوالنی باشد‪.‬‬
‫مثال‪ :‬یک تابع با نام طوالنی تعریف میکنیم‪:‬‬
‫)( ‪$ zzzzzTTTzzzzz‬‬
‫{‬
‫‪date‬‬
‫}‬
‫‪۸1‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫حاال اگر ‪ zz‬بزنیم و ‪ Tab‬را فشار دویم ‪ bash‬کاملش را میآورد‪.‬‬


‫‪ ‬نکته‪ :‬در لینوکس میتوان چند فرمان را در یک خط زد‪:‬‬

‫‪$ type cd; date; cal‬‬


‫فرمانوا با سمیکالن یعنی; از وم جدا میشوند‪.‬‬

‫فرمان ‪cal‬‬
‫فرمان دیگری نیز داریم به نام ‪ cal‬که تاریخ و تقویم را به ما میدود و البته ‪ man cal‬به ما تاریخ را‬
‫وم درس میدود و در مورد جزئیات این فرمان مفصل صحب کرده اس ‪.‬‬
‫‪$ man cal‬‬

‫فرمان ‪env‬‬
‫به کمک این فرمان میتوانید متغیروای محیطی را مشاوده کنید و ومچنین آنوا را تغییر دوید و‬
‫برنامهی مورد نظرتان را در محیط تغییر یافته اجرا کنید‪ .‬بهعنوانمثال فرمان زیر را وارد کنید و‬
‫خروجی را مشاوده نمایید‪:‬‬
‫‪$ env‬‬

‫بکارگیری خصوصیات فرمانها‬


‫فرمانوایی که در لینوکس داریم دارای خصوصیاتی میباشند که مشخص میکند آن فرمان با چه‬
‫خصوصیاتی اجرا میشود‪ .‬به این خصوصیات ‪ option‬یا آرگومان گفته میشود که با – (‪ )dash‬شروع‬
‫میشود و حرف اول ‪ option‬موردنظر و یا‪ --‬و لغ کامل اسم ‪ option‬اس ‪ .‬در ادامه مثالوایی را‬
‫برای روشن شدن این موضوع خواویم دید‪.‬‬
‫مثالً در فرمان ‪ date‬برای اینکه ساع جهانی را ببینیم باید ‪ option‬وایی را در جلوی آن قرار دویم‬
‫به این صورت‪:‬‬
‫‪$ date -u‬‬
‫برای اینکه بگوییم امروز چندم ماه اس ‪:‬‬
‫‪$ date +%d‬‬
‫حاال میخواویم اوّل ساع را بدود‪ ،‬بعد روز ماه را بدود‪:‬‬
‫‪$ date +%H%a‬‬

‫فرمان ‪w‬‬
‫فرمان زیر را اجرا کنید‪:‬‬
‫‪$ man w‬‬
‫این فرمان ساع و تعداد کاربرانی که در شبکه وستند و ‪ login‬کردهاند را به ما نمایش میدود و‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۸۲‬‬

‫بیشتر ‪ Admin‬از آن استفاده میکند‪ .‬فرمان ‪ who‬نیز بسیار شبیه به ‪ w‬اس و عالوه بر آن ومچنین‬
‫میگوید که سرور چه زمانی ‪ up‬شده اس ‪.‬‬
‫‪$ who-b‬‬
‫و برای اینکه ببینیم چه ‪user Id‬وایی ‪ login‬وستند‪:‬‬
‫‪$ who -q‬‬
‫میزنیم و اگر بزنیم ‪ who -m‬اطالعات خودمان را میدود که چه زمانی ‪ login‬کردهایم و اطالعات‬
‫دیگری از این دس را که مربوط به ‪ user‬ما میشود را نشان خواود داد‪ pts .‬در خروجی وم به‬
‫معنای ‪ pseudo terminal stream‬میباشد که ایستگاه پایانهی ساختگی میباشد و اگر فرمان ‪ tty‬را‬
‫بزنیم به ما میگوید که شماره ‪ pts‬ما چند اس ‪.‬‬
‫‪ ‬نکته‪ :‬وقتی پش یک کام یوتر نشسته باشید و در ترمینال واقعی آن کار کنید ‪ tty‬دارید‪ ،‬ولی‬
‫در ارتباطات از طریق ‪ telnet‬یا ‪ ssh‬ترمینالوای ساختگی خواوید داش ‪.‬‬

‫فرمان ‪id‬‬
‫فرمان بعدی وم که کار میکنیم ‪ id‬اس که اطالعاتی راجع به اینکه در کدام گروه عضو وستید و‬
‫چه شماره ‪id‬ایی دارید را به شما میدود‪.‬‬
‫‪$ id‬‬
‫‪uid=506(n.pardis) gid=502 groups=502‬‬

‫فرمان ‪finger‬‬
‫فرمان بعدی ‪ finger‬نیز مانند ‪ id‬اس که اطالعاتی راجع به ‪ userid‬به شما نشان میدود و برای‬
‫تغییر دادن یا واردکردن اطالعات خودتان فرمان ‪ chfn‬را بزنید‪.‬‬
‫‪$ finger‬‬
‫‪$ chfn‬‬
‫در این قسم قصد داریم که با انجام یک تمرین و کار روی یک فایل فرمانوای جدید را یاد بگیریم‪.‬‬

‫فرمان ‪copy‬‬
‫برای شروع کار فرمان ‪ copy‬را از روی ‪ man‬آن یاد میگیریم‪:‬‬
‫‪$man cp‬‬
‫فرمان ک ی ‪ cp‬فایل مورد نظر ما را در مقصد ک ی میکند‪:‬‬
‫‪$ cp /tmp/namef ~/‬‬
‫که در واقع بهصورت زیر اس ‪:‬‬
‫مقصد‪/‬مبدأ‪$ cp/‬‬
‫با این فرمان یک فایل به نام ‪ namef‬را ک ی کرده و به خانهی خود بردهاید و اگر فرمان ‪ ls‬را بزنیم‪،‬‬
‫میبینیدکه در لیس فایلوای شما در خانهی خودتان اضافهشده اس ‪.‬‬
‫~‪$ ls/‬‬
‫‪۸۳‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫درصورتیکه بخواوید یک دایرکتوری که در زیر آن دایرکتوری و فایلوای متعددی بهصورت تودرتو‬


‫وجود دارد را ک ی کنید از آرگومان ‪ –R‬استفاده کنید‪:‬‬
‫‪$ cp –R/tmp/aliFolder//home/ali/oldFiles/‬‬
‫‪ /tmp/aliFolder‬را به دایرکتوری ‪ /home/ali/oldFiles‬منتقل‬ ‫دستور باال تمام محتویات دایرکتوری‬
‫میکند‪ .‬توجه داشته باشید درصورتیکه دستور باال را بدون ‪ –R‬اجرا کنید به با پیغام خطا روبهرو‬
‫خواوید شد‪.‬‬

‫فرمان ‪cat‬‬
‫فرمان دیگری که داریم ‪ cat‬اس که محتویات فایل را نشان میدود‪:‬‬
‫‪$ cat namef‬‬
‫میبینیم که این فایل شامل سه فیلد اطالعاتی اس ‪:‬‬
‫‪name last name score‬‬
‫فایل‪ :‬عبارت اس از تعدادی رکورد و رکورد عبارت اس از تعدادی فیلد و جدول تعدادی سطر دارد‬
‫و سطر تعدادی فیلد دارد‪.‬‬

‫فرمان ‪cut‬‬
‫‪$ man cut‬‬
‫قبالً وم گفتیم که خود فرمان را داریم و ومچنین دم فرمان را و اگر در صفحهی ‪ man‬خصوصیاتی‬
‫درون عالم [] بود یعنی اختیاری وستند‪.‬‬
‫‪$ cut -c1-10 namef‬‬
‫از کاراکتر ‪ 1‬تا ‪ 1۰‬فایل ‪ namef‬را به ما میدود‪ .‬اگر بین ‪ c1‬و ‪ 1۰‬فاصله بگذاریم دم جدا میشود و‬
‫اشکال پیش میآید چون دو تا دم میشود‪ .‬حاال اگر ‪ enter‬بزنیم نام را میبینیم‪ c .‬در اینجا مخفف‬
‫‪ character‬به معنی ستون میباشد که ور ستون جای یک کاراکتر میباشد‪ .‬بنابراین از سم چپ‬
‫میشمارد به تعدادی که مشخص کردیم‪.‬‬

‫فرمان ‪mail‬‬
‫فرمان بعدی که درس میدویم و برای ادامه تمرین نیاز داریم فرمان ‪ mail‬اس ‪ .‬فرمان ‪ mail‬از ما‬
‫سه چیز را برای ارسال یک نامه که مقصد‪ ،‬موضوع و محتوا اس ‪ ،‬میخواود‪.‬‬
‫برای ارسال یک نامه به ‪ Admin‬این فرمان را میزنیم‪.‬‬
‫‪$ mail root‬‬
‫… ‪subject hi‬‬
‫…‪content‬‬
‫‪ctrl+d‬‬
‫‪cc:‬‬
‫میپرسد آیا میخواوی ک ی از نامه را به کسی بدوی؟ بهعنوانمثال ‪ user id‬خودتان را وارد کنید و‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۸۴‬‬

‫اگر وم نه که خالی رد کنید‪ .‬حاال اگر فرمان ‪ mail‬را بزنیم میبینیم اگر ایمیلی داشته باشیم نمایش‬
‫میدود‪.‬‬
‫‪$ mail‬‬

‫تئوری فان نیومن‬


‫بر اساس تئوری فانیومن ور ‪ process‬حداقل یک ورودی میخواود و حداقل وم دو خروجی دارد‪.‬‬
‫به ورودی ‪ standard input‬میگویند و به دو خروجی ‪ standard output‬و ‪ standard error‬گفته‬
‫میشود‪.‬‬

‫‪Pipe file‬‬
‫در ادامه از ‪ pipe file‬استفاده میکنیم که ‪ standard input‬را به ‪ standard output‬میبرد‪ .‬بهطور‬
‫کلی ما زمانی از ‪ pipe‬استفاده میکنیم که بخواویم خروجی استاندارد را از طریق لوله که ‪ pipe‬این‬
‫نقش را برای ما اجرا میکند به جای نمایش روی مانیتور به یک فرمان دیگر بفرستیم‪.‬‬
‫‪ ‬مثال‪ :‬حاال میخواویم ومین اسموا را جدا کنیم و ایمیل کنیم‪ .‬یعنی به جای اینکه روی‬
‫صفحه نمایش دویم‪ ،‬از طریق ‪ pipe‬به فرمان ‪ mail‬میفرستیم‪:‬‬

‫‪$ cut -c1-10 namef | mail -s names-listn.pardis‬‬


‫حاال دوباره فرمان ‪ mail‬که بزنیم آن را میبینیم‪ .‬حاال شماره ایمیل را میزنیم تا باز شود و آن را‬
‫ببینیم‪.‬‬

‫فرمان ‪sort‬‬
‫این فرمان ومان طور که از اسمش مشخص اس برای ما ‪ sort‬میکند و اگر خروجی یک فرمان را‬
‫به این فرمان بدویم‪ ،‬آن را ‪ sort‬خواود کرد‪.‬‬
‫‪$ man sort‬‬
‫در ادامهی این تمرین‪ ،‬از یک فرمان دیگر به نام ‪ uniq‬وم استفاده میکنیم که کار واحدسازی را‬
‫انجام میدود و اسموای شبیه وم را از ور کدام یکی میشمارد‪.‬‬
‫‪ ‬مثال‪ :‬حاال میخواویم این اطالعات را ‪ sort‬کنیم و ایمیل کنیم‪.‬‬

‫‪$ cut -c1-10 namef |sort| mail -s names n.pardis‬‬


‫اوّل ‪ cut‬آن را جدا میکند بعد به ‪ sort‬میدود و ‪ sort‬وم به ‪ mail‬میدود‪ .‬حاال میبینیم که اسموا‬
‫‪ sort‬شدهاند و ایمیل شدهاند‪.‬‬
‫حاال می خواویم ور اسم را با تعداد تکرار آن یک بار بنویسید و آپشن ‪ –f‬را وم اضافه میکنیم تا‬
‫‪( case sensitive‬حساس به بزرگ یا کوچک بودن حروف) نباشد‪.‬‬
‫‪$ cut-c1-10 namef |sort-u –f | mail-s names n.pardis‬‬
‫‪۸۵‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫حاال میخواویم بگوید که از ور اسم چند تا داریم؟‬


‫‪$ cut -cl-10 namef |sort| uniq -c‬‬
‫چون اگر این باشد از ور کدام یکی به ‪ uniq‬میدود‬ ‫آپشن ‪ –u‬را از ‪ sort‬بر میداریم‬
‫‪ ‬نکته‪ :‬اگر ‪ sort‬را برداریم اشتباه میشود‪ .‬چون ‪ uniq‬مث ً‬
‫ال ‪ amir‬را میبیند و بعد زیرش‬
‫‪ mohammad‬را میبیند و فکر میکند ‪ amir‬یکی اس ‪.‬‬

‫االن میخواویم بهطور مثال ‪ history‬خودمان را برای ومه کسانی که وم اکنون به سیستم متصل‬
‫وستند ارسال نماییم‪:‬‬
‫`‪$ history | mail –s my-hist `users‬‬
‫که با این کار ‪ users‬را بهعنوان یک اسم‬ ‫میبینید که ‪ users‬را درون ‪ back tick‬یعنی قرار میدویم‬
‫در نظر نمیگیرد بلکه مقدار آن یعنی ‪ userid‬کل کاربران را در نظر میگیرد‪ .‬راه دیگر اجرای فرمان‬
‫باال استفاده از روش زیر اس ‪:‬‬
‫)‪$ history | mail –s my-hist $(users‬‬
‫نیز ومانند روش استفاده از ‪ backtick‬اول دستور ‪ users‬اجرا میشود و بعد خروجی‬ ‫که در این حال‬
‫آن مورد استفاده قرار میگیرد‪.‬‬
‫پس تا اینجا ‪ sort‬و ‪ uniq‬را یاد گرفتیم‪ .‬حاال میخواویم این فایل را بر اساس نمره ‪ sort‬کنیم و‬
‫نمایش دویم‪:‬‬
‫‪$ sort -k3 -r -n namef‬‬
‫آپشن ‪ –k3‬یعنی بر اساس کلید سوم ‪ sort‬کن و ‪ –r‬یعنی ‪ revers‬مرتب کن و ‪ –n‬یعنی کلید سوم‬
‫از نوع ‪ numeric‬میباشد و بر اساس نوع داده ‪ numeric‬در نظر بگیر و مرتب کن‪.‬‬

‫فرمان ‪ head‬و ‪tail‬‬


‫فرمان بعدی که با وم یاد میگیریم ‪ head‬اس که این فرمان ‪ 1۰‬خط اوّل فایل را بهطور پیش‬
‫فرض بیرون میکشید‪ .‬در مثالوای زیر فقط ‪ ۵‬خط را نمایش میدود‪:‬‬
‫‪$ head-5 file-name‬‬
‫‪$ head-5 namef‬‬
‫حاال اگر بخواویم ‪ 1۰‬خط آخر فایل را نشان دویم از فرمان ‪ tail‬استفاده میکنیم‪:‬‬
‫‪$ tail namef‬‬
‫و اگر بخواویم ‪ ۵‬خط آخر را نمایش دود‪:‬‬
‫‪$tail -5 namef‬‬
‫حاال اگر بخواویم خط آخر را نشان دویم این فرمان را میزنیم‪:‬‬
‫‪$ tail -1 namef‬‬
‫مثال‪ :‬شاگرد سوّم را میخواویم نمایش دود‪:‬‬
‫‪$ sort -k3 –r-n namef |head-3‬‬
‫شاگرد یکی به آخر را نمایش دود‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۸۶‬‬

‫‪$sort-k3-r-n namef |tail-2| head-1‬‬


‫مثال‪ :‬خط ‪ 1۳‬فایل ‪ namef‬را نمایش دوید‪:‬‬
‫‪$ head-13 namef |tail-1| mail -s sort2 sabt‬‬

‫فرمان ‪tac‬‬
‫ومان طور که قبالً گفتیم فرمان ‪ cat‬محتویات یک فایل را نمایش میدود‪:‬‬
‫‪$ cat namef‬‬
‫و فرمان ‪ tac‬که عکس فرمان ‪ cat‬اس معکوس فایل را نمایش میدود‪:‬‬
‫‪$ tac file-name‬‬
‫‪$ tac namef‬‬

‫فرمان ‪rev‬‬
‫این فرمان وم فیلدوا و محتویات داخل آنوا را برعکس میکند‪:‬‬
‫‪$ rev namef‬‬
‫‪:‬‬ ‫این فرمان وم کاری نمیکند‪ ،‬فقط معکوسِ معکوس اس‬
‫‪$ rev namef |rev‬‬

‫فرمان ‪less‬‬
‫‪$ man less‬‬
‫فرمان ‪ cat‬اطالعات را نمایش می دود ولی در صورتی که اطالعات بیش از یک صفحه باشد‪ ،‬چون‬
‫‪ scroll‬میشود ومه اطالعات را نمیتوانیم در یک صفحه ببینیم‪ .‬میتوانیم از ‪ less‬استفاده نماییم‪.‬‬
‫‪$ less nemef‬‬
‫فرمان ‪ more‬و ‪ most‬و ‪ less‬کاری که انجام می دوند عبارت اس از اینکه صفحه به صفحه نمایش‬
‫ال از ‪ less‬استفاده‬
‫میدوند و در لینوکس بیشتر از ‪ less‬استفاده میشود‪ .‬حتی دستور ‪ man‬عم ً‬
‫می کند تا صفحات راونما را نشان دود‪ .‬خصوصی مهم ‪ less‬این اس که امکان ‪ search‬را به ما‬
‫میدود‪ .‬وقتی فایل نمایش داده شد با زدن ‪ /‬و نوشتن کلمه مورد نظر آن را پیدا کنیم‪ .‬خصوصیات‬
‫‪ less‬بسیار شبیه به ویرایشگر متن ‪ vim‬و ‪ vi‬اس ‪ ،‬که در ادامه به آن خواویم پرداخ ‪.‬‬
‫‪$ less file-name‬‬
‫و اگر رشته مورد نظر را پیدا نکرد پیغام ‪ Pattern not found‬را میدود‪.‬‬
‫دستور زیر کلماتی که ‪ ۲‬تا ‪ oo‬ندارند را نمایش دود‪.‬‬
‫‪$ less namef‬‬
‫‪/!oo‬‬

‫فرمان ‪watch‬‬
‫که میتواند یک فرمان داده شده را مرتب‬ ‫فرمان دیگری که بررسی میکنیم فرمان ‪ watch‬اس‬
‫‪۸۷‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫اجرا کند‪:‬‬
‫‪$ watch-n1 -d cat /proc/interrupts‬‬
‫یک بار فایل‪ /proc/interrupts‬خوانده شده و روی مانیتور نمایش‬ ‫با اجرای دستور باال ور یک ثانیه‬
‫داده میشود‪ .‬وقتی این فرمان را اجرا کنید تغییرات ور ‪ device‬یعنی اینکه چند تا وقفه ایجاد شده‬
‫را نشان میدود‪ .‬آرگومان ‪ –d‬تفاوت خروجیوا را در وربار اجرای دستور با حال قبل ‪highlight‬‬
‫میکند‪ .‬برای خاتمهی این دستور کافی اس کلیدوای ‪ control + c‬را فشار دوید‪.‬‬

‫فرمان ‪grep‬‬
‫این فرمان یک رشته را در یک فایل پیدا میکند‪:‬‬
‫‪$ grep cpu /proc/cpuinfo‬‬
‫و فایلی که در آن جستجو انجام میشود‬ ‫در دستور باال کلمهی مورد جستجو ‪ cpu‬اس‬
‫‪ /proc/cpuinfo‬اس ‪.‬‬
‫مثال‪ :‬صفحهی راونمای دستور ‪ grep‬را بخوانید و بگویید که چطور میتوان کاری کرد که‬ ‫‪‬‬
‫وقتی رشته را پیدا کرد آن را رنگ بزند‪.‬‬
‫پاسخ‪:‬‬ ‫‪‬‬

‫'‪$ alias grep = 'grep --color= auto‬‬


‫حاال میخواویم با ‪ grep‬مدل ‪ cpu‬را پیدا کنیم‪:‬‬
‫‪$ grep cpu /proc/cpuinfo‬‬
‫‪$ grep model/proc/cpu info‬‬
‫‪$ grep "model name" /proc/ cpuinfo‬‬
‫‪ grep‬وستند با مراجعه به صفحهی راونمای‬ ‫تمرین‪ :‬دستورات ‪ fgrep‬و نیز ‪ egrep‬نیز از خانوادهی‬
‫آنوا مشخص کنید که چه امکانات دیگری دارند‪.‬‬
‫تمرین‪ :‬فرمان ‪ man 7 regex‬را بزنید و توضیح دوید که ‪ regex‬چه کاربردی دارد‪.‬‬

‫ساخت فایل از خروجی یک فرمان‬


‫حاال می خواویم ببینیم اگر بخواویم محتویات یک فایل را به جای اینکه نمایش دویم در یک فایل‬
‫بریزیم چه کاری باید انجام دویم‪ .‬به دستور زیر دق کنید‪:‬‬
‫‪$ cat namef > a‬‬
‫بنابراین برای اینکه خروجی یک فایل را به جای اینکه نمایش دویم در فایلی نگه داریم از عالم‬
‫> یعنی ‪ redirection‬استفاده می کنیم‪ .‬با این دستور یک فایل درس شد به اسم ‪ a‬و محتویات‬
‫‪ namef‬داخل آن اس ‪.‬‬
‫مثال‪ :‬فقط اسامی را در فایلی به نام ‪ name‬بریزید‪:‬‬
‫‪$ cut-c1-10namef > name‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۸۸‬‬

‫مثال‪ :‬فقط نامخانوادگی را در فایلی به نام ‪ family‬بریزید‪:‬‬


‫‪$ cut -c18-30 namef > family‬‬
‫سؤال‪ :‬اگر دو تا عالم > داشته باشیم یعنی ‪ $‬به چه معنی اس ؟‬ ‫‪‬‬
‫‪ ‬یعنی اگر فایلی به نام ‪ family‬در مثال باال وجود دارد در انتهای آن اضافه میکند و محتویات‬
‫فایل قبلی تغییر نمینماید‪ ،‬ولی اگر فایل وجود نداشته باشد فایل ‪ family‬را خودش میسازد‪.‬‬

‫ساخت دایرکتوری‬
‫برای ساختن دایرکتوری در لینوکس از فرمان ‪ mkdir‬استفاده میکنیم‪ .‬البته ساخ دایرکتوری در‬
‫لینوکس یک محدودی دارد و آن این اس که بیشتر از ‪ ۳۳۰۰‬تا دایرکتوری زیر وم نمیتوانیم‬
‫بسازیم و البته در فایل سیستم وای جدید این محدودی وم از بین رفته اس ‪ .‬برای اینکه ببینیم‬
‫‪ help‬داریم یا ‪ manual‬چک میکنیم‪:‬‬
‫‪$ type mkdir‬‬
‫برای ساخ دایرکتوری این فرمان را میزنیم‪:‬‬
‫‪$ mkdir test‬‬
‫ومچنین با یک فرمان ‪ mkdir‬میتوانیم چند دایرکتوری در کنار وم بسازیم‪:‬‬
‫‪$ mkdir a1 a2 a‬‬
‫‪ ‬نکته‪ :‬یک دایرکتوری بهطور پیش فرض حجمش ‪ ۴k‬اس ‪.‬‬
‫مثال‪ :‬فقط و فقط با یک فرمان پنج دایرکتوری زیر وم ایجاد کنید‪.‬‬ ‫‪‬‬

‫‪$ mkdir -p d1/d2/d3/d4/d5‬‬


‫که به آرگومان ‪ –p‬توجه کنید که مخفف ‪ parent‬اس ‪.‬‬ ‫‪ ‬نکته‪ :‬در حل این مثال مهم اس‬

‫ساخت فایل‬
‫< و بعد از آن اسم فایل را مینویسیم و روش دوم استفاده‬ ‫فایل عالم‬ ‫در روش اول برای ساخ‬
‫از فرمان ‪ touch‬اس ‪:‬‬
‫‪$ >file‬‬
‫‪$ touch file‬‬
‫وقتی یک فایل میسازیم بهطور پیش فرض سایز آن صفر اس ‪.‬‬
‫‪ ‬نکته‪ :‬در لینوکس میتوانیم به جز ‪ /‬ور کاراکتری دیگری را در اسم فایل داشته باشیم‪.‬‬
‫بهعنوانمثال اسم یک فایل میتواند بهصورت زیر دو تا ‪ space‬و مواردی از این قبیل باشد‪:‬‬

‫"">‪$‬‬
‫"">‪$‬‬
‫‪$ ls -l‬‬
‫‪total 42212‬‬
‫‪-rw-r--r-- 1 n.pardis 502 0 May 23 18:47‬‬
‫‪-rw-r--r-- 1 n.pardis 502 0 May 23 18:47‬‬
‫‪۸۹‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫ومچنین بهعنوانمثال میتوانیم یک فایل بسازیم و ومزمان یک فرمان را وم اجرا کنیم و خروجی‬
‫آن را در آن فایل قرار دویم‪:‬‬
‫‪$ > np1 date‬‬
‫‪$ cat np1‬‬
‫‪Mon May 23 18:49:57 IRDT 2011‬‬
‫دارد؟ راونمایی از ‪ man set‬یا ‪help set‬‬ ‫تمرین‪ :‬توضیح دوید که فرمان ‪ set‬یا ‪ unset‬چه کاربردی‬
‫استفاده نمایید و خروجی ور کدام را بررسی کنید‪.‬‬

‫فرمان ‪exec‬‬
‫ورگاه بخواویم فرمانی را اجرا کنیم که جایگزین پروسس فعلی شود از این فرمان استفاده میکند‪.‬‬
‫مثالً میخواویم یک دایرکتوری به نام ‪ abcd‬در مسیر جاری بسازیم و تمام و دیگر با ‪ shell‬کاری‬
‫نداریم‪ .‬در این صورت میزنیم ‪ $ exec mkdir abcd‬که به جای پروسس ‪ shell‬که در حال حاضر در‬
‫حال اجرا اس و ما می توانیم در آن دستورات خود را وارد کنیم‪ ،‬پروسسی را جایگزین خواود کرد‬
‫که دستور ‪ mkdir abcd‬را اجرا کند‪ .‬دستور ‪ mkdir abcd‬وم بعد از مدت کوتاوی خاتمه مییابد و‬
‫در نتیجه ویچ اثری از پروسس ‪ shell‬و ومینطور پروسس ‪ mkdir abcd‬بعد از مدتی نخواود بود‪،‬‬
‫البته یک دایرکتوری با نام ‪ abcd‬در صورتی که در میسر مورد نظر حق ایجاد دایرکتوری را داشته‬
‫باشید‪ ،‬ساخته خواود شود‪.‬‬

‫استفاده از دستورات ‪ cut‬و ‪less‬‬


‫شدهاند و به این صورت‬ ‫در لینوکس فایلی داریم به نام ‪ passwd‬که تمام ‪userId‬وا در آن ثب‬
‫میتوانیم محتویات آن را ببینیم‪:‬‬
‫‪$ less/etc/ passwd‬‬
‫مربوط به ور ‪ user Id‬با دو نقطه‬ ‫محتویات داخل این فایل با عالم ‪ :‬از وم جدا شدهاند و اطالعات‬
‫از ‪ user Id‬بعدی جدا میشود‪ .‬این فایل حاوی اطالعات ‪ userid‬و ‪ password‬و شماره ‪ Id‬و ‪ ...‬اس ‪..‬‬
‫پس فایل ‪ passwd‬آدرس و شماره و ‪ ...‬شما را نگه میدارد‪ .‬ما میتوانیم این فایل را تغییر دویم‪.‬‬
‫اگر بخواویم مشخصه ‪ finger‬یک شناسه را تغییر بدویم‪:‬‬
‫‪$ chfn‬‬
‫‪Password‬‬
‫‪Name‬‬
‫‪Office‬‬
‫‪Phone‬‬
‫اگر بخواویم ببینیم بهعنوانمثال‪:‬‬
‫‪$ finger n.pardis‬‬
‫را به ‪ userid‬به نام‬ ‫مثال‪ :‬میخواویم تمام ‪ userid‬وا را از فایل ‪ passwd‬جدا کنیم و محتویات آن‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۹۰‬‬

‫‪ sabt‬ارسال کنیم‪.‬‬
‫‪$ cut -f1 -d: /etc/ passwd |mail -s uid sabt‬‬
‫آرگومان ‪ –d‬مخفف ‪ delimiter‬به معنی جداکننده میباشد و در این فایل جداکننده دو نقطه‪:‬‬
‫میباشد‪.‬‬
‫فرض کنید میخواویم این فایل را ‪ sort‬کرده و ایمیل کنیم‪:‬‬
‫‪$ cut -f1 -d: /etc/passwd |sort| mail-s uid sabt‬‬
‫میخواویم فیلد اوّل و پنجم آن را جدا کنیم‪:‬‬
‫‪$ cut -f1,5 -d: /etc/passwd |sort| mail-s uid sabt‬‬
‫اگر بخواویم ‪ history‬خودمان را ‪ mail‬کنیم به این صورت عمل میکنیم‪:‬‬
‫‪$ history |mail-s myhis sabt‬‬
‫برای ومه ایمیل کنیم به جای اینکه استتم ومه ‪ userid‬وا را بنویستتیم از‬ ‫اگر بخواویم ‪history‬مان‬
‫‪ users‬استفاده میکنیم‪.‬‬
‫`‪$ history | mail-s my hist `users‬‬

‫بررسی سیگنالها‬
‫یک برنامه وقتی میآید در حافظه باید آنقدر محکم باشد که از بین نرود‪ .‬یکی از عالئمی که یک‬
‫برنامه را متوقف میکند و یا میکشد ترکیب کلیدوای ‪ ctrl+c‬اس ‪( .‬البته این کلیدوا در محیط‬
‫گرافیکال معادل ‪ cut‬وستند‪ ،‬ولی در خط فرمان معنای خاص خود را دارد) که وقتی به یک نرمافزار‬
‫میرسد آن را از بین میبرد و میکشد‪.‬‬
‫به ومین دلیل اس که وقتی ‪ second pass‬را میخواود ‪ ctrl+c‬میزنیم که آن را میکشد‬
‫و وارد میشود‪ .‬به ‪ ctrl+c‬سیگنال میگوییم‪ .‬ما سیگنالوای مختلفی داریم‪ .‬که سه تا عکسالعمل‬
‫میتوانیم در مقابل ور سیگنال داشته باشیم‪:‬‬
‫‪action )1‬‬
‫‪ignore )۲‬‬
‫‪default )۳‬‬
‫دو سیگنال معروفی که داریم یکی ‪ ctrl+c‬و دیگری ‪( Hang up‬شماره ‪( )1‬ارتباط مخاطب با پروسس‬
‫قطع شده) اس ‪ .‬حاال این فرمان را میزنیم تا ببینیم چند تا سیگنال داریم‪:‬‬
‫‪>> kill -l‬‬
‫‪ Hangup‬اس و‬ ‫ما ‪ ۶۴‬سیگنال داریم که لینوکس ومه را ‪ support‬میکند‪ .‬که یکی از آنوا‬
‫‪( interrupt‬شماره ‪ )۲‬ومان ‪ ctrl+c‬اس ‪ vim .‬را نمیتوان با ‪ ctrl+c‬کش ‪ .‬ور سیگنال یک کد دارد‪.‬‬
‫ما به وسیلهی ‪ trap‬یعنی فرمان ‪ trap‬برای سیگنال میتوانیم تله بگذاریم و جلوی اجرا شدنش را‬
‫بگیریم‪ trap .‬یکی از فرمانوای داخلی ‪ bash‬اس میتوان به وسیله آن عکسالعمل مناسب را در‬
‫مقابل سیگنال اتخاذ نمود و توصیه میشود‪ ،‬دستور ‪ trap‬را در ابتدای ‪ script‬گذاش ‪ .‬با این فرمان‬
‫میگوییم ور وق‬
‫‪۹1‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫‪>> trap 'cal' 2‬‬


‫سیگنال شماره (‪ )۲‬یعنی ‪ ctrl+c‬آمد‪ ،‬تقویم را اجرا کن‪ .‬یعنی سیگنال ‪ ۲‬را اجرا نمیکند و تقویم‬
‫را اجرا میکند‪ .‬اگر فرمان زیر را وارد کنیم دوباره ‪ ctrl+c‬کار میکند‪.‬‬
‫‪>> trap '' 2‬‬
‫حاال اگر دو تا کوتیشن را به وم بچسبانیم و بعد ‪ ctrl+c‬را بزنیم میبینیم که اجرا نمیشود‪ .‬وقتی‬
‫‪ space‬بینشان باشند یعنی ‪ ctrl+c‬را بگیرد ولی ویچ کاری نکند و اگر دو تا کوتیشن به وم چسبیده‬
‫باشند یعنی ‪ ignore‬میکند‪ .‬در بین دو کوتیشن میتوانیم ور چیزی بگذاریم‪ .‬مثالً میتوانیم ‪echo‬‬
‫‪ salam‬یا اجرای یک نرم افزار را در نظر بگیریم‪ .‬اگر خواستیم دوباره به حال پیشفرض برگردانیم‪،‬‬
‫کافی اس بین دو تا کوتیشن یک ‪ blank‬بگذاریم‪ .‬برای دیدن منوآل ‪ signal‬وا که خیلی وم مهم‬
‫اس این فرمان را بزنید‪:‬‬
‫‪>> man -a signal‬‬

‫مرجع فرمانها‬
‫در این قسم فرمانوای پرکاربرد و مهم لینوکس را آوردهایم‪ .‬ورجا فرمانی برای شما تازه بود کافی‬
‫ال برای فرمان ‪ ls‬بزنید ‪ .man ls‬جه یادگیری بهتر‬ ‫اس که به صفحهی ‪ man‬آن مراجعه کنید‪ ،‬مث ً‬
‫فرمانوا و استفاده از صفحات راونمای لینوکس سعی کنید که با صفحات ‪ man‬بیشتر آشنا شوید‬
‫و از آنوا بیشتر استفاده کنید و کمتر به صفحات وب و اینترن مراجعه کنید‪ .‬توجه داشته باشید‬
‫ال جدید باشد‪ ،‬که‬‫که این قسم حال مرجع دارد و ممکن اس برخی از فرمانوا برای شما کام ً‬
‫فرص را برای یادگیری بیشتر شما فراوم میآورد‪ .‬ممکن اس برخی از فرمانوای زیر بر روی‬
‫سیستم شما نصب نباشد که در این صورت باید آنوا را نصب کنید (فرمانوای ‪ yum install‬و ‪apt-‬‬
‫‪ get install‬را در قبالً یاد گرفتهاید)‪.‬‬

‫اطالعات سیستم‬
‫توضیحات‬ ‫فرمان‬
‫اطالع از زمان و تاریخ و ومچنین تنظیم آن‬ ‫‪date‬‬
‫تقویم ماه جاری را نشان میدود‬ ‫‪cal‬‬
‫‪ uptime‬فعلی سیستم‪ ،‬تعداد کاربران و ومچنین‬
‫‪uptime‬‬
‫‪ load average‬را نشان میدود‬
‫لیس کاربرانی که بر روی سیستم در حال کار‬
‫وستند و برخی اطالعات مربوط به آنوا را نشان‬ ‫‪w‬‬
‫میدود‪.‬‬
‫نام کاربری که با آن ‪ login‬کردهاید را نشان میدود‪.‬‬ ‫‪whoami‬‬
‫نام کاربری‪ ،‬مشخصات ترمینال‪ ،‬تاریخ و ساعتی را که‬ ‫‪who am i‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۹۲‬‬

‫توضیحات‬ ‫فرمان‬
‫‪ login‬کردهاید نشان میدود‪.‬‬
‫اطالعاتی را در بارهی ‪ user‬نشان میدود‪.‬‬ ‫‪finger user‬‬
‫اطالعات مربوط به کرنل سیستم را نشان میدود‪.‬‬
‫برای مشاودهی اطالعات ‪ release‬از دستور‬ ‫‪uname –a‬‬
‫‪ uname –r‬استفاده کنید‪.‬‬
‫اطالعات مربوط به ‪ CPU‬را نشان میدود‪ .‬برای‬
‫اینکه متوجه شوید ‪ CPU‬کام یوترتان از چه‬
‫مجموعه دستورالعملوایی (‪)instruction set‬‬ ‫‪cat /proc/cpuinfo‬‬
‫پشتیبانی میکند فرمان زیر را وارد کنید‪:‬‬
‫‪grep flags /proc/cpuinfo‬‬
‫اطالعات مربوط به ‪ RAM‬را نشان میدود‪.‬‬ ‫‪cat /proc/meminfo‬‬
‫اطالعات مربوط به مصرف ‪ memory‬و ‪ swap‬را‬
‫‪free‬‬
‫نشان میدود‪.‬‬

‫کلیدهای میانبر‪ 1‬در خط فرمان‬


‫توضیح‬ ‫کلید‬
‫اجرای فرمان نوشته شده‬ ‫‪enter‬‬
‫نمایش دستور قبلی‬ ‫‪ up arrow‬فلش باال‬
‫با تایپ کردن بخشی از دستوری که قبالً استفاده کردهاید آن را برای شما‬ ‫‪Ctrl + r‬‬
‫جستجو میکند و با فشار دادن ‪ enter‬میتواند بدون تایپ کامل آن‪ ،‬آن‬
‫را اجرا کنید‪.‬‬
‫فرمان فعلی را متوقف میکند‪ .‬با فرمان ‪ fg‬میتوانید آن را در جلوی خط‬ ‫‪Ctrl + z‬‬
‫فرمان ادامه دوید یا با فرمان ‪ bg‬میتواند آن را در پش صحنه ادامه‬
‫دوید‪ .‬دستور ‪ jobs‬فرمانوایی که در پش صحنهی ترمینال فعلی‬
‫وستند را نمایش میدود‪ .‬برای خاتمهی کامل فرمانی که در پش صحنه‬
‫مانده اس با استفاده از دستور ‪ jobs –p‬میتواند از روی شمارهی‬
‫‪ process‬ی که دارند آنوا را ‪ kill‬کنید‪.‬‬
‫فرمان فعلی را ‪ halt‬میکند‪ .‬بنابراین عملیات فعلی ‪ cancel‬میشود و‬ ‫‪Ctrl + C‬‬
‫خط جدیدی در خط فرمان در حال آماده به کار فراوم میشود‪.‬‬
‫صفحهی ترمینال را پاک میکند‪ .‬مشابه فرمان ‪ clear‬عمل میکند‪.‬‬ ‫‪Ctrl + L‬‬
‫امکان ‪ scroll‬کردن در خروجی ‪ command‬ی که اجرای کردهاید را‬ ‫‪command | less‬‬
‫فراوم میآورد‪ .‬استفاده کردن از این ‪ piping‬به ‪ less‬در مواردی که‬
‫خروجی فرمان اجرا شده بیش از یک صفحه اس ‪ ،‬ضروری اس ‪ .‬با‬

‫‪1‬‬ ‫‪shortcuts‬‬
‫‪۹۳‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫توضیح‬ ‫کلید‬
‫استفاده از کلیدوای ‪ shift‬و فلش سر باال و ومچنین ‪ shift‬و فلش سر‬
‫پایین میتوانید در صفحهی ‪ less‬به باال یا پایین ‪ scroll‬کنید‪ .‬برای‬
‫خروج نیز کلید ‪ q‬را فشار دوید‪ .‬مثال‪ls –alR /home | less :‬‬
‫آخرین فرمان اجرا شده در خط فرمان را تکرار میکند‪ .‬این کار با استفاده‬ ‫!!‬
‫از امکانات ‪ history‬انجام میشود‪.‬‬
‫آخرین آرگومان فرمان قبلی را تکرار میکند‪.‬‬ ‫‪command!$‬‬
‫آخرین آرگومان فرمان قبلی را وارد میکند که به شما امکان ویرایش آن‬ ‫)‪Escape +. (a period‬‬
‫را قبل از اجرا کردن را فراوم میکند‪.‬‬
‫به ابتدای خطی که در حال نوشتن فرمان در آن وستید میرود‪.‬‬ ‫‪Ctrl + A‬‬
‫به انتهای خطی که در آن در حال نوشتن فرمان وستید میرود‪.‬‬ ‫‪Ctrl + E‬‬
‫از ‪ session‬فعلی ‪ log out‬میکند‪ .‬مشابه ‪exit‬‬ ‫‪Ctrl + D‬‬
‫کلمه یا آرگومانی را که در سم چپ ‪ cursor‬قرار دارد را ‪delete‬‬ ‫‪Ctrl + W‬‬
‫میکند‪.‬‬

‫فرمانهایی برای یادگیری فرمانهای بیشتر و تازه‬


‫توضیح‬ ‫فرمان‬
‫ال ‪man ls‬‬
‫لیس صفحات ‪ man‬برای ‪ subject‬را بر میگرداند‪ .‬مث ً‬ ‫‪apropos subject‬‬
‫صفحات ‪ man‬شامل کلمهی ‪ keyword‬را بر میگرداند‪.‬‬ ‫‪man –k keyword‬‬
‫صفحهی راونمای فرمان داده شده را نشان میدود‪.‬‬ ‫‪man command‬‬
‫از صحفهی ‪ man‬مورد نظر فایل ‪ pdf‬تهیه میکند که مطالعهی آن راح تر اس ‪.‬‬
‫| ‪man –t man‬‬
‫‪ps2pdf > man.pdf‬‬
‫مسیر کامل مربوط به ‪ command‬داده شده را نشان میدود‪ .‬مثالً ‪ which ls‬بر‬
‫روی سیستم ما ‪ /bin/ls‬را بر میگرداند‪ .‬در صورتی که در دایرکتوری جاری برنامهای‬
‫‪ which command‬دارید که با یک فرمان سیستمی ومنام اس باید آن را بهصورت‪ ./appName‬اجرا‬
‫کنید که ‪ appName‬نام برنامهی شما اس ‪ .‬دستور ‪ which appName‬به شما‬
‫کمک میکند که در این مورد رفع ابهام کنید‪.‬‬
‫مدت زمانی را که طول میکشد فرمان داده شده اجرا شود را نمایش میدود‪.‬‬ ‫‪time commane‬‬
‫مسیروایی را بر روی سیستم که ‪ app‬ممکن اس در آن باشد را نمایش میدود‪.‬‬ ‫‪whereis app‬‬

‫جستجو‬

‫در ‪ file‬وا به دن بال الگوی (‪ )pattern‬داده شتتتتده‬ ‫‪grep pattern files‬‬


‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۹۴‬‬

‫میگردد‪.‬‬
‫بهطور بازگ شتی در می سر دایرکتوری داده شده به دنبال‬ ‫‪grep –r pattern dir‬‬
‫الگو (‪ )pattern‬داده شده میگردد‪.‬‬
‫به دنبال الگوی داده شده در خروجی فرمان ‪command‬‬ ‫‪command | grep pattern‬‬
‫میگردد‪.‬‬
‫تمام نمونه وای مربوط به فایل را در پایگاه داده موجود از‬ ‫‪locate file‬‬
‫فایلوا جستتتجو میکند‪ .‬برای به روز رستتانی پایگاهدادهی‬
‫آن از فرمان ‪ updated‬استفاده کنید‪.‬‬
‫با شروع از دایرکتوری ‪ root‬به دنبال فایل با نام داده شده‬ ‫‪find / -name filename‬‬
‫میگردد‪.‬‬
‫با شتتروع از دایرکتوری ‪ root‬به دنبال فایلی که در نام آن‬ ‫”*‪find / -name “*filename‬‬
‫رشتهی داده شده وجود دارد‪ ،‬میگردد‪.‬‬
‫پتتایگتتاهدادهی مربوط بتته فتتایتتلوتتای موجود در تمتتام‬ ‫‪updated‬‬
‫فایلستتتیستتتتموای الحاق شتتتده به به دایرکتوری ‪root‬‬
‫لینوکس را ایجاد به به روزرسانی میکند‪.‬‬

‫فرمانهای مربوط به کار با فایلها‬


‫توضیح‬ ‫فرمان‬
‫لیس محتویات دایرکتوری را نشان میدود‪.‬‬ ‫‪ls‬‬
‫‪long‬‬ ‫لیس محتویات دایرکتوری جاری را به در فرم‬ ‫‪ls –l‬‬
‫نشان میدود‪ ،‬که حاوی اطالعات بیشتری اس ‪.‬‬
‫لیس فایلوای موجود در دایرکتوری جاری را به ومراه‬ ‫‪ls –F‬‬
‫نوع ور فایل نمایش میدود‪.‬‬
‫دایرکتوری کاری فعلی را به ‪ dir‬داده شده تغییر میدود‪.‬‬ ‫‪cd dir‬‬
‫به دایرکتوری مربوط به خانهی کاربر میرود‪ .‬با دستور‬ ‫‪cd‬‬
‫‪ pwd‬این تغییر را مشاوده کنید‪.‬‬
‫دایرکتوری با نام ‪ dir‬میسازد‪.‬‬ ‫‪mkdir dir‬‬
‫دایرکتوری حاضر را نمایش میدود‪.‬‬ ‫‪pwd‬‬
‫تذکر‪ :‬فایلوای حذف شده با این فرمان به سختی قابل‬ ‫‪rm name‬‬
‫بازیابی اس ‪ .‬بهتر اس بگوییم که قابل بازیابی نیس ‪ .‬در‬
‫استفاده از این فرمان بسیار ذق شود‪.‬‬
‫فایل یا دایرکتوری که ‪ name‬نام دارد را پاک میکند‪.‬‬
‫برای دایرکتوری معموالً از ‪ rmdir‬و برای دایرکتوری‬
‫حاوی اطالعات از ‪ rm –r‬استفاده میشود‪.‬‬
‫دایرکتوری با نام داده شده را حذف میکند‪ .‬به تذکر‬ ‫‪rm –r dir‬‬
‫فرمان ‪ rm name‬مراجعه نمایید‪.‬‬
‫‪۹۵‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫توضیح‬ ‫فرمان‬
‫جه حذف فایل داده شده از ور تالشی استفاده میکند‪.‬‬ ‫‪rm –f file‬‬
‫برای اطالعات بیشتر به صفحهی ‪ man rm‬مراجعه کنید‪.‬‬
‫به تذکر فرمان ‪ rm name‬مراجعه نمایید‪.‬‬
‫تالش جه حذف کامل یک دایرکتوری و تمام‬ ‫‪rm –rf dir‬‬
‫زیردایرکتوریوا و فایلوای درون آنوا‪.‬‬
‫به تذکر فرمان ‪ rm name‬مراجعه نمایید‪.‬‬
‫‪ file1‬را به ‪ file2‬ک ی میکند‪ .‬یعنی فایل با نام ‪ file1‬را‬ ‫‪cp file1 file2‬‬
‫ک ی میکند و آن را با نام ‪ paste ،file2‬میکند‪.‬‬
‫دایرکتوری ‪ dir1‬را به ‪ dir2‬ک ی میکند‪ .‬در صورتی که‬ ‫‪cp –r dir1 dir2‬‬
‫‪ dir2‬وجود نداشته باشد‪ ،‬آن را میسازد‪.‬‬
‫فایل داده شده را به مسیر داده شده ک ی میکند‪.‬‬ ‫‪cp –i file /home/dirname‬‬
‫فایل داده شده را به مسیر داده شده انتقال میدود‪.‬‬ ‫‪mv –i file /home/dirname‬‬
‫یک لینک نرم به فایل داده شده ایجاد میکند (مشابه‬ ‫‪ln –s file link‬‬
‫‪ shortcut‬در ویندوز)‪.‬‬
‫فایل با نام داده شده را در صورتی که وجود نداشته باشد‪،‬‬ ‫‪touch file‬‬
‫ایجاد میکند‪ ،‬و در صورتی که باشد‪ attribute ،‬وایش را‬
‫به روز میکند‪ .‬میتوانید با دستور ‪ attribute ،chattr‬وای‬
‫فایل را مشاوده کنید‪.‬‬
‫ورودی استاندارد را به فایل با نام داده شده مینویسد‪.‬‬ ‫‪cat > file‬‬
‫محتویات فایل با نام داده شده نمایش میدود‪.‬‬ ‫‪cat file‬‬
‫محتویات فایل با نام داده شده را بهصورت صفحه به‬ ‫‪less file‬‬
‫صفحه و با امکان ‪ scroll‬کردن نمایش میدود‪.‬‬
‫‪ 1۰‬خط اول فایل را نشان میدود‪.‬‬ ‫‪head file‬‬
‫بیس خط اول فایل را نشان میدود‪.‬‬ ‫‪head -20 file‬‬
‫‪ 1۰‬خط آخر فایل را نشان میدود‪.‬‬ ‫‪tail file‬‬
‫بیس خط آخر فایل را نشان میدود‪.‬‬ ‫‪tail -20 file‬‬
‫‪ 1۰‬خط آخر فایل را نشان میدود با این تفاوت که به‬ ‫‪tail –f file‬‬
‫ازای خطوط تازهای که افزوده میشود‪ ،‬آنوا را نمایش‬
‫میدود‪ .‬در واقع فایل را ‪ follow‬میکند‪.‬‬
‫تبدیل کردن ‪ tab‬به ‪space‬‬ ‫جه‬ ‫‪expand‬‬
‫برای تبدیل ‪ space‬وا به ‪tab‬‬ ‫‪unexpand‬‬
‫ابزاری برای قالب بندی و فرم کردن پاراگرافوا در‬ ‫‪fmt‬‬
‫فایلوای متنی‬
‫امکانی شبیه ‪ query‬پایگاهدادهوا جه اتصال محتویات‬ ‫‪join‬‬
‫دو فایل بر اساس فیلدوای مشترک‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۹۶‬‬

‫توضیح‬ ‫فرمان‬
‫جه ادغام کردن خطوط فایلوا‬ ‫‪paste‬‬
‫شمارهگذاری خطوط فایلوا‬ ‫‪nl‬‬
‫آماده کردن فایلوای متنی برای پرین و چاپ‬ ‫‪pr‬‬
‫یکی از قویترین دستوروا برای ویرایش متن‪ .‬حتماً ‪man‬‬ ‫‪sed‬‬
‫‪ sed‬را مشاوده کنید‪.‬‬
‫تکهتکه کردن یک فایل به چند قطعه‬ ‫‪split‬‬
‫جایگزینی یا حذف کاراکتروای یک رشته‪ ،‬فایل یا‬ ‫‪tr‬‬
‫‪stream‬‬
‫تعداد خطوط‪ ،‬کلمات و کاراکتروا را در یک فایل‬ ‫‪wc‬‬
‫میشمارد‪.‬‬
‫از ورودی استاندارد خوانده و در فایلوا و خروجی‬ ‫‪tee‬‬
‫استاندارد مینویسد‪ .‬حتماً ‪ man tee‬را مشاوده کنید‪.‬‬
‫دستوراتی را از روی جریان ورودی اجرا میکند‪ .‬حتماً‬ ‫‪xargs‬‬
‫‪ man xargs‬را مشاوده نمایید‪.‬‬

‫فشردهسازی و پشتیبانگیری‬
‫توضیح‬ ‫فرمان‬
‫یک فایل با نام ‪ file.rar‬از روی مجموع فایلوای داده‬ ‫‪tar cf file.tar files‬‬
‫شده میسازد‪ .‬برای اطالعات بیشتر به ‪ man tar‬مراجعه‬
‫کنید‪.‬‬
‫فایل داده شده را ‪ extract‬میکند‪.‬‬ ‫‪tar xf file.rar‬‬
‫از روی فایلوای داده شده یک فایل فشرده شده با‬ ‫‪tar czvf file.tar.gz files‬‬
‫استفاده از ‪ Gzip‬با نام ‪ file.tar.gz‬میسازد‪.‬‬
‫فایل ‪ file.tar.gz‬را با ‪ extract‬میکند‪.‬‬ ‫‪tar xzvf file.tar.gz‬‬
‫فایل داده شده را فشرده میکند و نام آن را به ‪file.gz‬‬ ‫‪gzip file‬‬
‫تغییر میدود‪.‬‬
‫فایل فشرده را باز میکند و نام آن را به ‪ file‬تغییر‬ ‫‪gzip –d file.gz‬‬
‫میدود‪.‬‬

‫ابزارها و فرمانهای پرینت‬


‫توضیح‬ ‫فرمان‬
‫‪ daemon‬پرین را اجرا میکند‪.‬‬ ‫‪/etc/rc.d/init.d/lpd start‬‬
‫‪ daemon‬پرین را متوقف میکند‪.‬‬ ‫‪/etc/rc.d/init.d/lpd stop‬‬
‫‪۹۷‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫وضعی ‪ daemon‬پرین را نمایش میدود‪.‬‬ ‫‪/etc/rc.d/init.d/lpd status‬‬


‫لیس کاروای موجود در صف پرین را نشان میدود‪.‬‬ ‫‪lpq‬‬
‫جه حذف کاروا از صف پرین به کار میرود‪.‬‬ ‫‪lprm‬‬
‫جه پرین یک فایل به کار میرود‪.‬‬ ‫‪lpr‬‬
‫ابزاری جه کنترل پرنتر‬ ‫‪lpc‬‬
‫جه پرین کردن صفحهی ‪ man‬نمایش داده شده‬ ‫‪man subject | lpr‬‬
‫استفاده میشود‪.‬‬
‫جه پرین کردن صفحهی ‪ man‬داده شده بهصورت‬ ‫‪man –t subject | lpr‬‬
‫خروجی ‪ Postscript‬به کار میرود‪.‬‬
‫جه اجرای واسط گرافیکی تنظیمات ‪ printer‬به کار‬ ‫‪printtool‬‬
‫میرود‪.‬‬

‫شبکه‬
‫توضیح‬ ‫فرمان‬
‫لیس آدرسوای ‪ IP‬تمام دستگاهوای ماشین محلی را نمایش میدود‪.‬‬ ‫‪ifconfig‬‬
‫‪ eth0‬را ‪ down‬میکند‪ .‬مشابه فرمان‬ ‫‪ifconfig eth0 down‬‬
‫‪ifdown eth0‬‬
‫عمل میکند‪ .‬البته استفاده از‬
‫‪ ifconfig eth0 down‬ارحج اس ‪.‬‬
‫‪ eth0‬را ‪ up‬میکند‪ .‬مشابه فرمان‬ ‫‪ifconfig eth0 up‬‬
‫‪ifdown eth0‬‬
‫اس ‪ .‬البته استفاده از‬
‫‪ifconfig eth0 up‬‬
‫ارجح اس ‪.‬‬
‫‪ host‬داده شده را ‪ ping‬میکند و خروجی را نمایش میدود‪ .‬جه بررسی‬ ‫‪ping host‬‬
‫متصل بودن اینترن یا روشن بودن ‪ host‬مورد نظر یا درس کار کردن‬
‫سیستم ‪ ،dns‬ومچنین تأخیر شبکه کاربرد دارد‪.‬‬
‫اطالعات ‪ whois‬مربوط به دامین داده شده را نمایش میدود‪.‬‬ ‫‪whois domain‬‬
‫اطالعات ‪ DNS‬دامین داده شده را نمایش میدود‪.‬‬ ‫‪dig domain‬‬
‫عمل ‪ reverse lookup‬را برای ‪ host‬داده شده انجام میدود‪.‬‬ ‫‪dig –x host‬‬
‫جه دانلود فایل به کار میرود‪ .‬در قسم ‪ file‬باید ‪ URL‬داده شود‪.‬‬ ‫‪wget file‬‬
‫دانلود متوقف شده را ادامه میدود‪.‬‬ ‫‪wget –c file‬‬
‫جه دانلود در پش صحنه به کار میرود‪ .‬در صورتی که بهصورت ‪ remote‬به‬ ‫‪wget –b file‬‬
‫یک ‪ host‬متصل وستید‪ ،‬با اجرای این دستور‪ ،‬با بسته شدن ‪ console‬شما‬
‫دانلودتان متوقف نمیشود‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی ) ‪(LPIC-1‬‬ ‫‪۹۸‬‬

‫‪SSH‬‬
‫توضیح‬ ‫فرمان‬
‫مورد نظر با نام کاربری داده شده‪.‬‬ ‫اتصال به واس‬ ‫‪ssh user@host‬‬
‫اتصال به واس داده شده با نام کاربری و پورت مشخص‬ ‫‪ssh –p port user@host‬‬
‫اضافه نمودن کلید خودتان به ‪ host‬داده شده‪ ،‬جه ورود با‬ ‫‪ssh-copy-id user@host‬‬
‫استفاده از کلید و بدون رمز عبور‪.‬‬
‫ال اگر اتصال شما‬
‫دستورات را بدون وقفه و قطعی اجرا میکند (مث ً‬ ‫‪nohup‬‬
‫‪ dial-up‬باشد با قطع شدن اینترن ‪ ،‬به کمک این دستور‪ ،‬فرمان بر‬
‫روی سرور دوردس ادامه خواود یاف )‪ .‬خروجی را در یک فایل‬
‫مینویسد‪.‬‬

‫مدیریت کاربران‬
‫توضیح‬ ‫فرمان‬
‫ایجاد یک کاربر جدید با نام کاربری داده شده‬ ‫‪adduser accontname‬‬
‫تغییر پسورد کاربر داده شده‪ .‬در صورتی که نام ویچ‬ ‫‪passwd accountname‬‬
‫کاربری وارد نشود‪ ،‬کاربر فعلی در نظر گرفته میشود‬
‫(ومان نام کاربری که با آن ‪ login‬کردهاید)‪.‬‬
‫ورود بهعنوان ‪ superuser‬از ‪ login‬فعلی‬ ‫‪su‬‬
‫خروج از ‪ login‬فعلی‬ ‫‪exit‬‬

‫مدیریت ‪ process‬ها‬
‫توضیح‬ ‫فرمان‬
‫پروسسوای فعال بر روی سیستم را نمایش میدود‪.‬‬ ‫‪ps‬‬
‫اگر این فرمان را با ‪ shell‬کاربر ‪ root‬اجرا کنید‪ ،‬تمام پروسسوای فعال بر روی‬ ‫‪ps –aef‬‬
‫سیستم را به شما نمایش میدود‪ .‬فرض کنید میخواوید ببینید که چند‬
‫ویرایشگر ‪ vim‬باز اس ‪:‬‬
‫‪ps –aef | grep vim‬‬
‫پروسسوای فعال بر روی سیستم را نمایش میدود و بر اساس فاکتوروای‬ ‫‪top‬‬
‫مختلف آنوا را مرتب میکند‪.‬‬
‫نسخهی توسعه یافتهی دستور ‪ top‬اس ‪.‬‬ ‫‪htop‬‬
‫پروسس با ‪ pid‬داده شده را ‪ kill‬میکند‪ .‬در استفاده از این دستور بسیار دق‬ ‫‪kill -9 pid‬‬
‫کنید‪.‬‬
‫بررسی میکند که آیا پروسسی با ‪ pid‬داده شده بر روی سیستم وجود دارد یا‬ ‫‪kill -0 pid‬‬
‫خیر‪ .‬ویچ تغییری بر روی آن پروسس اعمال نمیکند‪.‬‬
‫تمام پروسسوایی که نامشان ‪ proc‬اس را ‪ kill‬میکند‪ .‬در استفاده از این‬ ‫‪killall proc‬‬
‫دستور بسیار دق کنید‪.‬‬
‫‪۹۹‬‬ ‫فصل ‪ ۴‬دستورات لینوکس‬

‫توضیح‬ ‫فرمان‬
‫‪ job‬وای متوقف شده یا موجود در ‪ background‬را نمایش میدود؛ ومچنین‬ ‫‪bg‬‬
‫‪ job‬متوقف شده را در ‪ background‬ادامه میدود و به حال ‪ resume‬در‬
‫میآورد‪.‬‬
‫در صورتی که خروجی فرمان ‪ jobs‬خالی نباشد‪ job ،‬اخیر را به ‪foreground‬‬ ‫‪fg‬‬
‫میآورد‪.‬‬
‫‪ job‬با شمارهی ‪ n‬را به ‪ foreground‬میآورد‪ .‬در صورتی که خروجی دستور‬ ‫‪fg n‬‬
‫‪ jobs‬بیش از یک ‪ job‬باشد استفاده از این فرمان مفید اس ‪.‬‬
‫امکان تعیین اولوی پردازهی مورد نظر به کمک این دستور در ونگام اجرای‬ ‫‪nice‬‬
‫برنامه وجود دارد‪ .‬وضعی به روز شده را به کمک دستور ‪ ps‬میتوانید مشاوده‬
‫کنید‪.‬‬
‫ومانند ‪ ،nice‬ولی بعد از اجرای آن امکان تعیین اولوی وجود دارد‪.‬‬ ‫‪renice‬‬

‫کار با کد منبع و نصب از روی آن‬


‫توضیح‬ ‫فرمان‬
‫اگر این فرمان وا را در دایرکتوری کد منبعی که موجود اس استفاده کنید‪،‬‬ ‫‪./configure‬‬
‫‪make‬‬
‫آن کد را ‪ build‬کرده و س س نصب میکند‪ .‬توجه داشته باشید که فرض بر‬ ‫‪make install‬‬
‫این بوده اس که کد منبع اسکریپ ‪ configure‬دارد‪ .‬در برخی از کدوای‬
‫منبع از دستور ‪ make config‬و س س ‪ make install‬استفاده میشود‪.‬‬
‫مطالعهی فایل ‪ README‬و توضیحات کد منبع قبل از تالش برای نصب‬
‫آن به شدت توصیه میشود‪.‬‬
‫جه نصب یک بستهی ‪ DEB‬که دانلود کردهاید به کار میرود‪ .‬در‬ ‫‪dpkg –i pkg.deb‬‬
‫توزیعوای ‪ Linux Mint ،Ubuntu ،Debian‬و ‪ Xamin‬کاربرد دارد‪.‬‬
‫جه نصب بستهوای ‪ RPM‬موجود بر روی سیستم کاربرد دارد‪ .‬در‬ ‫‪rpm –Uvh pkg.rpm‬‬
‫توزیعوای ‪Scientific ،Oracle enterprise Linux ،Fedora ،RHEL‬‬
‫‪ Linux‬و ‪ Cern Linux‬کاربرد دارد‪.‬‬

‫توقف و راهاندازی‬
‫توضیح‬ ‫فرمان‬
‫جه خاموش کردن (‪ shutdown‬و ‪ )halt‬سیستم به کار میرود‪.‬‬ ‫‪shutdown –h now‬‬
‫ومانند دستور قبلی‪.‬‬ ‫‪halt‬‬
‫بعد از ‪ ۵‬دقیقه سیستم را ‪ reboot‬میکند‪.‬‬ ‫‪shutdown –r 5‬‬
‫سیستم را بالفاصله ‪ reboot‬میکند‪.‬‬ ‫‪shutdown –r now‬‬
‫ومانند دستور قبلی‪.‬‬ ‫‪reboot‬‬
‫در صورتی که سیستم گرافیکی ‪ X‬بر روی ماشین نصب باشد آن را اجرا و فعال میکند‪.‬‬ ‫‪startx‬‬
‫فصل ‪ 5‬فشردهسازی و ‪ backup‬گیری‬

‫اهداف فصل‪:‬‬
‫آشنایی با روشهای فشرده سازی و دالیل آن‬ ‫‪‬‬
‫استفاده از ‪gzip‬‬ ‫‪o‬‬
‫استفاده از ‪zip‬‬ ‫‪o‬‬
‫استفاده از ‪bzip2‬‬ ‫‪o‬‬
‫توانایی ‪ backup‬گیری‬ ‫‪‬‬
‫درک دالیل تهیهی پشتیبان‬ ‫‪‬‬
‫تسلط بر استفاده از فرمان ‪tar‬‬ ‫‪‬‬
‫تسلط بر استفاده از فرمان ‪cpio‬‬ ‫‪‬‬

‫فشردهسازی و تهیهی پشتیبان (یا ومان ‪ backup‬گیری) دو مسالهی بسیار مهم در حفاظ و‬
‫نگهداری اطالعات اس ‪ .‬یک مدیر سیستم خبره توانایی پشتیبانگیری از فایلوا و پارتیشنوا را‪ ،‬با‬
‫روشوای مناسب‪ ،‬میداند و به عالوه از روشوای فشردهسازی جه استفادهی بهینه از فضای‬
‫دیسک بهره میبرد‪ .‬در این فصل چندین روش تهیهی فایلپشتیبان (‪ )backup‬و ومچنین‬
‫فشردهسازی را با وم دنبال خواویم کرد‪.‬‬

‫روشهای فشردهسازی‬
‫ابتدا یک فایل بزرگ به نام ‪ large‬را ومه ک ی میکنیم که روی آن عملیات فشردهسازی را تس‬
‫کنیم‪.‬‬
‫‪>> dd if=/dev/zero of=/tmp/large bs=1M count=1024‬‬
‫‪>> ls -alh large‬‬
‫‪1۰1‬‬ ‫فصل ‪ ۵‬فشردهسازی و ‪ backup‬گیری‬

‫‪ h‬مخفف ‪ human readable‬اس و واحدوای حجم فایلوا را به شکل خواناتری نمایش میدود‪.‬‬
‫دالیل فشردهسازی‪:‬‬
‫‪ )1‬فضای کمتری روی دیسک میگیرد‪.‬‬
‫‪ )۲‬انتقال اطالعات سریعتر اس ‪.‬‬

‫اولین روش‪gzip :‬‬


‫اولین فرمان فشردهسازی که میخوانیم ‪ gzip‬اس ‪.‬‬
‫‪>> man gzip‬‬
‫‪>> gzip large‬‬
‫‪>> file large.gz‬‬
‫‪ gzip‬میتوان از ‪ gunzip‬استفاده کرد ولی حرفهایتر اس که به‬ ‫برای باز کردن یک فایل از حال‬
‫این صورت بنویسیم‪:‬‬
‫‪>> gzip –d large.gz‬‬

‫دومین روش‪zip:‬‬
‫‪>> zip large.zip large‬‬
‫اسم فایل بعد از اینکه ‪ zip‬شد‪ large.zip ،‬میشود‪:‬‬
‫‪>> file large.zip‬‬

‫سوّمین روش‪bzip2 :‬‬


‫‪>> bzip2 large‬‬
‫برای فشردهسازی از دیدگاه کاوش حجم اس ‪ ،‬البته ممکن اس زمان‬ ‫‪ bzip2‬بهترین روش‬
‫به دو روش قبل در برخی مواقع بیشتر شود‪ .‬چون اوّل ‪ sort‬میکند و بعد ‪zip‬‬ ‫فشرده سازی نسب‬
‫میکند‪.‬‬
‫برای اینکه بفهمیم ور کدام از این روشوا چقدر زمان و چقدر ‪ cpu‬مصرف کردهاند فرمان ‪ time‬را‬
‫به روش زیر میزنیم‪:‬‬
‫‪>> time bzip2 large‬‬
‫‪>> time gzip large‬‬
‫‪>> time zip large.zip large‬‬
‫روشوای دیگری وم برای فشردهسازی داریم مثالً ‪ rar‬و ‪ arj‬وم روشوایی برای فشرده سازی‬
‫وستند‪.‬‬
‫‪>> man rar‬‬
‫‪>> rar large‬‬
‫‪>> arj large‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۰۲‬‬

‫نحوهی گرفتن ‪backup‬‬

‫میخواویم یک فایل‪ A=100k‬را ک ی کنیم و از آن ‪ backup‬بگیریم‪ .‬یک فایل ‪ backup‬از سه‬


‫قسم تشکیل شده اس ‪:‬‬
‫‪Header file A Trailer‬‬
‫‪CRC‬‬
‫‪ :Header‬شناسنامهی فایل‬
‫‪ :A‬فایل‬
‫‪ :Trailer‬برای کنترل در مبدأ به کار گرفته میشود و اگر فایل ‪ A‬یک بایتش وم دس بخورد ‪CRC‬‬
‫به وم میریزد‪.‬‬
‫سؤال‪ CRC :‬چیس و تا چند بی امکان تشخیص خطا را دارد؟‬
‫بهعنوانمثال به ما میگویند یک فایل ‪ 1۰۰k‬را از شما میخواویم که به شیراز بفرستید‪ .‬شما‬
‫میتوانید این فایل را روی فالپی یا فلش ک ی کنید‪ .‬یک راه دیگر وم داریم که آن ‪ backup‬اس ‪.‬‬
‫سؤال‪ :‬تفاوت ‪ copy‬و ‪ back up‬چیست؟‬
‫فرمان ‪ copy‬به شناسنامهی داده کاری ندارد و اگر در حین انتقال خراب وم شود ‪error‬ی نمیدود‬
‫و ادامه میدود‪ .‬ممکن اس ‪ permission‬وا و صاحب اصلی فایل عوض شود ولی ‪ back up‬کاری‬
‫که میکند این اس که اوّل یک ‪ header‬میگذارد بعد ‪ A‬را میگذارد و س س یک ‪ trailer‬وم‬
‫میگذارد یعنی فرمان ‪ backup‬کاری که میکند شناسنامهی فایل را وم میبرد‪.‬‬

‫دالیل ‪ backup‬گیری‬
‫‪ Backup‬گیری میتواند دادهوا را در برابر عوامل مختلفی محافظ کند یا کاربردوای مختلفی داشته‬
‫باشد‪ .‬در زیر به مهمترین دالیل اشاره شده اس ‪:‬‬
‫‪ .1‬خرابی و معیوب شدن تجهیزات به ور دلیلی‬
‫‪ .۲‬کم توجهی مسئول نگهداری اطالعات‬
‫‪ .۳‬از بین رفتن اطالعات به دلیل حملهی خودی و غیرخودی‬
‫‪ .۴‬انتقال اطالعات از یک کام یوتر به کام یوتر دیگر‬
‫‪ .۵‬ارائه اطالعات به سازمانوای زیرربط و محاکم قضایی‬

‫حاال ومه این فرمان را در ‪ home directory‬خودتان بزنید (فایل ‪ namef‬ومان فایلی اس که برای‬
‫تمرینوای قبلی ک ی کردیم و فرقی نمیکند‪ .‬میتوانید به جای ‪ namef‬ور فایل دیگری را در نظر‬
‫بگیرید)‪:‬‬
‫‪>> stat namef‬‬
‫این فرمان اطالعات کامل این فایل‪ ،‬یعنی شناسنامهی فایل ‪ ،Backup‬را به ما میدود‪ .‬پس کاری‬
‫‪1۰۳‬‬ ‫فصل ‪ ۵‬فشردهسازی و ‪ backup‬گیری‬

‫که میکند این اس که در ‪ header‬شناسنامهی فایل را میگذارد و با یک الگوریتمی ‪ backup‬یک‬


‫عددی را در ‪ trailer‬قرار میدود که نشاندونده آن فایل اس ‪ .‬اطالعات در مبدأ کنترل میشود و‬
‫اگر یک بایتش دس بخورد و تغییر کند این عدد دیگر درس نیس و ‪ backup‬نادرس اس و‬
‫بدرد نمیخورد‪ .‬ولی ک ی فقط ‪ as is copy‬میکند و کاری ندارد که اگر قسمتهایی از فایل وم خراب‬
‫باشد و شناسنامهی فایل را وم نمیبرد‪ .‬پس ‪ trailer‬را ‪ backup‬میگذارد تا کنترل شود در مبدأ و‬
‫اگر یک بای آن دس بخورد ‪ CRC‬به وم میخورد‪.‬‬
‫ما دو روش ‪ back up‬گیری را بررسی میکنیم و روش سوم را به عهدهی خودتان میگذاریم‪:‬‬
‫‪tar‬‬ ‫‪.1‬‬
‫‪cpio‬‬ ‫‪.۲‬‬
‫‪dump‬‬ ‫‪.۳‬‬

‫فرمان ‪tar‬‬
‫اکثر کدوای سورسوای لینوکس با این فرم نگهداشته میشوند‪Backup .‬گیری قانون و استراتژی‬
‫دارد‪ ،‬یعنی اینکه در چه ساعتی ‪ backup‬بگیریم و کجا بگذاریم و باید تاریخ و ساع ‪backup‬گیری‬
‫را روی آن بنویسیم و با توجه به حساسی فایل ‪ backup‬گیری شده آن را در جایی امن و مطمئن‬
‫قرار دویم‪.‬‬
‫حاال فرمان زیر را بزنید‪ .‬میبینیم که دعوا میکند و میگوید باید ‪ option‬را مشخص میکردی‪.‬‬
‫‪>> tar‬‬
‫حاال فرمان روبهرو را میزنیم که باز وم دعوا میکند و میگوید به من نگفتی که ‪ back up‬را کجا‬
‫‪ create‬کنیم‪.‬‬
‫‪>> tar c‬‬
‫فرمان ‪ tar‬یکی از فرمانوایی اس که ‪option‬وای آن نیازی به – ندارند‪ .‬تعداد محدودی از این‬
‫فرمانها داریم‪ .‬به این قالب از آرگومان گرفتن اصطالحاً ‪ BSD style‬میگویند‪ .‬حاال فرمان روبهرو را‬
‫میزنیم‪:‬‬
‫‪>> tar cf all.‬‬
‫‪c :create‬‬
‫‪ :all‬روی این فایل ‪ back up‬درس کن‪.‬‬
‫‪) .‬نقطه(یعنی از ‪current Directory‬اش ‪ back up‬بگیرد‪.‬‬
‫اعتراضتتی میکند و میگوید من فایل ‪ all‬را که خودش ‪ back up‬اس ت از خودش نمیتوانم ‪back‬‬
‫‪ up‬بگیرم‪ .‬وقتی فرمان روبهرو را میزنید به شما میگوید که فایل ‪ all‬ا ستانداردی از جنس ‪posix‬‬
‫و ‪ archive‬ای از جنس ‪ tar‬اس ‪.‬‬
‫‪>> file all‬‬
‫اآلن از آنوا ‪back up‬‬ ‫شتتما وقتی الگین میکنید تعدادی فایل برایتان ستتاخته میشتتود که ما‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۰۴‬‬

‫گرفتیم وقتی ‪ ls –l‬بزنیم ومه را میبینیم‪ all .‬که فایل ‪ backup‬ا س و از دایرکتوری جاری گرفته‬
‫شد حجمش از کل فایلوا بیشتر اس ‪ .‬چرا؟‬
‫به دلیل اینکه در ‪ backup‬تعدادی ‪ header‬و ‪ trailer‬اضتتتافه کردهایم‪ .‬حاال اگر در فرمانی که زدیم‬
‫یک آپ شن دیگر وم به نام ‪ v‬که مخفّف ‪ verbose‬میبا شد‪ ،‬ا ضافه کنیم که به معنی با خود زمزمه‬
‫کردن میباشد‪.‬‬
‫‪>> tar cvf all.‬‬
‫و به حال ‪verbose‬‬ ‫حاال اگر ‪ enter‬بزنیم میبینیم که یک چیزوایی را که تا اآلن نمیگف را گف‬
‫رف و فایلوای نقطهدار را که تا اآلن نشان نمیداد‪ ،‬نشان میدود و از آنوا ‪ backup‬گرفته اس ‪.‬‬
‫حاال اگر به جای ‪ ،all‬فالپی یا ‪ flash‬مینوشتید فایل را میتوانستید مثالً به شیراز بفرستید و وقتی‬
‫به مقصد رسید به راحتی ‪ recovery‬میکنید و به راحتی از آن فایل استفاده میکنید‪ .‬در‬
‫‪backup‬گیری باید خیلی دقّ کنیم چون ممکن اس به درستی ‪ back up‬نگیریم و بعداً برنگردد‪.‬‬
‫یک آپشن مهم دیگر برای فرمان ‪ tar‬آپشن ‪ t‬اس ‪ t :‬مخفّف ‪ table‬میباشد‪ .‬این فرمان چک میکند‬
‫که ‪ backup‬ما خوب اس یا نه؟ اگر ‪ backup‬خراب باشد یا مشکلی داشته باشد برای ما یک پیغام‬
‫مینویسد‪.‬‬
‫‪>> tar tf all.‬‬
‫اگر یک ‪ v‬وم در وسط این آپشن بگذاریم خروجی خیلی تمیزی به ما میدود‪ .‬پس ‪ backup‬که‬
‫گرفتیم با این فرمان آن را تس میکنیم‪ f .‬یعنی فایلی که جلوی آن نوشتیم وقتی فرمان روبهرو‬
‫را میزنیم اعتراض میکند و میگوید که به نظر نمیآید که این فایل یک ‪ back up‬باشد‪.‬‬
‫‪>> tar tvf namef‬‬
‫سؤال‪ :‬چرا ما در بکآپگیری ‪ change directory‬میکنیم؟ ‪ absolute path‬یعنی چه؟‬
‫چون اگر ما ‪ backup‬را با فرمان روبهرو ‪ tar cvf All/home/pardis/‬بگیریم در مقصد که میخواویم‬
‫از ‪ backup‬استتتفاده کنیم و آن را برگردانیم امکان دارد فایلی به نام ‪ pardis‬در ومان مستتیر وجود‬
‫داشتته باشتد و برود به جای آنوا قرار گیرد و آن فایل را از بین ببرد‪ .‬به این میگویند ‪Absolute‬‬
‫‪ path‬که با ‪ /‬شتتتروع میشتتتود‪ .‬و اگر با ‪ /‬شتتتروع نشتتتود به آن ‪ relative‬میگویند‪ .‬مثالً اگر بزنید‬
‫‪ /bin/date‬میشود ‪ absolute‬و اگر ‪ date‬خالی بزنید باید برود بگردد و ‪ relative‬میشود‪.‬‬
‫در بکآپگیری اگر از ‪ absolute path‬خواستیم بکآپ بگیریم‪ ،‬اشکالی ندارد به شرط اینکه سورس‬
‫و ‪ target‬را بدانیم‪ absolute path .‬خیلی سریعتر اس ؛ اجرای فرمانها در‪ absolute path‬سریعتر‬
‫اس بدلیل اینکه دیگر ‪ shell‬نیازی به جستجو کردن ندارد‪ .‬زیرا در این حال به ‪ shell‬میگویید‬
‫برو و از اینجا اجرا کن و اگر خالی بزنید باید بگردد‪.‬‬
‫آپشن برگرداندن فایل از ‪x :backup‬‬
‫‪c: create‬‬
‫‪v: verbase‬‬
‫‪f: File‬‬
‫‪1۰۵‬‬ ‫فصل ‪ ۵‬فشردهسازی و ‪ backup‬گیری‬

‫تمرین‪ :‬فایل ‪ namef‬را سهواً پاک کنید و از ‪ backup‬برگردانید‪.‬‬ ‫‪‬‬

‫ابتدا با فرمان ‪ rm‬فایل را پاک میکنیم‪.‬‬


‫سؤال‪ :‬اگر ‪ namef‬خالی بزنید میگوید این فایل وجود ندارد‪ .‬دلیل آن چیس ؟‬
‫‪>> rm namef‬‬
‫‪>> tar xvf all./namef‬‬
‫حال اگر فرمان روبهرو را بزنیم حجم فایل را میبینیم‪:‬‬
‫‪>> ls -l all‬‬
‫‪250m‬‬
‫‪ zip‬کنیم و ‪backup‬‬ ‫‪ backup‬میتواند فایل را فشرده کند یعنی ‪ zip‬کند‪ .‬حاال میخواویم فایل را‬
‫بگیریم‪ .‬آپشن ‪ z‬که مخفّف ‪ zip‬اس این کار را برای ما انجام میدود‪.‬‬
‫‪>> rm all‬‬
‫‪>> tar cvfz all.‬‬
‫‪>> ls –l all‬‬
‫‪ bzip2‬فایل را فشرده‬ ‫حال آپشن ‪ z‬را بر میداریم و به جای آن ‪ j‬میگذاریم‪ .‬آپشن ‪ j‬وم به فرم‬
‫میکند‪.‬‬
‫‪>> tar cvfj all.‬‬

‫‪ ‬نکته‪ :‬فرمان ‪ backup‬به سیستمعامل (ور سیستمعاملی) میگوید میخواوم بنویسم روی‬
‫‪device‬‬ ‫‪ ،tape‬س س سیستمعامل میآید به ‪ device driver‬آن میگوید که بنویس‪ .‬آنگاه‬
‫‪ driver tape‬وم مینویسد‪ .‬ومیشه به این صورت اس که ‪ device driver‬به ‪ device‬فرمان‬
‫میدود و جواب فرمان که آمد‪ ،‬آن را آنالیز میکند‪ .‬پس برای اینکه به ‪ tape‬بگوید بنویس و‬
‫‪ interrupt‬میدود و ‪ tape‬که این کار را انجام داد ‪ interrupt‬انجام کار میدود و میگوید من‬
‫این کار را کردم‪ .‬حاال اگر ‪ tape‬پاره شده باشد یا چروک شده باشد و کابل مشکل داشته باشد‬
‫و ‪ tape‬کثیف باشد یا ‪ head‬کثیف باشد ‪ device‬به ‪ device driver‬میگوید که من در نوشتن‬
‫مشکل دارم‪ ،‬اوّل سیستمعامل میآید روی کنسول و ‪ log File‬پیغام را مینویسد و روی کنسول‬
‫مینویسد ‪ tape‬پاره شده یا ‪ head‬کثیف اس و موارد مشابه دیگر و بعد به فرمان ‪ tar‬میگوید‬
‫که کار قبلی تان را نتوانستید انجام دوید‪ .‬پس یادتان باشد که اگر سخ افزار خراب باشد دو‬
‫دسته خطا ظاور خواود شد‪.‬‬
‫‪device driver error‬‬ ‫‪.1‬‬
‫‪archive is incompleted unexpected‬‬ ‫‪:‬‬ ‫پیغام ‪error‬ی که خیلی زیاد دیده میشود این اس‬ ‫‪.۲‬‬
‫و میگوید توقع نداشتم این قدر زود آخر‬ ‫‪ end of File‬که میگوید ‪ back up‬کامل نیس‬
‫فایل را ببینیم‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۰۶‬‬

‫خطای دوم میتواند به دلیل برق رفتن در حین ‪ backup‬گیری باشد‪ .‬پس ‪ backup‬گیری با این که‬
‫ساده اس ولی خیلی مهم اس و نیاز به استراتژی و سیاس گذاری دارد‪.‬‬

‫فرمان ‪rsh‬‬

‫فرمان دیگری که بررسی میکنیم ‪( rsh‬مخفّف ‪ )remote shell‬میباشد که یک فرمانی را میگوییم‬


‫روی یک کام یوتر دیگر اجرا کند‪ .‬مثالً ما دو کام یوتر ‪ C1‬و ‪ C2‬داریم که از طریق شبکه به یکدیگر‬
‫متصل وستند ‪ C1‬در دانشگاه شریف و ‪ C2‬در دانشگاه علموصنع که نقطه مقابل یکدیگر وستند‬
‫و میگوییم ‪ C1‬فرمان ‪ tar‬را روی ‪ C2‬اجرا کند و ‪ backup‬را در ‪ C2‬نگه میداریم‪.‬‬

‫‪>> man rsh‬‬

‫‪ CNN‬وصل میشود و میگوید ‪ Date‬را اجرا کن‪.‬‬ ‫بهعنوان مثاال فرمان ‪ rsh‬به سای‬

‫‪>> rsh CNN.com date‬‬

‫فرمان ‪cpio‬‬
‫‪ cpio‬مخفّف ‪ copy input output‬میباشتتتد و یکی دیگر از روشوای ‪ backup‬گیری استتت ‪ .‬حاال‬
‫فرمان روبرو را میزنیم که اعتراض میکند چون آرگومانوای آن کامل نیس ‪:‬‬
‫‪>> cpio‬‬
‫‪>> cpio-i‬‬
‫‪ cpio –i‬را که میزنیم منتظر ورودی میماند‪ .‬حاال با ‪ cpio‬بکآپ میگیریم‪:‬‬
‫‪>> rm all‬‬
‫‪ cpio‬مثل ‪ tar‬نی س که فقط بگوییم از دایرکتوری من یعنی‪( .‬نقطه) و قبول کند بلکه میگوید به‬
‫من اسم فایل بدوید‪ .‬حاال این فرمان را میزنیم‪:‬‬
‫‪>> find. | cpio -o > all‬‬
‫فرمان ‪ find‬تمام ‪ object‬وای موجود در دایرکتوری خودمان را نشان میدود و چون ما نمیخواویم‬
‫خروجی را ببینیم آن را به ‪ cpio‬پایپ میکنیم و این فرمان را میزنیم‬
‫‪>> find. |cpio -o >all‬‬
‫من استتتم فایل نمیدانم خودت ‪ backup‬را‬ ‫در ‪ cpio‬آپشتتتن ایجاد فایل ‪ o‬استتت و ‪ cpio‬میگوید‬
‫‪ redirect‬کن جایی که دوستتت داری‪ cpio .‬مثل ‪ tar‬و ِدِر و اطالعات دارد و در پایانش عالم‬
‫کنترلی میگذارد‪ .‬وقتی این فرمان را میزنیم باز وم اعتراض میکند و میگوید این فایل اندازهاش‬
‫در حال تغییر اس و من از این فایل ‪ back up‬نمیگیرم‪.‬‬
‫‪1۰۷‬‬ ‫فصل ‪ ۵‬فشردهسازی و ‪ backup‬گیری‬

‫تشخیص فایلهای از نوع ‪cpio‬‬


‫وقتی فرمان روبهرو را بزنیم میگوید جنس آن از نوع ‪ cpio‬میباشد‪.‬‬
‫‪>> file all‬‬
‫خود حرف زدن یا زمزمه کردن وم ومان ‪ v‬اس که در ‪ tar‬داشتیم‪.‬‬ ‫در ‪ cpio‬وم با‬
‫‪>> find. |cpio –ov>all‬‬
‫حاال چک کنید که در ‪ cpio‬چطور میشود ‪ backup‬را ‪ test‬کرد که درس وس یا نه؟‬
‫‪>> man cpio‬‬
‫‪>> info cpio‬‬
‫‪>> cpio –itv < all‬‬
‫روش ‪cpio‬؟‬ ‫تمرین‪ :‬فایل ‪ namef‬را پاک کنید و س س از ‪ back up‬بازگردانید با‬
‫‪>> rm namef‬‬
‫‪>> cpio-iv < all namef‬‬
‫اگر ومین فرمان را دوباره بزنید ‪ error‬میدود و در خروجی پیغام میدود که فایل موجود یا وم‬
‫سن و سالش اس یا جدیدتر اس و دوباره از ‪ backup‬بر روی آن نمینویسد‪.‬‬
‫این دو فرمان ‪ tar‬و ‪ cpio‬به این صورت نیستند که اگر ‪ backup‬ناقص گرفته شد‪ ،‬دوباره از ادامهاش‬
‫بیاید در نوار بنویستتتد‪ ،‬چون نمیتواند انتهای نوار را پیدا کند‪ .‬مگر اینکه خودتان بیایید وقتی دارد‬
‫‪ backup‬میگیرد تک تک اسم فایلوا را برای خودتان ایمیل کنید یا یک جا نگه دارید‪:‬‬
‫‪>> find. |cpio -ov > all | mail -s backup n. pardis‬‬

‫‪ ‬نکته‪ :‬فرمان ‪ cpio‬با روش استاندارد‪ ،‬فشرده نمیکند بلکه فایلوا در یک مخزن ‪ store‬میشوند‪.‬‬
‫تمرین‪ :‬کاری کنید که ‪ backup‬ی که از ‪ cpio‬میگیریم فشرده باشد؟ چرا دستورات زیر به‬ ‫‪‬‬
‫درستی فعالی مورد نظر ما را انجام نمیدوند؟‬

‫‪>> man zip‬‬


‫‪>> man cpio‬‬
‫‪>> cpio –ov > all |zip -9 x‬‬
‫‪>> cpio -o |bzip2 > all. Bz2‬‬
‫‪>> find. |cpio –o| bzip2 > all.bz2‬‬

‫سؤال‪ :‬در ابتدای ِودِر فایل ‪ tar‬و ‪ cpio‬چه چیزی داریم؟‬ ‫‪‬‬

‫طبق ‪ ISO 8859-1‬ور فایل شناخته شدهای در دنیا‪ ،‬بای وای ابتدایش ن شاندوندهی جنس فایل‬
‫استت ‪ ،‬که به آن اصتتطالحاً ‪ magic number‬میگویند‪ .‬با این فرمان میتوانیم لیستتتی از ‪magic‬‬
‫‪ number‬وای شناخته شده را ببینیم‪:‬‬
‫‪>> less /usr/share/magic‬‬
‫‪ cpio‬بگردید)‪ magic number‬آن ‪ ۰۷۰۷۰۷‬اس ‪.‬‬ ‫میبینیم که اگر ‪ /cpio‬بزنید (یعنی به دنبال‬
‫نکته‪ :‬کاربرد ‪ –p‬در فرمان ‪ cpio‬چیس ؟‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۰۸‬‬

‫‪>> find. |cpio–dumpv</tmp/pardis1‬‬


‫ما با این ‪ option‬وا و دستتتتور ‪ cpio‬میتوانیم از یک ستتتاختار یک ک ی جای دیگر و با ومان‬
‫شناسنامهوا داشته باشیم‪.‬‬
‫‪ :d‬یعنی اگر الزم بود ‪ directory‬بساز‬
‫‪ :u‬یعنی بیقید و شرط خطائی تولید نکن اگر ساخته شده بود‪.‬‬
‫‪ :m‬یعنی شناسنامهام را تغییر نده‪.‬‬
‫‪ :p‬آپشن ‪ -o‬تمام فایلوا را یک ارچه میکند و یک فایل بزرگ میشود ولی ‪ –p‬ومان فایلوا را‪ ،‬ور‬
‫تعدادی که باشتتند‪ backup ،‬میگیرد با ومان ‪permission‬وا و شتتناستتنامه و عین ستتاختاربندی‬
‫خودش را به ما میدود‪.‬‬
‫‪ ‬نکته‪ :‬اگر با استفاده از ‪ tar‬بکآپ بگیرید‪ ،‬میتوانید با ‪ cpio‬وم آن را بخوانید‪ .‬پس ‪ cpio‬وم‬
‫فایلوای خودش را و وم فایلوا ‪ tar‬را میخواند‪.‬‬
‫فرمان دیگری که برای بکآپگیری داریم فرمان ‪ dump‬اس ‪ .‬این فرمان فایل را ‪backup‬‬
‫نمیگیرد بلکه ‪ partition‬را ‪ backup‬میگیرد‪.‬‬
‫‪ ‬نکته‪ amonda :‬نرمافزاری اس که مدیری روی نحوهی ‪backup‬گیری را انجام میدود‪ .‬به ما‬
‫این امکان را میدود که با مدیری روی ‪ backup‬از یک ‪ network‬بکآپ بگیریم‪ .‬البته مدیری‬
‫آن استراتژی میخواود‪ .‬این نرمافزار از فرمان ‪ tar‬برای بکآپگیری استفاده میکند‪.‬‬
‫فصل ‪ 6‬ویرایشگرها در لینوکس‬

‫اهداف فصل‪:‬‬
‫آشنایی با ویرایشگر ‪:vim‬‬ ‫‪‬‬
‫تسلط به حاالت مختلف آن‬ ‫‪o‬‬
‫تسلط به کلیدهای میانبر در این ویرایشگر‬ ‫‪o‬‬
‫تعریف ‪ abbreviation‬و استفاده از آن‬ ‫‪o‬‬

‫ما تا اینجا تعدادی فرمان یاد گرفتیم‪ ،‬ولی گاوی اوقات شما نیاز دارید یک فایل را تغییر دوید و یا‬
‫تنظیماتی که مد نظرتان اس را اعمال کنید‪ .‬توانایی استفاده از یک ویرایشگر مناسب برای راهاندازی‬
‫سرویسوای مختلفی مثل ‪ dns ،web server ،ftp‬و موارد دیگر بسیار مهم اس ‪ .‬بنابراین ضروری‬
‫اس که به یک ویرایشگر‪ 1‬خوب مسلط باشید‪ ..‬ویرایشگری که در این قسم با آن کار میکنیم‬
‫ویرایشگر ‪ vim‬میباشد‪ .‬این ویرایشگر در بین خبرهوای لینوکس طرفداران بسیار زیادی دارد‪.‬‬

‫ویرایشگر ‪vim‬‬
‫‪>> man vim‬‬
‫این فرمان جزوهی کاملی وم دارد که با اجرای فرمان باال آن را مشتتاوده میکنید‪ .‬برای اینکه یک‬
‫فایل را ویرایش کنیم‪ ،‬این فرمان را میزنیم‪:‬‬
‫‪>> vim fileName‬‬
‫در صتتورتی که نتوانیم فایلی را تغییر دویم‪ ،‬خود ویرایشتتگر ‪ vim‬در خط آخر اعتراض میکند و با‬
‫خط قرمز اعتراضش را نشان میدود‪ .‬در واقع در چنین حالتی فایل را در حال ‪ readonly‬میتواند‬
‫باز کند‪ vim .‬محدودیتی ندارد و اگر فایل مورد نظر باینری وم باشتتتد‪ ،‬میتواند آن را باز کند و‬

‫‪1‬‬ ‫‪editor‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪11۰‬‬

‫بهطور کلی آماده اس که ور چیزی را ویرایش کند‪.‬‬


‫به جرات میتوان گف که ‪ vim‬حرفهایترین امکانات را در اختیار ‪ admin‬ستیستتم جه ویرایش‬
‫فایلوای مختلف و نو شتن ا سکری وای مدیریتی برای سی ستم قرار میدود‪ .‬ویرای شگر ‪ vi‬بهطور‬
‫پیشفرض به ومراه نسخهی لینوکسی که نصب کردهاید‪ ،‬وجود دارد و ‪ vim‬نسخهی توسعه یافتهتر‬
‫‪ vi‬اس که میتوانید آن را با استفاده از یکی از فرمانوای زیر نصب کنید‪:‬‬
‫در ‪:debian, Ubuntu, Mint‬‬
‫‪>> sudo apt-get install vim‬‬
‫‪Fedora, RHEL, CERN, Oracle Enterprise Linux‬در‬ ‫‪ CentOS:‬و‬
‫‪>> sudo yum install vim‬‬
‫با اجرای فرمان زیر اطالعات مربوط به نسخهی ‪ vim‬نصب شده بر روی سیستم خود را بهطور کامل‬
‫مشاوده میکنیم‪:‬‬
‫‪>> vim--version‬‬
‫حاال یک فایل میسازیم و با تمرین در آن کار با ‪ vim‬را یاد میگیریم‪:‬‬
‫‪>> vim newFile‬‬
‫بعد از اجرای فرمان باال یک بافر ساخته میشود که در آن امکان نوشتن متن وجود دارد‪ ،‬ولی ونوز‬
‫بر روی دیستتک ذخیره نشتتده اس ت ‪ .‬برای اینکه این بافر بر روی دیستتک ذخیره شتتود‪ ،‬ابتدا کلید‬
‫‪ escape‬را فشار داده و س س‪ :w‬نوشته و ‪ enter‬میزنیم‪ .‬به این ترتیب در دایرکتوری جاری فایل با‬
‫نام ‪ newFile‬ذخیره میگردد‪ .‬حاال کلید ‪ i‬را فشتتتار میدویم تا بتوانیم داخل این فایل بنویستتتیم‪.‬‬
‫مثالً عبارت زیر را مینویسیم‪:‬‬
‫‪I like linux and working towards becoming a professional system administrator.‬‬
‫از اینکه این عبارت را نوشتتتتیم‪ ،‬برای اینکه فایل را ‪ save‬کنیم‪ ،‬کلید ‪ escape‬را فشتتتار داده و‬
‫بعد‬
‫س س‪ :w‬میزنیم و بعد ‪ enter‬را ف شار میدویم‪ .‬اگر ق صد ‪ save and exit‬دا شتیم‪ ،‬میتوانیم ابتدا‬
‫‪ escape‬را فشتتار دویم و ستت س‪ :x‬بزنیم که فایل را ذخیره کرده و از ‪ vim‬نیز خارج میشتتود‪ .‬در‬
‫ادامهی این ف صل چند برنامهی کاربردی در ‪ vim‬با وم خواویم نو ش تا بر این ویرای شگر ت سلط‬
‫پیدا کنیم‪.‬‬

‫انواع حالتهای کاری در ‪vim‬‬


‫در ‪ vim‬سه حال برای کار کردن داریم که دانستن آنوا بسیار مهم اس ‪:‬‬
‫‪ .1‬حات عادی یا ‪ normal mode‬که در آن امکان دادن دستورات بهصورت مستقیم از صفحه کلید‬
‫وجود دارد‪ .‬در این حال در قسم پایین صفحهی ویرایشگر چیزی را مشاوده نمیکنید‪.‬‬
‫‪ .۲‬حال ‪ insert mode‬که ومان حالتی اس که متن مورد نظر خودمان را مینویسیم‪ .‬در این حال‬
‫که نشاندوندهی این‬ ‫در قسم پایین صفحهی ویرایشگر نوشته شده اس‬
‫حال اس ‪.‬‬
‫‪111‬‬ ‫فصل ‪ ۶‬ویرایشگروا در لینوکس‬

‫‪ .۳‬حال ‪ command mode‬حالتی اس که در آن دستوراتی که با دو نقطه شروع میشوند را‬


‫میدویم‪ .‬مثالً‪ :x‬که برای ‪ save and exit‬استفاده میکنیم‪ .‬در این حال در قسم پایین صفحهی‬
‫ویرایشگر نوشته اس ‪ :‬و ‪ cursor‬روشن و خاموش میشود‪ .‬در واقع برای ورود به حال ‪command‬‬
‫‪ mode‬کافی اس که کلید‪ :‬را فشار دویم‪( .‬اگر در حال ‪ insert‬وستید اول ‪ escape‬و بعد‪ :‬را‬
‫فشار دوید)‪.‬‬

‫‪command‬‬ ‫از این به بعد ورجا عالم ‪ :‬را قبل از یک دستتتتور دیدیم‪ ،‬یعنی اینکه آن را در حال‬
‫‪ mode‬وارد میکنیم‪ .‬در حالتی که د ستوری را بدون عالم ‪ :‬بنوی سیم یعنی اینکه آن را در حال‬
‫‪ normal‬وارد کردهایم و اگر د ستوری در حال ‪ insert mode‬وارد شود‪ ،‬حتماً ذکر میکنیم‪ .‬برای‬
‫خروج از حالت ‪ insert‬و برگ شتن به ‪ normal mode‬کافی ا ست که کلید ‪ escape‬را ف شار‬
‫دهیم‪.‬‬
‫مثال‪ :‬با استفاده از ‪ shell‬و اسکریپ نویسی لینوکس‪ ،‬برنامهای بنویسید که یک اسم را بخواند‬ ‫‪‬‬
‫و حرف اولش را چاپ کند‪.‬‬

‫یعنی میخواویم این برنامه را به صورت یک فرمان در لینوکس در بیاوریم‪ .‬شروع کار به صورت زیر‬
‫اس و فایلی با نام ‪ test1‬میسازد‪:‬‬
‫‪>> vim test1‬‬
‫برای وارد کردن دستورات و یا تغییرات در فایل کلید ‪ i‬در صفحه کلید را فشار میدویم و تغییراتی‬
‫را که میخواویم اعمال میکنیم‪.‬‬
‫برای ذخیره و خارج شتدن از محیط ویرایشتگر ابتدا کلید ‪ escape‬را فشتار میدویم و ست س‪ :x‬را‬
‫میزنیم‪ .‬حاال ‪ ls –l‬که بزنیم مشخصات فایلی که ساخته شده اس را میبینیم و اگر اسم فایل را‬
‫بزنیم اجرا میشود‪.‬‬
‫‪>> test1‬‬
‫میبینیم که اجرا نشد و به ما پیغام ‪ command not found‬را میدود که این به این دلیل اس که‬
‫لینوکس‪ ،‬برخالف ویندوز مایکرو ساف ‪ ،‬به خاطر م سائل امنیتی ‪ current directory‬را نمیگردد و‬
‫از دایرکتوریوای م شخص شده از قبل در بیرون‪ ،‬میخواود د ستور را بیاورد (م سائل امنیتی این‬
‫اس که ممکن اس فرمانی مثل ‪ date‬در دایرکتوری جاری دستکاری شده باشد و اگر ما ‪ date‬را‬
‫از دایرکتوری جاری اجرا کنیم مثالً ‪ format‬یا ‪ delete‬را انجام دود به ومین دلیل استتت که از‬
‫دایرکتوری جاری نمی خواند)‪ .‬حاال اگر خودمان مشتتخص کنیم که از دایرکتوری جاری بخوان باید‬
‫بهصورت زیر بزنیم‬
‫‪>>./test1‬‬
‫‪Permission denied‬‬
‫که حاال اجرا می شود ولی ممکن اس پیغام ‪ permission denied‬وم بگیرید‪ .‬اگر چنین شد فرمان‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪11۲‬‬

‫زیر را بزنید و س س برنامه را اجرا کنید‪:‬‬


‫‪>> chmod 644 test1‬‬
‫باید حواستتمان باشتتد که استتم متغیروا را با حروف بزرگ و بقیه را با حرف کوچک بنویستتیم اگر‬
‫ا شتباه بنوی سیم ممکن ا س خطائی گرفته شود‪ .‬که این ‪ error‬را ‪ semantic error‬میگویند و اگر‬
‫دستور کالً اشتباه باشد ‪ syntax error‬میدود‪.‬‬
‫مثال‪ :‬برنامهای بنویسید که اسم فرد را بگیرد و حرف آخر آن را چاپ کند؟‬ ‫‪‬‬

‫دستور زیر را میزنیم‪:‬‬


‫‪>> vim testn‬‬
‫س س بعد از فشار دادن کلید ‪ i‬دستورات زیر را مینویسیم‪:‬‬
‫"‪echo "Please Enter your name:‬‬
‫‪read N‬‬
‫‪echo $N |tail-c2‬‬
‫حاال با زدن ‪ escape‬و بعد فشار دادن‪ :x‬از ‪ vim‬خارج میشویم‪ .‬حاال فرمان زیر را میزنیم‪:‬‬
‫‪>> testn‬‬
‫‪-bash: testn: command not found‬‬
‫بنابراین برای اجرا‪ ./testn‬را به کار میگیریم‪:‬‬
‫‪>>./testn‬‬
‫‪bash:./testn permission denied‬‬
‫پیغامی که گرفتیم به این معنی میباشد که شما اجازهی اجرای آن را ندارید با اینکه این فایل مال‬
‫خودتان اس ‪ .‬دلیل آن این اس که‬
‫‪>> chmod 644 testn‬‬
‫‪>>./testn‬‬
‫حاال میبینیم که اجرا میشود و از ما اسم میخواود و حرف آخرش را نمایش میدود‪.‬‬
‫‪ ‬مثال‪ :‬با این مثال میخواویم استفاده از حال وای مختلف و ومینطور ‪ macro‬در ‪ vim‬را یاد‬
‫بگیریم‪ .‬میخواویم یک فایل بسازیم با نام ‪ vimTemp‬که شامل ‪ ۹۹۹‬کلمهی ‪ hello‬باشد‪.‬‬

‫برای انجام این کار فرمان زیر را میزنیم‪:‬‬


‫‪>> vim vimTemp‬‬
‫‪ normal mode‬اس ‪ .‬در ومین‬ ‫بعد از اجرای این فرمان صفحهی ‪ vim‬باز میشود که در حال‬
‫حال عدد ‪ ۹۹۹‬را از روی کیبورد میزنیم (به ظاور ویچ اتفاقی نمیافتد‪ ،‬ولی ‪ vim‬آن عدد را گرفته‬
‫اس )‪ .‬حاال کلید ‪ i‬را فشار میدویم تابهحال ‪ insert mode‬برویم‪ .‬س س کلمهی ‪ hello‬را مینویسیم‬
‫و بعد از آن یک ‪ space‬نیز میزنیم و بعد کلید ‪ escape‬را فشار میدویم‪ .‬اتفاقی که میافتد این‬
‫اس که کلمهی ‪ ۹۹۹ hello‬بار نوشته میشود‪ .‬حاال‪ :x‬را میزنیم تا فایل ذخیره شود و از محیط‬
‫‪ vim‬نیز خارج شویم‪.‬‬
‫‪11۳‬‬ ‫فصل ‪ ۶‬ویرایشگروا در لینوکس‬

‫مثال‪ :‬در ادامهی کار بر روی فایل مثال قبل میخواویم کار با ‪ micro‬وا را نیز تمرین کنیم‪.‬‬ ‫‪‬‬
‫میخواویم در انتهای ور کلمهی ‪ hello‬عالم ; را قرار دویم‪.‬‬

‫فایلی را که در مثال قبل ساختیم باز میکنیم‪ ،‬به این منظور فرمان زیر را میزنیم‪:‬‬
‫‪>> vim vimTemp‬‬
‫‪ q‬را میزنیم و بعد کلید ‪ a‬را‬‫حاال کلید ‪ 0‬را میزنیم تا ‪ cursor‬به ابتدای خط برود و ستتت س کلید‬
‫میزنیم‪ .‬به این ترتیب ‪ vim‬در حال ذخیره کردن ماکرو بر روی حافظهی با نام ‪ a‬اس ‪ .‬حاال کلید‬
‫‪ f‬را میزنیم و بعد ‪ o‬را فشتتتار میدویم‪ .‬به این ترتیب اولین حرف ‪ o‬که بعد از ‪ cursor‬بود پیدا‬
‫میشتتتود و ‪ cursor‬بر روی آن قرار میگیرد‪ .‬حاال کلید ‪ a‬را فشتتتار میدویم و بعد; را میزنیم تا;‬
‫نو شته شود‪ .‬کافی ا س ‪ escape‬را ف شار دویم و بعد کلید ‪ q‬را میزنیم تا کار ذخیرهی ماکرو نیز‬
‫انجام شود‪ .‬کاری که میخوا ستیم برای یک ‪ hello‬انجام شد برای اینکه برای ‪ hello۹۹۸‬دیگر نیز‬
‫انجام شود‪ ،‬ابتدا از روی کیبورد ‪ ۹۹۸‬را میزنیم و بعد ‪ shift‬را نگه دا شته و کلید ‪ 2‬را میزنیم (که‬
‫ومان عالم @ میشتتود) و س ت س ‪ a‬را فشتتار میدویم‪ .‬به این ترتیب این کار برای ‪ ۹۹۸‬کلمهی‬
‫‪ hello‬ی دیگر نیز انجام میشتتود‪ .‬در نهای ‪ :x‬را فشتتار میدویم تا فایل ما ذخیره گردد و از ‪vim‬‬
‫خارج شویم‪.‬‬

‫دستورات و فرامین مهم و کاربردی ویرایشگر ‪vim‬‬

‫در زیر مجموعه دستتتوراتی ‪ vim‬به ومراه حالتی (‪ )mode‬که در آن میتوان از آنوا استتتفاده کرد‬
‫آمده اس ‪.‬‬
‫فرمان‬ ‫در چه ‪ mode‬ی این کلید را‬ ‫توضیحات‬
‫فشار دهم؟‬
‫‪i‬‬ ‫‪normal mode‬‬ ‫جه نوشتتتن متن یا دستتتور‪ .‬با این کار در ومان جایی که‬
‫‪ cursor‬قرار دارد وارد حال ‪ insert‬میشود و منتظر گرفتن‬
‫ورودی میماند‪.‬‬
‫‪a‬‬ ‫‪normal mode‬‬ ‫ولی در نقطهی بعد از مکاننما شتتتروع به‬ ‫ومانند ‪ i‬استتت‬
‫نوشتن میکند‪.‬‬
‫‪A‬‬ ‫‪normal mode‬‬ ‫اگر میخواوید در انتهای سطر چیزی بنویسید این فرمان را‬
‫بزنید‪.‬‬
‫‪J‬‬ ‫‪normal mode‬‬ ‫اتصال دوسطر (خط) به یکدیگر‬
‫‪dd‬‬ ‫‪normal mode‬‬ ‫حذف یک سطر‬
‫‪D‬‬ ‫‪normal mode‬‬ ‫حذف حروف از مکاننما تا انتهای سطر‬
‫‪x‬‬ ‫‪normal mode‬‬ ‫حذف یک حرف‬
‫‪r‬‬ ‫‪normal mode‬‬ ‫تعویض (‪ )replace‬یک حرف‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪11۴‬‬

‫فرمان‬ ‫در چه ‪ mode‬ی این کلید را‬ ‫توضیحات‬


‫فشار دهم؟‬
‫‪R‬‬ ‫‪normal mode‬‬ ‫تعویض یک یا چند حرف‬
‫‪u‬‬ ‫‪normal mode‬‬ ‫‪undo‬‬
‫‪o‬‬ ‫‪normal mode‬‬ ‫اضافه نمودن یک خط در پایین خط فعلی‬
‫‪O‬‬ ‫‪normal mode‬‬ ‫اضافه نمودن یک خط در باالی خط فعلی‬
‫‪( .‬نقطه)‬ ‫‪normal mode‬‬ ‫آخرین فعالی انجام شده تکرار میشود‬
‫‪:x‬‬ ‫‪command mode‬‬ ‫ذخیره کردن فایل و خارج شدن‬
‫‪:w‬‬ ‫‪command mode‬‬ ‫ذخیره نمودن‬
‫‪:q‬‬ ‫‪command mode‬‬ ‫ختتتارج شتتتتتتدن بتتتدون ذختتتیتتتره کتتتردن‬
‫اگر در فا یل تغییر ای جاد کردها ید ولی نمیخواو ید ذخیره‬
‫کنید و خارج شوید کافی اس !‪ :q‬بزنید‪.‬‬
‫!‪:q‬‬ ‫‪command mode‬‬ ‫خارج شتتتدن بودن ذخیره ستتتازی و صتتترف نظر کردن از‬
‫تغییرات اعمال شده به فایل‬
‫‪:w filename‬‬ ‫‪command mode‬‬ ‫در این صتتتورت اطالعات در فایل با نام داده شتتتده ذخیره‬
‫خواود شد‪.‬‬
‫‪:r filename‬‬ ‫‪command mode‬‬ ‫فایلی که بهعنوان آرگومان این دستور میدویم بعد از جایی‬
‫که مکاننما در ویرایشگر قرار دارد خوانده میشود‪.‬‬
‫‪:set‬‬ ‫‪command mode‬‬ ‫اگر سطروا شماره ندا شته با شند‪ ،‬شماره میگذارد و اگر‬
‫!‪number‬‬
‫دا شته با شند‪ ،‬آن را مخفی میکند‪ .‬توجه دا شته با شید که‬
‫این شمارهوا در فایل ذخیره نمی شوند و فقط نمایش داده‬
‫میشوند‪.‬‬
‫‪/stringToSe‬‬ ‫‪normal mode‬‬ ‫رشتهی داده شده بعد از ‪ /‬را جستجو میکند‪ .‬برای رفتن به‬
‫‪arch‬‬
‫نتیجهی بعدی یاف شده کلید ‪ n‬را ف شار دوید‪ .‬برای رفتن‬
‫به نتیجهی قبلی کلید ‪ N‬را فشار دوید‪.‬‬
‫‪:set‬‬ ‫‪command mode‬‬ ‫در د ستور ج ستجو جه ‪ highlight‬کردن نتایج پیدا شده‬
‫!‪hlsearch‬‬
‫به کار میرود‪ .‬در صتتورتی که یک بار دیگر نیز این فرمان را‬
‫اجرا کنید‪ highlight ،‬کردن غیر فعال میشود‪.‬‬
‫‪:M,Ns/s1/s2/‬‬ ‫‪command mode‬‬ ‫از سطر ‪ M‬تا ‪ N‬رشتهی ‪ s1‬را یافته و به جای آن ‪ s2‬را قرار‬
‫‪gci‬‬
‫مید ود‪ g .‬ت مام این رشتتت ته وا در یک ستتتطر را یاف ته و‬
‫جایگزین میکند‪ ،‬بدون ‪ g‬تنها اولین ‪ s1‬ی که در سطر پیدا‬
‫شتتتود را یافته و جایگزین میکند‪ i .‬جه نادیده گرفتن‬
‫‪ uppercase‬یا ‪ lowercase‬بودن به کار میرود‪ c .‬نیز جه‬
‫‪ confirmation‬برای جایگزینیوا به کار میرود که از کاربر‬
‫‪ y/n‬میپرسد تا جایگزین بکند یا نکند‪.‬‬
‫‪:%s/s1/s2/g‬‬ ‫‪command mode‬‬ ‫در کل فایل جستجو کرده و ورجا ‪ s1‬را دید به جای آن ‪s2‬‬
‫‪11۵‬‬ ‫فصل ‪ ۶‬ویرایشگروا در لینوکس‬

‫فرمان‬ ‫در چه ‪ mode‬ی این کلید را‬ ‫توضیحات‬


‫فشار دهم؟‬
‫را قرار میدود‪.‬‬
‫‪M,Nd‬‬ ‫‪command mode‬‬ ‫از سطر ‪ M‬الی سطر ‪ N‬را حذف میکند‪.‬‬
‫‪M,$d‬‬ ‫‪command mode‬‬ ‫از سطر ‪ M‬تا آخر را حذف میکند‪.‬‬

‫مثال‪ :13,34s/hello/salam/g:‬سطر ‪ 13‬الی سطر ‪ 34‬جستجو شده و ورجا ‪ hello‬دیده شود به‬ ‫‪‬‬
‫جای آن ‪ salam‬قرار داده میشود‪.‬‬
‫مثال‪ :34,76d:‬سطر ‪ 34‬الی سطر ‪ 76‬حذف خواوند شد‪.‬‬ ‫‪‬‬

‫نکته‪ $ :‬به سطر آخر و یا به انتهای یک سطر اشاره و عالم ^ به ابتدای خط اشاره میکند‪.‬‬
‫مثال‪ :12,$d:‬از سطر ‪ 12‬الی آخرین سطر حذف میگردد‪.‬‬ ‫‪‬‬
‫‪ M,NtO‬یک ک ی از سطر ‪ M‬الی سطر ‪ N‬به زیر سطر ‪ O‬ک ی میگردد‪.‬‬ ‫‪‬‬
‫مثال‪ :12,64t98:‬سطور ‪ 12‬الی ‪ 64‬به بعد از سطر ‪ 98‬ک ی میگردند‪.‬‬ ‫‪‬‬
‫‪ M,NmO‬سطور ‪ M‬الی ‪ N‬به بعد از سطر ‪ O‬منتقل خواوند شد‪.‬‬ ‫‪‬‬
‫مثال‪ :67,123m500:‬سطور ‪ 67‬الی ‪ 123‬به بعد از خط ‪ 500‬منتقل خواود شد‪.‬‬ ‫‪‬‬

‫مثال‪ :‬میخواویم وارد یک دایرکتوری به نام ‪ dummy‬شتتویم و فایلوایی که استتمشتتان ‪ ۲‬حرفی‬


‫اس را به ما نشان دود‪:‬‬
‫‪>> cd dummy‬‬
‫??‪>> ls‬‬
‫دو تا؟؟ یعنی ‪ ۲‬حرفی و فایلوای دو حرفی را نمایش میدود‪ .‬ور؟ یعنی یک حرف‪.‬‬
‫میخواویم فایلوای دو حرفی که اوّلش عدد اس را نمایش دود‪:‬‬
‫?]‪>> ls [0-9‬‬
‫میخواویم فایلوایی که اسمشان به عدد ختم میشود را نمایش دود‪:‬‬
‫]‪>> ls *[0-9‬‬
‫میخواویم فایلوایی که آخرشان حرف صدادار دارد را نمایش دود‪:‬‬
‫]‪>> ls *[aciou‬‬
‫میخواویم فایلوایی که از ‪ a‬تا ‪ k‬شروع میشوند را نمایش دود‪:‬‬
‫* ]‪>> ls [a-k‬‬
‫میخواویم فایلوایی که با ‪ a‬شروع نمیشوند را نمایش دود‪:‬‬
‫*]‪>> ls [!a‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪11۶‬‬

‫تعریف ‪abbreviation‬‬
‫ما در ‪ vim‬میتوانیم ‪ abbreviation‬تعریف کنیم به این صورت‪:‬‬
‫‪:abbr p pardis‬‬
‫دویم ‪ pardis‬را‬ ‫‪ insert mode‬حرف ‪ p‬را بزنیم و ستتت س کلید ‪ space‬را فشتتتار‬ ‫حاال اگرد حال‬
‫مینویسد‪:‬‬
‫‪p + space‬‬
‫فصل ‪ 7‬دستگاهها‪ ،‬فایل سیستمها و استاندارد سلسله مراتب‬
‫فایلسیستم‬

‫افزاری ‪Hard Disk‬‬ ‫فرض کنید که یک وارد دیسک جدید تهیه کردهایم‪ .‬پس باید بعد از نصب سخ‬
‫در ماشین‪ ،‬آن را از جه نرمافزاری وم پیکربندی کنیم‪ ..‬در این قسم ما روی یک ‪flash memory‬‬
‫که تکنولوژی آن شبیه به واردوای ‪ SCSI1‬اس این کار را انجام میدویم‪ .‬اولین فرمانی که میزنیم‬
‫این فرمان اس ‪:‬‬

‫‪$ fdisk /dev/sda‬‬

‫‪ sd‬یعنی یا وارد ‪ SCSI‬اس یا ‪ .۲SATA‬حاال فرمان ‪ m‬را میزنیم که به ما میگوید برای انجام ور‬
‫کاری چه فرمانی بزنیم‪ )help( .‬فرمان ‪ p‬را که بزنیم به ما اطالعاتی راجع به فلش که وصل کردیم و‬
‫میخواویم آن را پارتیشنبندی کنیم‪ ،‬میدود‪ .‬در خروجی اطالعاتی در مورد تعداد سیلندروا (برای‬
‫وارددیسکوا)‪ ،‬تعداد سکتوروا و تعداد بایتهای آن را نشان میدود و اینکه چه تعداد پارتیشن روی‬
‫‪ flash memory‬وجود دارد‪.‬‬
‫حاال اگر فرمان ‪ d‬را بزنیم میتوانیم آن پارتیشتتن را پاک کنیم و چون ما یک پارتیشتتن داشتتتیم‬
‫بدون پرستتیدن آن را ‪ delete‬میکند‪ ،‬اگر بیشتتتر از یک پارتیشتتن بر روی فلش درایوی که وصتتل‬
‫کردیم بود‪ ،‬از ما شتتمارهی آن را میپرستتید‪ .‬حاال ‪ n‬را میزنیم که کار اضتتافه کردن یک پارتیشتتن‬
‫جدید را انجام میدود که بعد تعیین میکنیم ‪ primary‬یا ‪ extended‬باشتتتد‪ .‬پس اینکه از کجا‬
‫شروع شود که به صورت ‪ default‬از اوّل میبا شد و س س سایز آن مثالً ‪ 100mb‬میگذاریم که‬
‫‪ M( +100M‬را بهصورت حرف بزرگ مینویسیم)‪.‬‬
‫‪1‬‬ ‫‪Small Computer System Interface‬‬
‫‪۲‬‬ ‫)‪Serial ATA (Advanced Technology Attachment‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪11۸‬‬

‫مسئله‪ :‬میخواویم این ‪ flash‬را به سه پارتیشن تقسیم کنیم به این صورت‪:‬‬ ‫‪‬‬

‫لینوکسی ‪partition 2=200M‬‬


‫‪partition 3=100M‬‬ ‫ویندوزی‬
‫ویندوزی ‪partion1=100M‬‬
‫با شد‪ .‬پس طبق صورت م سئلهای که تعریف کردیم پارتی شنی که ما ایجاد کردیم چون لینوک سی‬
‫اس اشتباه اس ‪ ،‬چون این پارتیشن باید ویندوزی باشد‪ .‬باید نوع آن را تغییر دویم‪ p .‬را میزنیم‬
‫س س ‪ L‬میزنیم و بعد ‪ b‬را میزنیم و تغییر مورد نظر اعمال می شود‪ .‬حاال میخواویم یک ‪200M‬‬
‫لینوکستتتی وم ایجاد کنیم‪ :‬اوّل ‪ n‬را میزنیم و ‪ Primary‬و ‪ 2‬و ‪ +200M‬را میزنیم و ‪ P‬که بزنیم‬
‫میبینیم پارتیشنوایی را ساختهایم‪ .‬حاال میرویم سوّمین پارتیشن را که از ما خواستهاند ویندوزی‬
‫و ‪ 100M‬باشتتد را بستتازیم‪ .‬کلید ‪ n‬را میزنیم ستت س ‪ primary‬و ‪ 3‬و ‪ +100M‬میگیریم و حاال ‪t‬‬
‫میزنیم که به ویندوزی تغییرش دویم و دوباره مثل قبلی ‪( b‬شتتتاید ‪ d‬باشتتتد) میزنیم و تغییر‬
‫میدویم‪ .‬و پروژه تا اینجا تمام میشتود و میخواویم خارج شتویم ‪ w‬را میزنیم که اگر نزنیم ویچ‬
‫پارتیشنبندی انجام نمیگیرد پس حتماً ‪ w‬میزنیم‪.‬‬
‫در صتتتورتی که دا خل ‪ fdisk‬وستتتت ید‪ ،‬یعنی مثالً ‪ fdisk /dev/sda‬زدهاید اگر کل ید ‪( l‬آل‬
‫انگلیسی کوچک) را فشار دوید‪ ،‬نام انواع پارتیشنوا را به ومراه کد آنوا مینویسد‪.‬‬

‫نکته‪ :‬اگر قصد خروج از ‪ fdisk‬بدون اعمال تنظیمات جدید را دارید کلید ‪ q‬را بزنید‪.‬‬ ‫‪‬‬

‫‪device‬‬ ‫فرمان ‪ )Input Output Control( ioctl‬که ب سیار مهم میبا شد در صورتی که بخواویم با‬
‫مستتتقیماً صتتحب کنیم این فرمان را میزنیم‪ .‬اگر بخواوید مثالً یک نرمافزار بنویستتید که درجه‬
‫حرارت دیستتتک را به شتتتما بگوید ‪ IOCTL‬میزنیم و از ‪ Controler‬دیستتتک درجه حرارتش را‬
‫میپرسیم‪( .‬شاید قبلش باید با دیسک احوالپرسی وم بکنید!)‪ .‬حاال که تمام شد این را میزنیم‪:‬‬

‫‪$ fdisk -l -u /dev/sda‬‬


‫وقتی آپشتتن ‪ –u‬را میزنیم‬ ‫که یک ستتری اطالعات میدود و ‪ device‬مورد نظر را فرم نمیکند‪.‬‬
‫اطالعات بیشتتتری روی ستتکتوروا میدود که به ما میگوید ‪( 512m‬برای فلش درایو ما این گونه‬
‫بوده) ا س و سه تا پارتی شن با م شخ صاتش میدود‪ .‬یادتان با شد که ‪ Id‬فایل سیتموای لینوک سی‬
‫‪ 0x83‬اس و ‪ Id‬فایلسیستم ‪ swap‬نیز ‪ 0x82‬اس ‪.‬‬

‫تا اینجا فقط پارتی شن ساختهایم ولی این به تنهایی فایده ندارد؛ مثل این ا س که سه تکه زمین‬
‫داریم ولی نه ویال و نه آپارتمانی در آن نساختهایم‪.‬‬
‫تا اینجا گام اوّل بود‪ .‬حاال به ستتراغ گام دوّم میرویم که با فرمان ‪ mkfs‬شتتروع میشتتود‪ :‬که این‬
‫‪11۹‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫فرمان آپشنوای زیادی دارد‪:‬‬


‫‪$ mkfs -t vfat/dev/sda1‬‬
‫این برای اوّلین پارتیشن بود که از جنس ‪ vfat‬آن را ساختیم‪.‬‬
‫پارتیشن دوّم را بهصورت لینوکسی میسازیم‪:‬‬
‫‪$ mkfs -t ext3/dev/sda2‬‬
‫برای سوّمین پارتیشن وم به این صورت انجام میدویم‪:‬‬
‫‪$ mkfs -t vfat/dev/sda3‬‬
‫و کار به ومین سادگی کامل میشود‪ .‬حاال ‪ Mount‬میکنیم‪.‬‬

‫‪ mount‬و ‪ unmounts‬کردن‬
‫صورت ‪sdX‬‬ ‫وقتی که فلش درایو خود را به کام یوتر مت صل میکنید در م سیر ‪ /dev/‬یک فایل به‬
‫ایجاد می شود که ‪ X‬میتواند یکی از حروف الفبا با شد‪ .‬مثالً در کام یوتر ما‪ ،‬وقتی یک فلش و صل‬
‫میکنم به صورت ‪ /dev/sdb‬ظاور می شود که ن شان دوندهی کل فلش ا س ‪ .‬چون بر روی فل شی‬
‫که من دارم یک پارتیشتتن ‪ fat‬تعریف شتتده استت ‪ ،‬پس یک فایل بهصتتورت ‪ /dev/sdb1‬نیز دیده‬
‫خواود شتتد‪ .‬در صتتورتی که دو تا پارتیشتتن بر روی فلش داشتتتم‪ ،‬یک فایل دیگر نیز بهصتتورت‬
‫‪ /dev/sdb2‬نیز ظاور میشتتتد‪ .‬نام فلش درایو من بهصتتتورت ‪ FILES‬استتت که در مستتتیر‬
‫‪ /media/hamid/FILES‬ظاور میشتتتود‪ .‬با فرمان زیر لیستتت فایلوای موجود در آن را مشتتتاوده‬
‫میکنیم‪:‬‬
‫‪>> ls /media/hamid/FILES‬‬
‫‪ mount‬شده اس ‪ ،‬باید اول آن را‬
‫حاال میخواویم‪ ،‬فلش را از کام یوتر جدا کنیم‪ .‬ازآنجاکه فلش‬
‫‪ unmount‬کنیم تا فایلوای موجود در آن آسیب نبیند‪ .‬یادتان باشد قبل از ‪ unmount‬کردن‪،‬‬
‫فایلوایی را که از فلش باز کردهاید‪ ،‬حتماً ببندید‪ .‬فرمان زیر را میزنیم‪:‬‬
‫‪#>> umount /media/hamid/FILES‬‬
‫صتتتورتی که ب عد از ‪ unmount‬کردن دو باره‬ ‫حاال می توانیم فلش را از کام یوتر جدا کنیم‪ .‬در‬
‫خواستیم‪ ،‬فلش را ‪ mount‬کنیم‪ ،‬کافی اس فرمان زیر را بزنیم‪:‬‬
‫‪#>> mount/dev/sdb1/mnt‬‬
‫به این ترتیب فایلوای موجود در فلش در مسیر ‪ /mnt‬قابل دسترسی اس ‪.‬‬
‫در ا صل کاری که این فرمان ‪ mount‬انجام میدود عبارت از دوختن یا و صل کردن یک پارتی شن‬
‫به یک دایرکتوری ا س ‪ ،‬یعنی ا سم یک پارتی شن ا سم یک دایرکتوری می شود‪ .‬اینجا می شود یک‬
‫دایرکتوری را به آن اختصتتاص داد و ور کس ‪ change dir‬کند به فلش میرود که در پارتیشتتن ‪1‬‬
‫اس ‪.‬‬
‫‪$cd /‬‬
‫‪$ mkdir /flash‬‬
‫‪$ mount/dev/sda/mnt/1 /flash‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۲۰‬‬

‫‪$ cd/flash‬‬
‫‪$ ls -l‬‬
‫میبینیم که خالی اس و چیزی در آن نیس ‪.‬‬
‫حاال پارتی شن دوّم را ‪ mount‬میکنیم‪ .‬یادمان با شد که ما نگفتیم که جنس این پارتی شن چی س‬
‫(‪ ext3‬یا ‪ fat‬یا ‪ ext2‬یا ‪ ،)...‬ولی خود سیستم متوجه شد که ‪ ext3‬وس ‪ .‬از کجا فهمید؟ از اطالعات‬
‫ابتدای دیسک‪ .‬حاال این فرمان را میزنیم‪:‬‬
‫‪$ mount /dev/sda2‬‬
‫‪$ ls –l /mnt‬‬
‫در صورتی که بخواوید ونگام باال آمدن سی ستم پارتی شن خا صی ‪ mount‬شود کافی ا س که‬
‫تغییرات الزم را در فایل ‪ /etc/fstab‬انجام دوید‪ .‬در صورتی که ونگام رو شن بودن سی ستم در این‬
‫فایل تغییراتی را اعمال کردید‪ ،‬میتوانید با د ستور ‪ mount –a‬اثر آن تغییرات را بر سی ستم اعمال‬
‫کنید و نیازی به ‪ restart‬کردن نیس ‪.‬‬
‫نکته‪ :‬م سیر ‪ /media‬حاوی زیردایرکتوریوایی ا س که ممکن ا س جه ‪ mount‬کردن ‪floppy‬‬
‫یا ‪ cdrom‬به کار رود‪ .‬این مسیر شباو زیادی به مسیر ‪ /mnt‬دارد‪.‬‬

‫سؤال‪ :‬وقتی فرمان باال را میزنیم‪ ،‬میبینیم که خالی نیس ‪ .‬یک فایل به نام ‪ lost+found‬در‬ ‫‪‬‬
‫آن اس ‪ .‬این فایل از کجا آمده اس ؟‬

‫پاستتخ‪ :‬در لینوکس وقتی یک پارتیشتتن برایش درستت میکنیم یک دایرکتوری به اجبار با اندازه‬
‫نسبتاً بزرگ به نام ‪ lost+found‬را درس میکند و این دایرکتوری زیرش خالی اس ‪.‬‬
‫موقعی که لینوکس را ن صب میکنیم یک دایرکتوری به ومین نام در س میکند که اگر سی ستم‬
‫‪ crash‬کرد ‪ object‬وایی که نا شناخته ا س را میبرد و در اینجا قرار میدود‪ .‬یادمان با شد در زیر‬
‫این دایرکتوری استتم فایل را نمیبینیم‪ .‬فقط شتتماره فایل را میبینید که شتتماره ‪ index‬آن فایل‬
‫اس ‪ .‬این دایرکتوری خیلی بزرگ اس و موقع نصب لینوکس تعداد زیادی فایل درس میکند و‬
‫پاک میکند تا اندازهاش بیش از حد بزرگ شتتود که اگر فایلی پاک شتتد‪ ،‬اینجا جا باشتتد که قرار‬
‫دود‪ .‬در صورتی که دی سک ‪ full‬با شد‪ ،‬چنین فایلی دور ریخته می شود و ممکن ا س اطالعات از‬
‫دس برود‪.‬‬
‫در گام بعدی میتوانیم برای پارتیشن مورد نظرمان ‪ label‬دویم که البته این اختیاری اس ‪.‬‬
‫با اجرای فرمان ‪ dumpe2fs‬میتوانیم اطالعات بیشتری راجع به فایل سیستمی که تولید نمودهایم‬
‫مشاوده کنیم‪.‬‬
‫‪$ dumpe2fs /dev/sda‬‬

‫‪ ‬نکته‪ :‬یادتان باشد که خروجی دستور باال و ومچنین خروجی دستور ‪ fdisk –l‬را ‪ print‬بگیرید‬
‫و در اتاق کام یوتر نصب کنید که بدانید چه تعداد بکآپ از ‪ super block‬داریم‪ .‬به عالوه در‬
‫‪1۲1‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫صورت داشتن اطالعات این دو دستور در صورتی که وارددیسکی خراب شود امکان بازیابی‬
‫اطالعات توسط تیموای خبرهی بازیابی اطالعات در صورتی که خروجی دو دستور باال را داشته‬
‫باشید‪ ،‬بسیار بیشتر خواود بود‪.‬‬

‫پشتتتیبانی (‪ )backup‬که از ‪ super block‬میگیریم نباید خیلی بزرگ شتتود زیرا اگر بزرگ شتتود و‬
‫تعداد زیادی ‪ back up‬دا شته با شد ف ضای دی سک پر می شود عموماً ور ‪ ۳‬ثانیه یکبار باید تعداد‬
‫زیادی را ‪ update‬کند ولی فایدهای که دارد این اس که اگر سیستم ‪ crash‬کند در جاوای مختلف‬
‫نسخهی پشتیبان از ‪ super block‬خواوید داش ‪.‬‬

‫فضای ‪swap‬‬

‫در ونگام نصب لینوکس اگر دق کنید‪ ،‬امکان تعریف و داشتن فضای ‪ swap‬وجود دارد‪ .‬بعد از نصب‬
‫وم به کمک ابزاروای مختلف‪ ،‬مثل ‪ parted‬و ‪ ،gparted‬امکان تعریف آن وس ‪.‬‬
‫یکی از کاربردوای مهم فضای ‪ swap‬در وقتی اس که فضای ‪ RAM‬در حال پرشدن اس ‪ ،‬در این‬
‫صورت لینوکس از فضای ‪ swap‬برای کمک به ‪ RAM‬استفاده میکند‪ .‬اما این تنها استفادهی فضای‬
‫‪ swap‬نیس ‪ .‬اگر سیستمعامل دچار مشکل شود‪ ،‬در این صورت ‪ core‬فایل تولید میکند و ومینطور‬
‫اطالعات مهمی در فضای ‪ swap‬نوشته میشود که بعداً میتواند برای رفع اشکال سیستم استفاده شود‪.‬‬
‫بنابراین داشتن فضای ‪ swap‬حتی به اندازهی چند ده مگابای میتواند در مواقع حساس فوقالعاده‬
‫کاربرد داشته باشد‪ .‬پس باال آوردن لینوکس بدون ‪ swap‬توصیه نمیشود‪.‬‬
‫شتترایطی ممکن است پیش آید که در آن فضتتای ‪ swap‬در نظر گرفته شتتده نیز کافی نباشتتد‪ .‬در‬
‫چنین شتتترایطی یکی از راهوا استتتتفاده از فایل بهعنوان ‪ swap‬استتت ‪ .‬یک فایل صتتتد مگابایتی‬
‫میسازیم‪:‬‬
‫‪#$ dd if=/dev/zero of=/tmp/newswap bs=1M count=100‬‬
‫ساخته شد‪ ،‬فقط باید ‪ root‬به آن دسترسی داشته باشد‪:‬‬ ‫بعد از آنکه فایل‬
‫‪#$ chmod 600/tmp/newswap‬‬
‫حاال که فایل ساخته باید آن را تبدیل کنیم به ‪ ،swap‬فرمان زیر را میزنیم‪:‬‬
‫‪#$ mkswap/tmp/newswap‬‬
‫و با زدن فرمان زیر آن را فعال میکنیم‪:‬‬
‫‪#$ swapon /tmp/newswap‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۲۲‬‬

‫برخی دستورات مهم‬


‫توضیح‬ ‫نام دستور‬
‫اطالعات مربوط به مصرف دیسک را نشان میدود‪.‬‬ ‫‪df‬‬
‫اطالعات مربوط فضای دایرکتوریوا و فایلوا را نشان‬ ‫‪du‬‬
‫میدود‪ .‬مثالً برای اینکه حجم یک دایرکتوری ‪home‬‬
‫را به دس آورید‪ ،‬فرمان زیر را بزنید‪:‬‬
‫‪du –sh /home‬‬
‫در فصل ‪ ۲‬ومین کتاب در مورد این دستور توضیح‬ ‫‪fsck‬‬
‫دادیم‪ .‬برای وارسی و رفع اشکال فایلسیستموای‬
‫لینوکس به کار میرود‪.‬‬
‫جه وارسی و رفع اشکال فایلسیستموای‬ ‫‪e2fsck‬‬
‫‪ ext2/ext3/ext4‬به کار میرود‪.‬‬
‫جه ایجاد فایل سیستم ‪ ext2/ext3/ext4‬بر روی‬ ‫‪mke2fs‬‬
‫ال توسط ابزار ‪ fdisk‬ایجاد شده اس به‬ ‫پارتیشنی که قب ً‬
‫کار میرود‪ .‬قبل از استفاده از این دستور باید مورد نظر‬
‫ساخته شده باشد که معمو ًال توسط ابزار ‪ fdisk‬یا‬
‫‪ parted‬یا ‪ gparted‬صورت میگیرد‪.‬‬
‫توجه‪ :‬کار با این ابزار خطرناک اس و برای افراد‬ ‫‪debugfs‬‬
‫مبتدی توصیه نمیشود‪.‬‬
‫جه بررسی دقیق و مسائل داخلی فایلسیستموای‬
‫‪ ext2/ext3/ext4‬به کار میرود‪ .‬در صورتی که فایلی را‬
‫به اشتباه ‪ rm‬کردهاید‪ ،‬میتوانید با این ابزار برای‬
‫بازیابی آن تالش کنید‪.‬‬
‫ابزاری برای تغییر پارامتریوای قابل تنظیم‬ ‫‪tune2fs‬‬
‫فایلسیستموای ‪ext2/ext3/ext4‬‬

‫فایل سیستم ‪XFS‬‬


‫این فایل سی ستم تو سط )‪ Silicon Graphics (SGI‬تو سعه داده شد و بعدوا به لینوکس پیو س ‪.‬‬
‫این فایل سی ستم نیز جزو فایل سی ستموای ب سیار پی شرفته ا س ‪ .‬ورگاه با فایل سی ستم ‪ xfs‬ی‬
‫مواجه شدید میتوانید از ابزار ‪ xfs_info‬جه وار سی آن ا ستفاده نمایید‪ .‬بهعنوانمثال اگر ‪sda7‬‬
‫یک پارتی شن با فایل سی ستم ‪ xfs‬بر روی وارد دی سک اول ما (‪ )sda‬با شد در این صورت به کمک‬
‫دستور ‪ $ xfs_info /dev/sda7‬اطالعات مربوط به آن را در خروجی مشاوده خواویم کرد‪.‬‬
‫‪1۲۳‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫مالک و مجوزهای فایل‬


‫در لینوکس ور ‪ object‬که ایجاد می شود یک شنا سه منح صر به فرد دارد که اطالعات و مجوزوا و‬
‫صاحب ور ‪ object‬را مشخص میکند‪ .‬وقتی فرمان ‪ ls -l‬را میزنیم‪ ،‬اطالعات و مشخصات فایلوا را‬
‫مشخص میکند‪ .‬اولین فیلد اطالعاتی شامل مجوزوا میباشد‪ .‬سم چپترین کاراکتر اگر ‪ d‬باشد‬
‫یعنی دایرکتوری ا س و اگر – با شد یعنی فایل ا س ‪ .‬در ف صلوای قبل در این مورد تو ضیحات‬
‫مفصلی ارائه کردیم‪.‬‬
‫بعد از ستتم چپترین کاراکتر در فیلد اول ‪ ۹‬کاراکتر دیگر وم در این فیلد مشتتاوده میکنیم که‬
‫سه د سته و ستند‪ .‬سهتای اول مربوط به ‪ owner‬یعنی صاحب فایل ا س و ‪read write execute‬‬
‫(‪ )rwx‬یعنی مجوز خواندن‪ ،‬نوشتتتتن و اجرا کردن را نشتتتان میدود‪ .‬اگر به جای ور کدام از این‬
‫کاراکتروا – بود یعنی اجازه ی انجام آن کار را ندارد‪ .‬ستتته تای دوم مربوط به وم گروه وای آن‬
‫‪ userid‬استت و ‪ group‬که مشتتخص میکند وم گروهوای آن ‪ userid‬چه ‪permission‬وایی دارند‪.‬‬
‫‪ )rwx( read write execute‬و ستتته تای آخر وم مجوزوای مربوط به ‪ other‬را مشتتتخص میکند‪،‬‬
‫یعنی افراد غریبه چه مجوزوایی دارند‪ .‬بهعنوانمثال مجوز زیر میتواند مربوط به یک فایل باشد‪:‬‬
‫‪-rwxr--r--‬‬
‫به یاد دا شته با شید که ویچ وق در لینوکس ا سم فایل و یا فرمانی را بهطور کامل تایپ نکنید و‬
‫ومیشه از کلید ‪ tab‬که ‪ command completion‬اس استفاده کنید‪ .‬حاال با این فرمان از ور جایی‬
‫که وستیم به خانهی خودمان میرویم‪:‬‬
‫‪>> cd/home/‬‬
‫چون باید ‪root‬‬ ‫و از آنجا به خانه یک فرد دیگر میرویم که پیغام ‪ permission denied‬میگیریم‬
‫باشیم تا این مجوز فعال شود و اجازه داشته باشیم‪:‬‬
‫‪>> cd /a.Niki/‬‬
‫‪Permission denied‬‬
‫حاال اگر مجوزوا را تغییر دویم میتوانیم به خانهی فرد برویم که با فرمان ‪ chmod‬میتوانیم مجوزوا‬
‫را تغییر دویم‪ ۷۷۷ .‬یعنی ومه می توانند ومه کاری را انجام دوند‪ ،‬ور فردی چه غریبه و چه ومگروه‬
‫میتوانند ومه کاری انجام دوند‪.‬‬
‫سؤال‪ :‬اجازهی اجرای دایرکتوری یعنی مجوز ‪ x‬برای یک دایرکتوری چیس ؟‬
‫پس ور فایل در لینوکس دارای ‪ owner‬یا مالک اس ت که میتوانید آن را در خروجی دستتتور – ‪ls‬‬
‫‪ alh‬مشتتاوده نمایید‪ .‬ومچنین عبارتی شتتبیه ‪ rwxrwxrwx‬در خروجی دستتتور ‪ ls –alh‬مشتتاوده‬
‫میکنید که ستتطح دستتترستتی به آن فایل یا دایرکتوری را نمایش میدود‪ .‬در جدول زیر اطالعات‬
‫مربوط به دستورات آن آمده اس ‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۲۴‬‬

‫توضیح‬ ‫فرمان‬
‫مجوزوای فایل داده شده را به عدد مبنای وش وارد شده تغییر‬
‫میدود‪ .‬که به ترتیب ‪ rwx‬یعنی ‪ write ،read‬و ‪execute‬‬
‫را نشان میدود‪ .‬مثالً برای اینکه فایلی ‪ ali.jpg‬توسط دیگران‬
‫‪chmod octal file‬‬
‫قابل خواندن باشد و توسط صاحب آن قابل خواندن و نوشتن‬
‫فرمان ‪ chmod 644 ali.jpg‬را میزنیم‪ .‬برای اطالعات‬
‫بیشتر به صفحهی ‪ man chmod‬مراجعه کنید‪.‬‬
‫مالکی فایل یا دایرکتوری داده شده را به نام کاربری داده شده‬
‫تغییر میدود‪ .‬برای اطالعات بیشتر به ‪ man chown‬مراجعه‬ ‫‪chown ownerName file‬‬
‫نمایید‪.‬‬
‫سطحدسترسی به فایل در ونگام ساخته شدن آن‪man .‬‬
‫‪umask‬‬
‫‪ umask‬را مطالعه کنید‪.‬‬
‫تغییر گرووی که فایل متعلق به آن اس ‪.‬‬ ‫‪chgrp‬‬

‫ساختن لینک‬
‫در لینوکس ما میتوانیم به یک فایل تا ‪ ۲۵۵‬تا اسم بدویم (با استفاده از ‪ .)hard link‬فرمان ‪ ln‬که‬
‫مخفف ‪ link‬میباشد در لینوکس برای دادن چندین اسم به یک فایل به کار میرود‪ .‬ابتدا یک فایل‬
‫میسازیم با فرمان ‪ ls –l‬مشخصات آن را میبینیم که اندازهی آن صفر اس ‪.‬‬
‫‪>> > F1‬‬
‫‪>> ls-l‬‬
‫اگر بخواویم دو تا اسم دویم از فرمان ‪ ln‬استفاده میکنیم‪ .‬خوب اس که ‪ manual‬آن را ببینیم‪:‬‬
‫‪>> man ln‬‬
‫‪>>ln F1 F2‬‬
‫‪>>ln F1 F3‬‬
‫حاال ‪ F1‬سه تا اسم دارد‪ .‬پس فرمان ‪ ln‬که مخفف ‪ link‬اس و چندین کاربرد دارد‪:‬‬
‫‪ .1‬فایلوای با نام طوالنی را میتوانیم یک اسم کوتاه بدویم‪.‬‬
‫‪ .۲‬به یک فایل میتوانیم چندین نام به زبانوای مختلف بدویم‪.‬‬
‫‪ .۳‬تغییرات در ور چند فایل بهصورت ومزمان اعمال میشود‪.‬‬
‫‪ .۴‬با پاک شدن یکی از فایلوا در صورت وجود نام دیگر بهطور کامل نابود نمیشود‪ ،‬چون ‪ ۲‬تا اسم‬
‫دارد از روی دیسک پاک نمیشود‪..‬‬

‫فرمان ‪ rm‬فایل را پاک میکند‪:‬‬


‫‪>>rm F2‬‬
‫حاال فایلی که ساختیم دو اسمی میشود‪.‬‬
‫سؤال‪ :‬آیا ‪ F3‬یک ک ی از ‪ F2‬اس ؟ چطور بفهمیم که یکی وستند؟‬
‫‪1۲۵‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫در لینوکس ور ‪object‬ی که در یک پارتیشن درس میکنیم به آن یک عدد صحیح و مثب‬


‫اختصاص میدود که اگر قبل از دستور ‪ ls -l‬یک ‪ -i‬وم بنویسیم یعنی ‪ index‬یا شمارهی آن را وم‬
‫میدود و شماره ‪ F1‬و ‪ F3‬را میبینیم که یکی اس ‪ .‬ور ‪ object‬در لینوکس درس شود یک شماره‬
‫دارد که به آن ‪ )index node( inode‬میگویند‪ .‬یادتان باشد که ‪ inode‬وا در سطح ور پارتیشن یکتا‬
‫وستند‪ ،‬پس ممکن اس دو فایل متفاوت در دو پارتیشن متفاوت دارای یک ‪ inode‬باشند که ویچ‬
‫مشکلی ندارد‪ ،‬زیرا دو پارتیشن از وم جدا وستند‪.‬‬
‫حاال اگر ‪ ls –i‬بزنیم میبینیم که شماره این سه فایل یعنی ‪ inode‬آنوا یکی اس ‪ ،‬البته چون یکی‬
‫از آنوا را ‪ delete‬کردیم االن دو تا فایل داریم که ‪ f1‬و ‪ f3‬وستند که ‪ inode‬آنوا یکی اس ‪.‬‬
‫‪>> ls -i‬‬
‫با فرمان ‪ find‬میتوانید فایلوایی که وم اسم وستند را پیدا کنید و در خروجی نشان دوید‪ .‬حاال‬
‫یک دایرکتوری میسازیم تا ببینیم به تناقض میرسیم یا نه؟‬
‫‪>>mkdir test2‬‬
‫‪>>ls -l‬‬
‫سؤال‪ :‬می بینیم که این دایرکتوری که تازه ساختیم و ویچ ‪ ln‬ی وم به آن نداشتیم تعداد‬
‫ال یک دایرکتوری ‪ etc‬داریم که ‪ ۲۵۵‬اسم دارد آیا میتواند درس‬ ‫لینکوایش ‪ ۲‬اس ‪ .‬چرا؟ مث ً‬
‫باشد؟ تعداد لینکوای دایرکتوری در ومان ابتدا ‪ ۲‬اس ولی برای فایل ‪ 1‬اس ‪ .‬چرا؟‬
‫در لینوکس به کمک دستتتور ‪ ln‬امکان ستتاختن لینک به یک فایل وجود دارد‪ .‬لینکوا بر دو نوع‬
‫وستند‪ :‬لینک نرم و لینک سخ ‪.‬‬
‫لینک نرم ومانند ‪ shortcut‬در ویندوز است ‪ .‬یعنی یک فایل ستتاخته میشتتود که به آدرس اصتتلی‬
‫فایل اشتتاره میکند‪ .‬در توزیعوای معتبر لینوکس حذف کردن لینک نرم‪ ،‬ورگز باعث حذف شتتدن‬
‫فایل اصلی نمیشود‪ .‬به کمک دستور ‪ ln‬و با آرگومان ‪ –s‬میتوانید لینک نرم بسازید‪.‬‬
‫لینک ستتخ ‪ ،‬نام دیگری برای فایل اصتتلی است ‪ .‬تا زمانی که تعداد لینکوای ستتختی که به یک‬
‫فایل اشاره می کنند بیشتر از صفر باشد آن فایل از سیستم حذف نشده اس ‪ .‬توجه داشته باشید‬
‫که اگر یک فایل دا شته با شید که حجم آن ‪ 1GB‬با شد و ‪ 1۰‬تا لینک سخ به آن دا شته با شید‪،‬‬
‫حجمی که از وارد شما اشغال میشود ورگز ‪ 10GB‬نیس ‪ ،‬بلکه ومان ‪ 1GB‬اس ‪.‬‬
‫پس در اصل تمام فایلوا یا لینک نرم وستند یا لینک سخ ‪ .‬برای درک اینکه یک فایل لینک نرم‬
‫اس یا لینک سخ ‪ ،‬کافی اس خروجی دستور ‪ ls –alh‬را مشاوده نمایید‪ .‬آنوایی که لینک نرم‬
‫وستند یک عالم >‪ -‬به فایل اصلی‪ ،‬که لینک سخ اس ‪ ،‬دارند‪.‬‬

‫ابزارهای جستجو‬
‫اگر در لینوکس بخواویم یک فایل را جستتتتجو کنیم مثالً فایلی با نام مشتتتخص که میدانیم چند‬
‫حرفی و یا با یک حرف مشخصی شروع می شود و یا با عدد شروع می شوند و یا ‪ ...‬به روشوای زیر‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۲۶‬‬

‫آن را پیدا میکنیم‪:‬‬


‫مثال‪ :‬فایلوایی که اسمشان یک حرفی اس ‪:‬‬
‫?‪>> ls -l‬‬
‫‪-rw-r—r—1 n.pardis lpi1 0 Oct 13 2010 2‬‬
‫فایلی به نام ‪ ۲‬را پیدا میکند که اسمش یک حرفی اس ‪.‬‬
‫مثال‪ :‬فایلوایی که با ‪ w‬شروع میشوند و به عدد ختم میشوند‪:‬‬
‫]‪>> ls -l w*[0-9‬‬
‫‪-rwx------ 1 n.pardis lpi1 102 Mar 7 17:41 while1‬‬
‫مثال‪ :‬فایلوایی که با حروف با صدا شروع میشوند و به عدد ختم میشوند‪:‬‬
‫]‪>> ls -l [aeoiu]*[0-9‬‬
‫‪-rw-r--r-- 1 n.pardis lpi1 268 Oct 24 2010 exercise1‬‬
‫‪-rwx------ 1 n.pardis lpi1 34 Oct 20 2010 exit1‬‬
‫مثال‪ :‬فایلوایی که با ‪ a-z‬و ‪ A-Z‬شروع نشوند‪:‬‬
‫*]‪>> ls -l [!a-zA-Z‬‬
‫‪-rw-r--r-- 1 n.pardis lpi1 0 Oct 13 2010 2‬‬
‫]‪-rw-r--r-- 1 n.pardis lpi1 0 Oct 13 2010 2‬‬
‫‪-rw-r--r-- 1 n.pardis lpi1 0 Oct 24 2010 @lpi ~]$‬‬
‫را نمایش دویم که با ‪ i‬یا ‪ B‬شروع شوند به حروف با صدا ختم شوند‪:‬‬ ‫مثال‪ :‬میخواویم فایلوایی‬
‫]‪>> ls -l [iB]*[aeiou‬‬
‫‪ls: [iB]*[aeiou]: No such file or directory‬‬
‫برای یادگیری بهتر فرمان ‪ ls‬به جزوهی آن مراجعه شود‪:‬‬
‫‪>> man ls‬‬
‫پس ومچنان که پیشتر در این کتاب گفتیم‪ ،‬در لینوکس ابزاروایی برای جستجوی فایلوا وجود‬
‫دارد‪ ،‬که توضیح آنوا در جدول زیر آمده اس ‪.‬‬
‫توضیح‬ ‫نام دستور‬
‫تمام نمونهوای مربوط به فایل را در پایگاه داده موجود از فایلوا جستجو میکند‪.‬‬
‫‪locate file‬‬
‫برای به روز رسانی پایگاهدادهی آن از فرمان ‪ updated‬استفاده کنید‪.‬‬

‫با شروع از دایرکتوری ‪ root‬به دنبال فایل با نام داده شده میگردد‪.‬‬
‫‪find / -name‬‬
‫‪filename‬‬
‫با شروع از دایرکتوری ‪ root‬به دنبال فایلی که در نام آن رشتهی داده شده وجود‬ ‫‪find / -name‬‬
‫دارد‪ ،‬میگردد‪.‬‬ ‫”*‪“*filename‬‬
‫پایگاهدادهی مربوط به فایلوای موجود در تمام فایلسیستموای الحاق شده به به‬
‫دایرکتوری ‪ root‬لینوکس را ایجاد به بهروزرسانی میکند‪ .‬فایل تنظیمات مربوط به‬ ‫‪updated‬‬
‫آن در مسیر ‪ /etc/updated.conf‬قرار دارد‪.‬‬
‫محل قرار گرفتن ‪ ،binary‬کد منبع‪ ،‬و صفحهی راونمای مربوط به یک دستور‬
‫‪whereis‬‬
‫لینوکس را نمایش میدود‪ .‬مثالً بزنید ‪whereis ls‬‬
‫محل قرار گرفتن فایل ‪ binary‬دستور مورد نظر را نشان میدود‪ .‬مثالً بزنید‪:‬‬ ‫‪which‬‬
‫‪1۲۷‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫توضیح‬ ‫نام دستور‬


‫‪which vi‬‬
‫در مورد این دستور قبالً توضیح دادهایم‪ .‬در مورد نوع یک دستور‪ ،‬توضیحاتی را‬
‫‪type‬‬
‫نمایش میدود‪ .‬مثالً بزنید ‪type –a ls‬‬

‫‪ Quota‬چیست؟‬
‫در مفهوم فارسی به نام سهمیهبندی کردن چیزی شناخته میشود‪ .‬در دنیای کام یوتر ‪ Quota‬به‬
‫مفهوم فضای از دیسک که اس که در اختیار کاربر قرار داده میشود و به ‪ admin‬این امکان را‬
‫میدود که قبل از اینکه کاربر بیش از اندازه از پارتیشن و فضای دیسک بطور کامل استفاده کند‬
‫مطلع شود ‪.‬که به آن ‪Disk quota‬گفته میشود‪Disk quota .‬میتواند بر روی فضای اختصاص داده‬
‫شده ‪ Disk‬کنترل داشته باشد که به آن ‪ Block‬گفته میشود‬

‫مراحل پیاده سازی‪Quota‬‬


‫‪ :1‬کنترل ‪ rpm‬نصب شده و در صورت نیاز نصب آن‬
‫*‪rpm –qa quota‬‬
‫‪ :۲‬فعال کردن ‪ Quota‬بر روی فایل سیستم دلخواه با تغییر بر روی فایل‪/etc/fstab‬‬
‫‪ umount‬و ‪ mount‬که به آن ‪ remount‬گفته میشود‪.‬‬ ‫‪:۳‬‬
‫‪ :۴‬ایجاد دیتابیس ‪ Quota‬بر روی دیسک مورد نظر‬
‫‪ :۵‬ایجاد سیاس وای‪Quota‬‬

‫فعال کردن‪Quota‬‬
‫نکته ‪ :1‬فعال کردن ‪ Quota‬تنها با سطح دسترسی ‪ root‬قابل انجام میباشد‪.‬‬
‫نکته ‪: ۲‬قبل از فعال کردن ‪ Quota‬الزم ا س تا ف ضای دی سک مورد نظر آماده شود برای محقق‬
‫شدن این مورد ‪.‬مراحل زیر باید انجام شود‪.‬‬
‫‪ :1‬بررسی دیسکوای موجود بر روی سیستم توسط دستور‪fdisk –l‬‬
‫‪ :۲‬ساختن فضای مناسب‪ ،‬درصورت موجود بودن تنها کنترل شود‪.‬‬
‫‪ o‬ساختن پارتیشن الزم‬
‫‪ o‬فرم کردن پارتیشن ساخته شده‬

‫برای فعال کردن ‪ Quota‬الزم اس تا فایل ‪ fstab‬در مسیر ‪ /etc/‬ویرایش شود‪ .‬قبالً در مورد فایل‬
‫‪ fstab‬در این کتاب صحب شده اس ‪ .‬برای یادآوری‪ fstab ،‬فایلی اس که اطالعات الزم در مورد‬
‫فایل سیستموایی که قرار اس سیستم عامل در موقع روشن شدن به منظور ‪ mount‬کردن فایل‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۲۸‬‬

‫سیستموا از آن استفاده کند وجود دارد که داری ‪ ۶‬قسم میباشد‪ .‬برای فعال کردن ‪ Quota‬الزم‬
‫اس توسط ویرایشگر ‪ vi‬و یا ‪ vim‬فایل ‪ fstab‬را از مسیر ‪ etc/fstab /‬به شکل زیر ویرایش شود که در‬
‫قسم چهارم از فایل ‪ fstab‬دو گزینه با نام‪ usrquota‬و ‪ qrpquota‬اضافه گردد‪ .‬این دو اصطالح جه‬
‫فعال کردن ‪ Quota‬ضروری بوده و بسته به اینکه محدودی در سطح کاربر میباشد و یا گروه اضافه‬
‫میشود‪.‬‬

‫فعال کردن‪journal quota‬‬


‫موارد زیر به فایل ‪ fstab‬اضافه شود‪:‬‬
‫‪usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0‬‬
‫بعد از تغییر فایل ‪ fstab‬الزم اس جه اعمال تغییرات فایل سیستم مورد نظر ‪Umount‬و ‪Mount‬‬
‫شود و اگر ونوز ‪ Mount‬نشده جه ‪ mount‬کردن از دستور ‪ Mount –a‬استفاده شود تا تغییر‬
‫ایجادشده در فایل موقع ‪ Mount‬شدن اعمال گردد و یا درصورت ‪ Mount‬بودن میتوانید از دستور‬
‫زیر استفاده کنید‬
‫‪mount –o remount /mount point‬‬
‫بر روی فایل سیستمی اعمال شده اس که درحال استفاده میباشد ‪.‬‬ ‫نکته ‪:‬در صورتی که محدودی‬
‫جه اعمال تغییرات الزم اس سیستم ‪ reboot‬شود‪.‬‬

‫ایجاد دیتابیس‪Quota‬‬
‫ایجاد دیتابیس ‪ Quota‬باید از دستور زیر استفاده شود‪.‬‬ ‫در جه‬
‫‪quotacheck [-gubcfinvdMmR] [-F quota-format] -a | filesystem‬‬
‫برر سی یک فایل سی ستم از جه ‪ ،disk usage‬و ایجاد‪ ،‬برر سی و تعمیر‬ ‫ابزار ‪ quotacheck‬جه‬
‫فایلوای ‪ quota‬به کار میرود‪.‬‬
‫بعد از اجرای دستور باال دیتابیس مربوط به ‪ Quota‬ساخته می شود که به صورت دو فایل با ناموای‬
‫‪ aquota.user and aquota.group‬اس ‪.‬‬
‫نکته ‪:‬درصورتیکه فایلوای ساخته شده از نوع‪ quota.user or quota.group‬باشند این به این مفهوم‬
‫اس که ورژن ‪ quota‬شماره ‪ 1‬اس و درصورت وجود فایل اول ورژن ‪ ۲‬میباشد‪ .‬دستور الزم جه‬
‫تبدیل ورژن قدیم به جدید ‪ convertquota‬میباشد‪.‬‬

‫‪Quota Policy‬‬
‫برای پیاده سازی سیاس وای ‪ quota‬باید از دستور ‪ edquota‬استفاده کرد که ابزاری برای ایجاد‬
‫سیاس وای سهمیهبندی بر اساس کاربر و یا گروه کاربری میباشد‪.‬‬
‫‪1۲۹‬‬ ‫فصل ‪ ۷‬دستگاهوا‪ ،‬فایل سیستموا و استاندارد سلسله مراتب فایلسیستم‬

‫‪quota‬در سطح کاربری و گروه کاربری‬


‫‪edquota [-u | -g] [-F format-name] [-f filesystem] -T username | groupname...‬کاربری ‪:‬‬
‫مراحل الزم برای راهاندازی ‪ quota‬در سطح کاربری‬
‫‪ :1‬دستور روبرو را وارد کنید‬
‫‪edquota –u User‬‬

‫‪repquota‬‬
‫دستوری جه گزارشگیری از محدودی اعمال شده مورداستفاده قرار میگیرد ‪.‬که در ‪ help‬به آن‬
‫‪ summarize quotas for a filesystem‬گفته میشود‪ .‬داری ساختار زیر میباشد که مهمترین آنوا‬
‫‪augv‬میباشد‪.‬‬
‫]‪/usr/sbin/repquota [-avtsiug] [-c | -C] [-t | -n] [-F format-name‬‬
‫‪a- Report on all filesystems indicated in /etc/mtab to be read- write with quotas‬‬
‫‪u- Report quotas for users.‬‬
‫‪g- Report quotas for groups.‬‬
‫‪v- Report all quotas, even if there is no usage Be also more ver-bose about quotafile‬‬
‫‪information‬‬
‫فرمان ‪quotaon‬‬
‫اجرای این فرمان باعث میگردد که عمل کنترل فضای گرفته شده توسط کاربران فعال گردد‪.‬‬
‫فرمان ‪quotaoff‬‬
‫اجرای این فرمان باعث میگردد که عمل کنترل فضای گرفته شده توسط کاربران غیر فعال گردد‪.‬‬
‫فصل ‪ 8‬نوشتن اسکریپت و مدیریت دادهها‬
‫در این فصل با نوشتن چند اسکری در شل با برنامهنویسی شل آشنا خواویم شد و از این امکان‬
‫برای مدیری دادهوا و ومچنین مدیری سروروا استفاده خواویم کرد‪.‬‬
‫فصل را با یک مثال ادامه میدویم‪.‬‬
‫‪down‬‬ ‫مثال‪ :‬برنامهای بنویسید که یک ‪ IP‬بگیرد و کام یوتر مربوطه را کنترل کند و اگر سیستم‬
‫بود به ‪ admin‬یک ایمیل ارسال کند‪.‬‬
‫نکته‪ :‬چطور میشود فهمید که یک کام یوتر ‪ up‬اس یا ‪down‬؟ فرمان ‪ ping‬را اجرا میکنیم‪.‬‬
‫‪>> ping 192.168.100.1‬‬
‫‪special‬‬ ‫‪ ۵۶‬حرف که عبارت اس از حروف الفبا به اضافه‬ ‫‪،ICMP1‬‬ ‫‪ ping‬با استفاده از پروتکل‬
‫‪ character‬میفرستد و اگر دوباره برایش پس فرستاد میفهمیم که ‪ up‬اس ‪.‬‬
‫)‪ ping (packet internet Groper‬به معنی در تاریکی به دنبال چیزی گشتتتن اس ت ‪ ping .‬بیشتتتر‬
‫برای رفع ا شکال ا ستفاده می شود‪ .‬اگر ما در این پروژه ‪ ping‬کنیم مدام در حال پر سیدن و جواب‬
‫گرفتن استتت و اگر ‪ ۶‬ماه بعد وم بیاییم باز وم ومین کار را دارد انجام میدود‪ .‬حاال صتتتفحهی‬
‫راونمای ‪ ping‬را بخوانید و بگویید چه کار کنیم که ‪ 1‬بار بیشتتتتر ‪ ping‬نکند‪ .‬پس از آپشتتتن ‪–c1‬‬
‫استفاده میکنیم که یک بار بیشتر نفرستد‪.‬‬
‫‪>> ping 192.168.100.1‬‬
‫‪>> vi test2‬‬
‫‪#!/bin/bash‬‬
‫به این خط که با عالم !‪ #‬شروع شده‪ shebang ،‬میگویند‪ .‬با نوشتن این خط میگوییم که این‬
‫نرمافزار را چه کسی اجرا میکند و در این مثال ‪ bash‬آن را اجرا میکند‪ .‬خط زیر صفحه را پاک‬
‫میکند‪.‬‬
‫‪clear‬‬
‫`‪x=`date‬‬
‫‪read -p "please enter ip:" ip‬‬

‫‪1‬‬ ‫‪internet control message protocol‬‬


‫‪1۳1‬‬ ‫و مدیری دادهوا‬ ‫فصل ‪ ۸‬نوشتن اسکری‬

‫این خط پیغامی را روی صفحه مینویسد و توقع دارد ‪ ip‬بدویم‪.‬‬


‫‪ping -c1 $ip>/dev/null 2>/dev/null‬‬
‫بهطور کلی ور نرمافزاری تعدادی ورودی میخواود و حداقل دو تا خروجی دارد‪:‬‬
‫‪ )1‬خروجی استاندارد‬
‫‪ )۲‬خروجی خطا‬
‫نرمافزاری که خروجی اش ومی شه یک چیز در س و م شخ صی ا س ومی شه به ‪standard output‬‬
‫میفرستد و اعتراض و پیغاموای خطایش را به خروجی خطا میفرستد‪.‬‬
‫نکته‪ :‬در اجرای برخی دستتتورات از عالم ‪ 2>&1‬استتتفاده میشتتود؛ یعنی ‪ ۲‬جایی برود که ‪1‬‬
‫میرود‪.‬‬
‫نکته‪ 1</dev/null :‬یعنی ما نمیخواویم خروجی اجرای این برنامه را ببینیم و خروجی دور ریخته‬
‫شود‪.‬‬
‫نکته‪ 2 </dev/null :‬یعنی خروجی خطا را نمیخواویم ببینیم و دور ریخته شود‪.‬‬
‫نکته‪ :‬در تمامی سیستمعاملوا ور فرمانی که اجرا شود احتماالً یک خروجی داشته و یک کد نیز‬
‫بر میگرداند‪ .‬اگر فرمان به خوبی تمام شود کدش صفر اس و ور فرمانی اجرا نشود و ‪ error‬دود و‬
‫نتیجهای که خواستیم ندود‪ ،‬غیرصفر اس ‪.‬‬
‫فرمان دیگری که داریم و برای ادامه حل این مثال نیاز داریم بدانیم این استتت که باید بفهمیم‬
‫وقتی ‪ ping‬کردیم‪ ،‬چطور بفهمیم که ‪ ping‬با موفقی انجام شده و سی ستم ‪ up‬ا س ؟ فرمانی که‬
‫در اینجا مطرح می شود فرمانی اس که نتیجه نهایی فرمان قبلی که اجرا شده را به ما میدود که‬
‫اگر صفر با شد‪ ،‬با موفقی انجام شده در غیر این صورت اگر ور عددی غیر از صفر با شد به معنی‬
‫عدم موفقی فرمان قبلی میباشد‪.‬‬
‫?‪>> echo $‬‬
‫‪0‬‬
‫مقدار تابع ‪ date‬را میگیرد `‪ x=`date‬یکبار ‪ ping‬میکند‪.‬‬
‫اگر ‪ ping‬انجام شد و یا به ور دلیلی انجام نشد را از طریق ساختار شرطی ‪ if‬چک میکنیم که در‬
‫زبانوای برنامهنویسی برای شرط بود و شرطی را بیان میکرد‪:‬‬
‫‪>> type if‬‬
‫‪if is a shell keyword‬‬
‫پس در ادامه برای حل مثال گفتهشده داریم‪:‬‬
‫‪If [$?!=0]; then‬‬
‫به ‪ admin‬ایمیل میکند‪:‬‬
‫‪echo $ip $x |mail -s "server is down…" admin‬‬
‫‪else‬‬
‫"‪echo "server is up‬‬
‫‪fi‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۳۲‬‬

‫بنابراین پروژه ما به اتمام رسید و کد نوشته شده به این صورت اس ‪:‬‬


‫‪#!/bin/bash‬‬
‫‪clear‬‬
‫`‪x=`date‬‬
‫‪read -p "please enter ip:" ip‬‬
‫‪ping -c1 $ip>/dev/null 2>/dev/null‬‬
‫‪if [$?!= 0] then‬‬
‫‪echo $ip $x | mail -s "server is down…" admin‬‬
‫‪else‬‬
‫"‪echo "server is up‬‬
‫‪fi‬‬
‫از ‪ vim‬خارج میشویم و ‪ permission‬میدویم و آن را اجرا میکنیم‪:‬‬
‫‪>> chmod 700 test2‬‬
‫‪>>./test2‬‬
‫را نگه داریم آن را در یک متغیر (با حرف بزرگ) به نام ‪ X‬میریزیم و این‬‫برای اینکه زمان و ساع‬
‫نکته را وم به خاطر داشته باشید‪ ،‬وقتی میخواوید نتیجهی اجرای یک فرمان را در یک متغیر نگه‬
‫دارید از ` (عالم ‪ )backtick‬استفاده میکنیم و فرمان را درون آن قرار میدویم‪.‬‬
‫`‪>> X=`date‬‬
‫‪>> echo $X‬‬
‫اگر بخواویم فقط روز را نگه داریم در ‪ X‬به این صورت عمل میکنیم‪:‬‬
‫'‪>> X=` date | cut-cl-3‬‬
‫‪>> echo $X‬‬
‫شکل وجود دارد که اگر ویچ ‪ip‬ی وم وارد نکنیم و‬ ‫در مثالی که در ق سم قبل حل کردیم این م‬
‫‪ enter‬بزنیم جلوی ما را نمیگیرد‪ .‬میخواویم کاری کنیم که اگر ویچ ‪ ip‬ی وارد نکردیم جلوی ما‬
‫را بگیرد‪ .‬برای این کار ‪ ping‬را دس نمیزنیم و در باالی برنامه یک ‪ if‬میگذاریم میگوییم‪:‬‬
‫]' '=‪if [$ip‬‬
‫‪then‬‬
‫”…‪echo "you must enter ip‬‬
‫‪exit‬‬
‫‪fi‬‬
‫شتتتکستتت یعنی اگر ‪ enter‬بزنیم و‬ ‫اگر در دو طرف ‪ ip‬یک حرف نگذاریم با یک ‪ enter‬میشتتتود‬
‫بخواویم خالی رد کنیم‪ ،‬قبول میکند و ‪ error‬نمیدود چون ‪ enter‬را وم بهعنوان ورودی میگیرد‬
‫و فکر میکند‪ ،‬خالی نیس ‪.‬‬
‫این باز وم درس کار نمیکند‪ .‬چرا؟‬
‫‪ if‬مثل کفهی ترازووای قدیمی ا س که اگر یک طرف یک وزنه یک کیلویی با شد و آن طرف وم‬
‫جنس ور دو طرف مثالً یک وزنهی خیلی کوچک قرار میدوند تا مساوی شوند‪ .‬ما وم در ‪ if‬ومین‬
‫کار را میکنیم و ور دو طرف ‪ if‬یک حرف مثالً ‪ x‬قرار میدویم و حاال ‪ if‬ما م ساوی می شود و اگر‬
‫‪ enter‬بزنیم ور دو طرف ‪ if‬ما مستتاوی میشتتود و مثل این میماند که خالی رد کنیم‪ .‬اکثر ‪shell‬‬
‫‪1۳۳‬‬ ‫و مدیری دادهوا‬ ‫فصل ‪ ۸‬نوشتن اسکری‬

‫‪script‬وا به این صورت نوشته شدهاند (چون ور دو طرف فقط یک ‪ x‬داریم و ‪ x‬وا مساوی وستند‬
‫معلوم میشود که ما ‪ enter‬زدیم)‪.‬‬
‫مثال‪ :‬میخواویم پستتورد دوّم را برای ‪ user id‬ایجاد کنیم و اگر پستتورد دوّم غلط بود یک ایمیل‬
‫برای ‪ admin‬و صاحب ‪ userid‬برود‪.‬‬
‫برای اینکه بتوانیم این تمرین را حل کنیم باید بدانیم که موقعی که ما ‪ login‬میکنیم چه اتفاقی‬
‫میافتد‪ .‬اگر ‪ ls -a‬را بزنید تمام فایل وایی را که وجود دارد‪ ،‬میبینید‪ .‬وقتی شتتتما در لینوکس‬
‫‪ userid‬می سازید فرد ور کاری که انجام دود یک فایل نقطهدار برای آن ساخته می شود که خود‬
‫فرد وم از آنوا خبر ندارد‪ .‬برای اینکه ‪ history‬خود را ببینید این فرمان را بزنید‪:‬‬
‫‪>> less.bash-history‬‬
‫بعدی‪ .bash_profile‬استتت که معادل‬ ‫ما ‪ ۴‬تا فایل داریم که با‪ .bash‬شتتتروع میشتتتود‪ .‬فایل‬
‫‪ autoexec.bat‬در ویندوز اس که به محض اینکه ‪ login‬کنید این فایل اجرا می شود‪ .‬که میتوانیم‬
‫در این فایل تغییراتی وم ای جاد کنیم که مثالً بعد از اینکه ‪ login‬کردیم یک پیغام مثالً ‪salam‬‬
‫بنویسید‪.‬‬
‫”‪echo “salam‬‬
‫حاال تمرین را حل میکنیم‪:‬‬
‫‪>> vi.bash_profile‬‬
‫‪trap "echo enter second password" 2‬‬
‫‪read –s-p "plz enter second pass:" pass‬‬
‫‪if [p$pass!= pardisp] then‬‬
‫‪echo $user on `date` hacked | mail -s hacked admin‬‬
‫‪exit‬‬
‫‪else‬‬
‫‪...‬‬
‫حواسمان باشد در ‪ if‬اگر پسورد غلط بود قبل از ‪ else‬یک ‪ exit‬وم باید بگذاریم‪.‬‬
‫‪ -‬اولین مشتتکل این است که پستتورد دیده شتتد باید کاری کنیم که دیده نشتتود‪ ،‬میآییم‬
‫بنابراین آپشن ‪ -s‬را به ‪ read‬اضافه میکنیم‪.‬‬
‫‪ -‬مشکل دوّم این اس که میخواویم ‪ enter‬زدیم ‪ prompt‬نگیرد‪.‬‬
‫نکته‪ :‬فرمان ‪ su‬را که بزنیم به معنی ‪ switch user‬میباشتتد یعنی از یک ‪ user id‬به ‪ user id‬دیگر‬
‫رفتن و اگر (‪ -)dash‬جلوی آن بگذاریم به معنی ‪ full‬میباشد و به ‪ root‬میرود‪.‬‬
‫ال‬
‫عالوه بر ‪ if‬برای نوشتتتتن استتتکری در ‪ bash‬امکاناتی ومچون ‪ while‬و ‪ for‬نیز وجود دارد‪ .‬مث ً‬
‫فرمان زیر‪:‬‬
‫‪$ for a in {1..10}; do echo $a; done‬‬
‫اعداد یک تا ‪ 1۰‬را چاپ خواود کرد‪ .‬البته ومین کار را با دستور‬
‫‪$ seq 10‬‬
‫نیز میتوانید انجام دوید‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۳۴‬‬

‫تمرین‪ :‬فرمان زیر را بزنید و بعد بررستی کنید که ‪ test‬بهعنوان یک ‪ shell built-in‬چه کاری انجام‬
‫میدود‪:‬‬
‫‪$ help test | vi -‬‬

‫فایلهای مهم ‪bash‬‬

‫فایلوای پیکربندی که در زیر دایرکتوری ‪ /etc‬و ستند‪ ،‬فایلوای در سطح کل سی ستم‪ 1‬و ستند و‬
‫بر کل سیستم اثر میگذارند‪ .‬برای ‪ bash‬چیدن فایل مهم وجود دارد که در جدول زیر آمده اس ‪:‬‬
‫محل فایل برای شل ‪non-login‬‬ ‫محل فایل برای شل ‪login‬‬ ‫نوع فایل‬
‫‪ /etc/profile‬و فایلوای موجود در‬
‫‪ /etc/bashrc‬یا ‪/etc/bash.bashrc‬‬ ‫جهانی (کل سیستم)‬
‫‪/etc/profile.d‬‬
‫‪ ~/.profile ،~/.bash_login‬یا‬
‫‪~/.bashrc‬‬ ‫کاربر‬
‫‪~/.bash_profile‬‬

‫توجه داشتتتته باشتتتید که از یک دیدگاه دو نوع شتتتل داریم‪ .‬مثالً وقتی شتتتما در حال عادی در‬
‫سیستمی که بر روی آن محیط گرافیکی نصب اس باال میآیید و بعداً یک ‪ terminal‬باز میکنید‪،‬‬
‫شتتلی که با آن روبهرو وستتتید‪ ،‬یک شتتل ‪ non-longin‬اس ت ‪ .‬ولی مثالً وقتی کلید ‪ ctrl+alt+f1‬را‬
‫فشار دوید‪ ،‬در این صورت با یک شل ‪ login‬روبهرو خواوید بود‪.‬‬
‫تذکر‪ :‬اگر ‪ ctrl+alt+f1‬را ف شار دادهاید‪ ،‬برای برگ شتن به محیط گرافیکی میتوانید ‪ ctr+alt+F7‬را‬
‫فشار دوید‪.‬‬
‫ومانند اسکری وایی که برای اجرا شدن در ونگام ورود در نظر گرفته شده اس ‪ ،‬اسکری وایی‬
‫نیز برای ونگام خروج وجود دارد که از آن جمله ‪ ~/.bash_logout‬میباشتتتد که مختص ور کاربر‬
‫اس ‪.‬‬
‫در ونگام افزودن کاربر جدید‪ ،‬چه از طریق واستتتط گرافیکی و چه از طریق دستتتتوراتی ومچون‬
‫‪ useradd‬یا ‪ ،adduser‬اطالعاتی که در مستتیر ‪ /etc/skel‬قرار دارد به دایرکتوری ‪ home‬کاربر جدید‬
‫ک ی میشود‪ .‬بنابراین ورگاه بخواوید فایلوای اولیهای‪ ،‬مثالً فایل قوانین کاری در سیستموا‪ ،‬برای‬
‫کاربران جدیدی که ساخته شده ا س ک ی شود‪ ،‬یا مثالً لینک آن ک ی شود که ف ضا وم نگیرد‪،‬‬
‫میتوانید آن را در مسیر ‪ /etc/skel‬قرار دوید‪.‬‬
‫یکی از دستتتورات مهم که یک دستتتور ‪ built-in‬در ‪ bash‬اس ت ‪ ،‬دستتتور ‪ alias‬میباشتتد که جه‬
‫تعریف کردن نام دیگر برای یک دستتتتور و راحتی کار استتتتفاده میشتتتود‪ .‬مثالً فرض کنید که‬
‫میخواوید دستتتور ‪ cp‬ک ی‪ ،‬ومواره بهصتتورت ‪ interactive‬اجرا شتتود‪ ،‬و فایلوا را بدون پرستتیدن‬
‫سؤال از شما‪ ،‬روی وم ننویسید‪ .‬کافی اس فرمان زیر را بزنید‪:‬‬
‫”‪$ alias cp=”cp –i‬‬

‫‪1‬‬ ‫‪system-wide‬‬
‫‪1۳۵‬‬ ‫و مدیری دادهوا‬ ‫فصل ‪ ۸‬نوشتن اسکری‬

‫اگر میخواوید‪ ،‬دستتتتور باال برای ومیشتتته در کل ستتتیستتتتم بماند‪ ،‬میتواند خط باال را در فایل‬
‫‪ /etc/bash.bashrc‬اضافه کنید‪.‬‬
‫دستتور ‪ alias‬را در خط فرمان بزنید و تمام ‪ alias‬وایی را که بر روی ستیستتم شتما تعریف شتده‬
‫اس را مشاوده خواوید کرد‪.‬‬

‫مدیریت پایگاهدادههای ‪SQL‬‬

‫برای خواندن اطالعات از یک پایگاهداده‪ ،‬مثالً ‪ postgresql‬یا ‪ ،mysql‬الزم استتت که زبان آن را‬
‫بدانید‪ .‬در این ق سم مخت صری در مورد ‪ SQL‬صحب خواویم کرد‪ .‬یکی از ب ستهوای پایگاهداده‪،‬‬
‫‪ mysql‬یا ‪ postgresql‬را انتخاب کنید و بر روی سی ستمتان ن صب نمایید‪ .‬حال با برخی د ستورات‬
‫آنوا آ شنا می شویم‪ .‬الزم ا س که بعد از ن صب آنوا بر روی سی ستم وارد آنوا شوید و تا بتوانید‬
‫دستورات زیر را وارد کنید‪.‬‬
‫ساختن پایگاهداده‪CREATE DATATBASE jaded; :‬‬
‫;‪USE jaded‬‬ ‫استفاده از پایگاه داده با نام ‪:jaded‬‬
‫ستتتتاختتتتتن یتتک جتتدول‪CREATE TABLE objects (name VARCHAR(30), color :‬‬
‫;))‪VARCHAR(20‬‬
‫;)”‪INSERT INTO objects VALUES (“lizard”, “green‬‬ ‫نوشتن داده در جدول‪:‬‬
‫خواندن داده از جدول‪SELECT * FROM objects; :‬‬
‫در صورتی که بخواوید بر روی انتخاب خودتان شرطی بگذارید‪ ،‬میتوانید از ‪ WHERE‬استفاده‬
‫کنید‪.‬‬
‫دستتتور ‪ DELETE‬برای حذف کردن دادهوا از جدول به کار میرود‪ .‬برای مرتبط کردن از دستتتور‬
‫‪ ORDER BY‬که به دو صتتورت صتتعودی و نزولی اس ت ‪ ،‬میتوانید استتتفاده کنید‪ .‬ومچنین برای‬
‫د ستهبندی ‪ SELECT‬انجام شده میتوانید از ‪ GROUP BY‬ا ستفاده نمایید‪ .‬برای الحاق دادهوای‬
‫موجود در چندین جدول نیز میتوان از دستور ‪ JOIN‬استفاده کرد‪.‬‬
‫فصل ‪ 9‬واسطهای کاربری‬
‫توزیع وای مدرن لینوکس که برای نستتتخهی ‪ Desktop‬در نظر گرفته شتتتدهاند واستتتط کاربری‬
‫گرافیکی‪ )GUI( 1‬ارائه می کنند که امکان کار را برای کاربران مبتدی فراوم و ومچنین در برخی‬
‫موارد ستترع کار را برای کاربران حرفهای باالتر میبرد‪ .‬ومچنین مثالً برای خواندن فایلوای ‪pdf‬‬
‫الزم است که واستتط گرافیکی داشتتته باشتتید‪ .‬بنابراین داشتتتن واستتط گرافیکی برای برخی کاروا‬
‫ضتتروری استت ‪ .‬در لینوکس ‪ GUI‬اصتتلی با نام ‪ X Window System‬یا به اختصتتار ‪ X‬شتتناخته‬
‫میشود‪.‬‬
‫اعمال تنظیمات برای سی ستم ‪ X‬تقریباً ساده ا س ‪ .‬فایل تنظیمات آن ‪/etc/X11/xorg.conf‬‬
‫اس ‪ .‬دستور زیر را میزنیم تا صفحهی راونمای آن را مشاوده کنیم‪:‬‬
‫‪$ man xorg.conf‬‬
‫البته توجه داشته باشی د که در صورتیکه که با واسط گرافیکی لینوکس را باال آورده باشید‪ ،‬امکان‬
‫اعمال تنظیمات به کمک خود واسط گرافیکی نیز وجود دارد‪ .‬در صورتی که فرمان زیر را بزنید‪،‬‬
‫فایل تنظیمات توسط ‪ X‬از نو با توجه به وضعی سیستم ساخته خواود شد‪:‬‬
‫‪$ Xorg –configure‬‬

‫استفاده از ‪ client‬های ‪ X‬بر روی شبکه‬


‫فرض کنید که ب روی شبکه دو کام یوتر علی و وحید را درید‪ .‬کام یوتر علی بسیار قوی اس و‬
‫امکانات زیادی بر روی آن وجود دارد‪ .‬کام یوتر وحید یک کام یوتر بسیار ساده اس ولی کیبورد و‬
‫مانیتور خوبی دارد‪ .‬بنابراین شما میخواوید پش کام یوتر وحید بنشینید و برنامهوایی را که بر‬
‫روی کام یوتر علی قرار دارد اجرا کنید‪ .‬ور دو کام یوتر دارای سیستمعامل لینوکس وستند‪ .‬برای‬
‫انجام این کار قدموای زیر را دنبال میکنیم‪:‬‬
‫‪ .1‬به کام یوتر وحید الگین کنید و سیستم را با محیط گرافیکی باال بیاورید‪.‬‬

‫‪1‬‬ ‫)‪Graphical User Interface (GUI‬‬


‫‪1۳۷‬‬ ‫فصل ‪ ۹‬واسطوای کاربری‬

‫‪display‬‬ ‫یک ترمینال باز کنید و دستور ‪ xhost +ali‬را بنویسید‪ .‬این دستور میگوید که‬ ‫‪.۲‬‬
‫ی را که از سرور ‪ ali‬آمده اس را قبول کن‪.‬‬
‫از طریق شبکه و از کام یوتر وحید در کام یوتر علی الگین کنید‪.‬‬ ‫‪.۳‬‬
‫در کام یوتر علی دستور ‪ export DISPLAY=vahid:0.0.‬را بزنید‪.‬‬ ‫‪.۴‬‬
‫حال برنامه وای خود را که دارای محیط گرافیکی وستند بر روی کام یوتر علی اجرا کنید‪.‬‬ ‫‪.۵‬‬
‫ال دستور ‪ loffice‬را که‬‫محیط گرافیکی آنوا بر روی کام یوتر وحید باز خواود شد‪ .‬مث ً‬
‫بزنید‪ ،‬آفیس باز میشود‪.‬‬
‫درنهای که کارتان تمام شد‪ ،‬بر روی کام یوتر وحید دستور ‪ xhost –ali‬را بزنید‪.‬‬ ‫‪.۶‬‬

‫نکته‪ :‬یادتان باشد که در ونگام ‪ ssh‬کردن از کام یوتر وحید به علی باید از آرگومان ‪ –X‬بزرگ برای‬
‫‪ ssh‬استفاده کنید که بتواند محیط ‪ X‬را ‪ forward‬کند‪.‬‬
‫برای ن مایش اطال عات‪ ،‬اطال عات مربوط به پنجره وای گرافیکی‪ ،‬یک ابزار خط فر مان به نام‬
‫‪ xwininfo‬داریم‪ .‬اول در محیط گرافیکی لینوکس یک ترمینال باز کنید‪ .‬بعد فرمان ‪ xwininfo‬را‬
‫در آن بزنید‪ .‬بعد این فرمان از شتتتما میخواود که بر روی پنجرهای که اطالعات مربوط به آن را‬
‫می خواوید با ماوس کلیک کنید‪ .‬اگر این کار را انجام دوید‪ ،‬اطالعات آن را در خط فرمان خواود‬
‫نوش ‪.‬‬
‫اگر میخواوید در مورد ‪ X server‬ی که بر روی ستتیستتتمتان در حال اجرا استت اطالعات‬
‫کستتب کنید‪ ،‬ابزاری به نام ‪ xdpyinfo‬به این منظور در نظر گرفته شتتده است ‪ .‬قابلی وای ستترور‪،‬‬
‫تنظیمات آن‪ ،‬نحوهی اتصتتتاالت بر روی شتتتبکه بر آن و ‪ ...‬برای ‪ X server‬را میتوانید با این ابزار‬
‫پیکربندی کنید‪.‬‬

‫فعال و غیرفعال کردن محیط گرافیکی‬


‫فرض کنید که سیستمی که نصب کردهاید دارای محیط گرافیکی اس ‪ ،‬ولی شما میخواوید آن را‬
‫غیر فعال کنید‪ .‬از اطالعات زیر برای این کار استفاده کنید‪.‬‬
‫در نستتخهوای مختلف ‪ Ubuntu‬و ومچنین در ‪ Debian‬فایل ‪ /etc/default/grub‬را باز کنید و خط‬
‫بتتتتتتتته‬ ‫را‬ ‫‪"GRUB_CMDLINE_LINUX_DEFAULT="quiet‬‬ ‫‪splash‬‬
‫‪ "GRUB_CMDLINE_LINUX_DEFAULT="text‬تغییر دوید‪ .‬بعد از اعمال تغییرات فایل را‬
‫ذخیره کنید و خارج شتتوید‪ .‬در خط فرمان‪ ،‬دستتتور ‪ sudo update-grub‬را بزنید‪ .‬دفعهی بعدی که‬
‫سی ستم را باال میآورید محیط گرافیکی خود به خود باال نخواود آمد‪ ،‬بلکه سی ستمعامل در حال‬
‫‪ text‬باال میآید‪ .‬با این حال برای اجرای محیط گرافیکی میتوانید ‪ startx‬را در خط فرمان بزنید‪.‬‬
‫عالوه بر روش فوق میتوانید از دستور ‪ sudo update-rc.d –f gdm remove‬استفاده کنید تا محیط‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۳۸‬‬

‫گرافیکی در ونگام باال آمدن اجرا نشتتود‪ .‬برای برگرداندن وضتتعی به حال قبلی وم میتوانید از‬
‫دستور ‪ sudo update-rc.d –f gdm defaults‬استفاده کنید‪.‬‬
‫در صورتی که در خط فرمان وستند و محیط گرافیکی اجرا نشده اس دستور & ‪ nohup startx‬را‬
‫بزنید‪ nohup .‬باعث می شود در صورتی که ترمینال فعلی ب سته شد‪ ،‬باز وم محیط گرافیکی به کار‬
‫خود ادامه دود و & باعث می شود که اجرای محیط گرافیکی باعث ن شود که خط فرمان فعلی که‬
‫در آن وستید‪ ،‬مسدود شود‪.‬‬
‫در ‪ CentOS‬می توانید دستورات زیر را دنبال کنید تا محیط گرافیکی در ونگام باال آمدن سیستم‪،‬‬
‫اجرا نشود‪:‬‬
‫‪su‬‬
‫‪cp /etc/inittab /etc/inittab.orig‬‬
‫‪vi /etc/inittab‬‬
‫و خطی را که به شکل‬
‫‪id:5:initdefault:‬‬
‫اس به‬
‫‪id:3:initdefault:‬‬
‫تغییر دوید‪ .‬دفعهی بعدی که سیستم باال میآید محیط گرافیکی اجرا نخواود شد‪.‬‬
‫یادتان با شد که ممکن ا س برخی توزیعوا دچار تغییر شده با شند‪ .‬در ور صورت یک روش دیگر‬
‫وم این ا س که د ستور ‪ runlevel‬را بزنید و عدد خروجی را م شاوده کنید‪ .‬س س به دایرکتوری‬
‫‪ /etc/rc5.d‬در صورتی که عددی که دیدهاید ‪ 5‬بوده اس ‪ ،‬بروید و در زیر این دایرکتوری تنظیمات‬
‫‪ X‬را تغییر دوید‪ .‬البته این روش بهعنوان اولین روش ا صالً تو صیه نمی شود و حتماً قبل از تغییر‬
‫دادن از فایلوا پشتیبان تهیه کنید‪.‬‬
‫فایلوای پیکربندی محیط گرافیکی ‪ KDE‬در مسیر ‪ ،/etc/X11/kdm‬برای ‪ XDM‬یا ومان محیط‬
‫پیشفرض گرافیکی در مسیر ‪ ،/etc/X11/xdm‬برای ‪ /etc/X11/gdm‬قرار دارد که میتوانید آنوا را‬
‫بررسی و تغییر دوید‪.‬‬
‫توجه دا شته با شید که وا سطوای گرافیکی ب سیار زیادی وجود دارند که میتواند بر روی سی ستم‬
‫خود آنوا را دا شته با شید و حتی امکان ن صب و دا شتن چند تا از آنوا را بر روی یک سی ستم‬
‫وجود دارد‪ .‬مثالً ‪ XFCE‬و ‪ LXDE‬دو وا سط گرافیکی سبک‪ gnome 3 ،‬رایجترین وا سط‪ KDE ،‬با‬
‫طراحی متفاوت‪ ،‬و باالخره ‪ Unity‬واسط مربوط به ‪ Ubuntu‬اس ‪.‬‬

‫تنظیمات محیط گرافیکی‬


‫ور محیط گرافیکی تنظیمات زیادی دارد‪ ،‬که توصتتتیه میکنیم از طریق خود محیط گرافیکی این‬
‫تنظیمات را انجام دوید‪ ،‬ورچند انجام آنوا از طریق خط فرمان نیز امکانپذیر اس ت ‪ ،‬ولی دشتتوار‬
‫خواود بود‪ .‬مثالً میتوانید پیغام ورودی خاصتتتی ونگام ورود به محیط گرافیکی برای کاربر نمایش‬
‫‪1۳۹‬‬ ‫فصل ‪ ۹‬واسطوای کاربری‬

‫دوید‪.‬‬
‫اگر در محیط گرافیکی در قستتم تنظیمات دنبال ‪ sticky keys‬بگردید میتوانید تنظیمات آن را‬
‫تغییر دوید‪ .‬در صورتی که این گزینه فعال با شد‪ ،‬موجب می شود که کلیدوای ‪ Alt ،Ctrl‬و ‪Shift‬‬
‫وقتی که فشار داده میشوند بهصورت ”‪ “stick‬بمانند‪ ،‬و بر کلید بعدی که فشار داده میشود‪ ،‬حتی‬
‫اگر ‪ Alt ،Ctrl‬یا ‪ Shift‬را روا کرده باشید‪ ،‬اثر بگذارند‪.‬‬
‫تنظیمات ‪ Mouse keys‬امکان شبیهسازی و استفاده از ماوس را به کمک کیبورد فراوم میآورد‪.‬‬
‫در صورتی که برخی کلیدوا را بدون استفاده زیاد فشار میدود‪ ،‬در صورتی که گزینهی ‪Bounce‬‬
‫‪ keys‬فعال باشد‪ ،‬سیستم به شما اخطار خواود داد‪.‬‬
‫امروزه امکانات مختلفی بر روی ستتیستتتمعاملوا وجود دارد که ممکن استت در محیط گرافیکی‬
‫لینوکس شما نیز با شد‪ ،‬از جمله ‪ High contrast desktop themes‬برای باال بردن خوانایی بر روی‬
‫متتا ن ی توروتتای قتتد ی می‪screen ،one-screen keyboard ،Braille display ،Screen reader ،‬‬
‫‪ .mouse gestures ،magnifier‬توجه داشتتته باشتتید که کیبورد روی صتتفحه در محیط ‪ gnome‬را‬
‫بهصورت ‪ GOK1‬وم نمایش میدوند‪ .‬برنامهی ‪ screen reader‬ی که در محیط ‪ gnome‬از نسخهی‬
‫‪ 2.16‬و جدیدتر قرار گرفته‪ Orca ،‬نام دارد‪ .‬ابزار دیگری به نام ‪ emacspeak‬وجود دارد که به افراد‬
‫کم بینا کمک میکند که از سیستم استفاده کنند‪.‬‬

‫‪1‬‬ ‫‪gnome one-screen keyboard‬‬


‫فصل ‪ 10‬فعالیتهای مدیریتی‬
‫بسیاری از فعالی وای مدیریتی لینوکس مربوط به کاربران و گروهوا میشود‪ :‬افزودن‪ ،‬حذف کردن‪،‬‬
‫پیکربندی محیط کاری آنوا‪ ،‬و موارد دیگر‪ .‬در این فصل در مورد این مسائل و فعالی وای مدیریتی‬
‫صحب خواویم کرد‪.‬‬
‫به وا سطهی تعریف گروهوا میتوان کاربران مختلف را به وم ارتباط داد‪ .‬پس ور کاربری ع ضو یک‬
‫گروه اس ‪ .‬اومی عضوی در گروهوای کاربری بسیار باالس تا آنجا که در سطح دسترسیوایی‬
‫که در خروجی د ستور ‪ ls –l‬م شاوده میکنید ق سم دوم از ‪ rwxrwxrwx‬مربوط به گروه ا س ‪.‬‬
‫مثالً اگر فایلی به صورت ‪ rwxrw----‬با شد و شما ع ضو گرووی با شید که مالک فایل در آن ا س ‪،‬‬
‫شما نیز حق خواندن و نو شتن این فایل را خواوید دا ش ‪ ،‬ولی اگر ع ضو آن گروه نبا شید‪ ،‬حتی‬
‫امکان خواندن آن را نخواوید داش ت ‪ .‬یادتان باشتتد که گروه نامکاربری نیستت که بتوانید با آن به‬
‫سیستم ‪ login‬کنید‪ ،‬بلکه مفهومی جه مدیری بهتر فعالی واس ‪ .‬گروهوایی که در حال حاضر‬
‫بر روی سیستمتان تعریف شدهاند را میتوانید با دستور زیر مشاوده کنید‪:‬‬
‫‪$ vi /etc/group‬‬
‫در این فایل اسامی گروهوا و اعضایی که عضو ور گروه وستند را میتوانید مشاوده کنید‪ .‬عالوه بر‬
‫عضوی وایی که برای کاربران در این فایل تعریف شده اس ‪ ،‬ور کاربر بهصورت اصلی (‪)primary‬‬
‫عضو یک گروه اس که در فایل ‪ /etc/passwd‬مشخص شده اس ‪.‬‬
‫اگر یک کاربر ع ضو چندین گروه با شد‪ ،‬برای د ستر سی به فایلوای گرووی غیر از گروه ‪primary‬‬
‫ش از د ستور ‪ newgrp‬ا ستفاده کند‪ .‬مثالً اگر گروه ا صلی کاربر ‪ project1‬ا س ‪ ،‬ولی میخواود به‬
‫فایلی که مرتبط با گروه ‪ project5‬ا س د ستر سی پیدا کند‪ ،‬به شرطی که این کاربر ع ضو گروه‬
‫‪ project5‬وم باشد‪ ،‬میتواند از دستور زیر استفاده کند‪:‬‬
‫‪$ newgrp project5‬‬
‫برای ساختن گروه جدید میتوانید از دستور ‪ groupadd‬استفاده کنید‪ .‬برای حذف یک گروه کاربری‬
‫نیز میتوان از دستور ‪ groupdel‬استفاده کرد‪ .‬در صورتی که بخواوید تعریف و تنظیمات یک گروه‬
‫را بر روی سیستم تغییر دوید از دستور ‪ groupmod‬استفاده کنید‪.‬‬
‫‪1۴1‬‬ ‫فصل ‪ 1۰‬فعالی وای مدیریتی‬

‫جه اضافه کردن یک کاربر جدید به سیستم میتوانید از دستور ‪ useradd‬استفاده کنید‪.‬‬
‫بهعنوانمثال‪:‬‬
‫‪$ useradd –d /data/projects –u 9876 –g 100 ali‬‬
‫‪$ su passwd ali‬‬
‫با دستورات باال یک کاربر جدید با نام ‪ ali‬ساختیم که دایرکتوری خانهی آن در مسیر ‪/data/projects‬‬
‫اس و برایش ‪ userid‬خاصی (‪ )۹۸۷۶‬و ومینطور ‪ groupid‬خاصی در نظر گرفتیم و بعد از ساختن‬
‫نیز برایش ‪ password‬جدید تنظیم نمودیم‪ .‬حال اگر فایل ‪ /etc/passwd‬را مشاوده کنید‪ ،‬یک خط‬
‫بهصورت زیر به آن اضافه شده اس ‪:‬‬
‫‪ali:x:9876:100::/data/projects:/bin/bash‬‬
‫که اولی نام کاربری‪ ،‬دومی ‪ x‬اس که ومان عالمتی اس برای پسورد که بعداً توضیح خواویم داد‪،‬‬
‫سومی فیلد ‪ ،userID‬چهارمی ‪ ،groupID‬پنجمی دایرکتوری خانه‪ ،‬و ششمی شل پیش فرض این‬
‫کاربر اس ‪.‬‬
‫ازآنجاکه فایل ‪ /etc/passwd‬برای برای ومه قابل خواندن ا س ‪ ،‬در صورتی که پ سورد کاربر در این‬
‫فایل حتی به صورت ‪ hash‬شده قرار گیرد‪ ،‬امکان وک کردن آن وجود خواود داش ‪ .‬برای حل این‬
‫مسئله مفهوم ‪ shadow‬در نظر گرفته شد‪ .‬در زیر دایرکتوری ‪ /etc‬فایلی به اسم ‪ shadow‬قرار دارد‬
‫که برخالف فایل ‪ /etc/passwd‬توسط ورکسی قابل خواندن نیس ‪ .‬دستور زیر را بزنید‪:‬‬
‫‪$ shadowconfig off‬‬
‫‪ ali‬به جای ‪ x‬یک سری‬ ‫حال اگر فایل ‪ /etc/passwd‬را باز کنید در دومین فیلد مربوط به کاربر‬
‫کاراکتر خواوید دید که ومان ‪ hash‬شدهی رمز عبور این کاربر اس ‪ .‬این وضعی کمی خطرناک‬
‫اس ‪ ،‬چون یک فرد ناشناس وم به فایل ‪ passwd‬دسترسی دارد و میتواند با بررسی این رشته و‬
‫البته با تالشوای متعدد به رمز عبور ‪ ali‬دس پیدا کند‪ .‬دستور زیر را میزنیم‪:‬‬
‫‪$ shadowconfig on‬‬
‫حال دیگر آن رشته در فایل ‪ passwd‬وجود ندارد و به جای آن ‪ x‬قرار گرفته اس ‪ ،‬در عوض این‬
‫رشته در فایل ‪ /etc/shadow‬دیده میشود‪ .‬ورگاه کاربر علی بخواود وارد حساب کاربریاش شود‪،‬‬
‫سیستم رمز عبوری را که توسط او وارد میشود را به ‪ hash‬تبدیل میکند و با مقدار ‪ hash‬ذخیره‬
‫شده در ‪ /etc/shadow‬مقایسه میکند که اگر درس بود وی‪ ،‬وارد سیستم میشود‪.‬‬
‫برای حذف یک کاربر از سی ستم از د ستور ‪ userdel‬و ومچنین برای تغییر م شخ صات یک کاربر و‬
‫گروهوایی که وی در آن عضو اس از ‪ usermod‬استفاده میکنیم‪.‬‬
‫در برخی سیستموا ممکن اس سیاس تغییر دورهای رمز عبور داشته باشیم‪ .‬به کمک دستور‬
‫‪ chage‬میتوان اطالعات زمان انقضای رمز عبور کاربر را تغییر داد‪.‬‬
‫تمرین‪ :‬با اکان ‪ root‬و به کمک دستور ‪ chage‬کاری کنید که بعد از یک وفته از کاربر ‪ ali‬خواسته‬
‫شود که رمز عبورش را تغییر دود‪.‬‬
‫پاسخ‪chage –M 7 ali :‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۴۲‬‬

‫شده‪1‬‬ ‫کارهای برنامهریزی‬


‫ممکن اس بخواوید که در زمان خاصی یک فرمان اجرا شود‪ .‬مثالً ساع ‪ ۲۲‬شب سیستم بهطور‬
‫خودکار خاموش شود‪ .‬برای این کار میتوانید از ابزار ‪ at‬استفاده کنید‪ .‬در صورتی که این ابزار بر‬
‫روی سیستمتان نصب نیس ‪ ،‬آن را نصب کنید‪ .‬بهعنوانمثال‪:‬‬
‫‪$ at 22:00‬‬
‫را وارد کنید و س س کلید ‪ enter‬را فشار دوید‪ .‬حاال دستور مورد نظر خودتان را وارد کنید‪:‬‬
‫‪shutdown –h now‬‬
‫و س س ‪ ctrl+d‬را فشار دوید‪ .‬حاال دستور ‪ atq‬را بزنید‪ .‬صف دستورات ‪ at‬که قرار اس اجرا شود را‬
‫نمایش میدود‪ .‬حاال برای حذف کردن مثالً عنصر اول این صف میتوانید دستور زیر را بزنید‪:‬‬
‫‪$ atrm 1‬‬
‫اگر دوباره دستور ‪ atq‬را بزنید و خروجی را مشاوده کنید‪ ،‬خواوید دید که فعالی اول از این صف‬
‫حذف شده اس ‪ .‬دو فایل ‪ /etc/at.allow‬و ‪ /etc/at.deny‬به ترتیب لیس کاربرانی را که حق اجرای‬
‫دستور ‪ at‬دارند و آنوایی که ندارند را مشخص میکند‪ .‬اگر نام کاربری در ور دو فایل آمده باشد‪،‬‬
‫آن کاربر حق اجرای دستور ‪ at‬را خواود داش چون فایل ‪ allow‬اول بررسی میشود‪.‬‬
‫اما د ستور ‪ at‬برای انجام کاروایی ا س که یک دفعه قرار ا س اجرا شوند‪ .‬ممکن ا س کاروایی‬
‫باشد که ور روز سر ساع خاصی‪ ،‬یا ور چند ساع یک بار باید انجام شوند‪ ،‬در این صورت باید از‬
‫ابزار ‪ cron‬ا ستفاده شود‪ cron .‬برنامهای ا س که ومواره بر روی سی ستم در حال اجرا ا س ‪ ،‬که‬
‫اصطالحاً به آن ‪ cron daemon‬وم میگویند‪ .‬فایلوای تنظیمات آن در مسیروای ‪/var/spool/cron‬‬
‫و ‪ /etc/cron.d‬و ومچنین ‪ /etc/crontab‬قابل مشتتاوده اس ت ‪ .‬دو نوع ‪ cron job‬داریم؛ آنوایی که‬
‫مربوط به سی ستم و ستند و آنوایی که مربوط به کاربر و ستند‪ job .‬وای سی ستمی تح عنوان‬
‫کاربر ‪ root‬اجرا می شوند و بر میتوانند بر کل سی ستم تأثیر بگذارند‪ .‬مثالً ‪ rotate‬کردن فایلوای‬
‫‪ .Log‬برای ساختن ‪ cron job‬سیستمی با کاربر ‪ root‬وارد شوید و فایل ‪ /etc/crontab‬را باز کنید و‬
‫مطابق توضیحات فعالی مورد نظر خود را اضافه کنید‪.‬‬
‫بتته عالوه در زیر دایرکتوری ‪ /etc‬چنیتتدن دایرکتوری وجود دارد‪ ،‬مثالً ‪ /etc/cron.daily‬اینوتتا‬
‫فعالی وایی وستتتند که روزانه اجرا میشتتوند‪ .‬برای بازهوای زمانی مختلف چنین دایرکتوریوایی‬
‫وجود دارد که اگر ‪ script‬مورد نظرخود تان را زیر این دایرکتوری وا ب گذار ید در آن بازهی ز مانی‬
‫اجرا خواود شد‪.‬‬
‫برای ساختن ‪ cron job‬در سطح ‪ user‬از دستور ‪ crontab‬استفاده میکنیم‪ .‬با دستور ~ ‪ cd‬به‬
‫دایرکتوری خانهی خود بروید‪ .‬س س دستور ‪ vi cronjob‬را بزنید و متن زیر را در آن بنویسید‪:‬‬
‫‪SHELL=/bin/bash‬‬
‫‪MAILTO=yourusername‬‬
‫‪00 12 * * * /sbin/ifconfig‬‬

‫‪1‬‬ ‫‪scheduling jobs‬‬


‫‪1۴۳‬‬ ‫فصل ‪ 1۰‬فعالی وای مدیریتی‬

‫فایل را ذخیره کنید‪ .‬س س دستور زیر را بزنید‪:‬‬


‫‪$ crontab ~/cronjob‬‬
‫‪ 1۲‬ظهر یک ایمیل به شما ارسال خواود شد که در آن اطالعات خروجی دستور ‪ifconfig‬‬ ‫در ساع‬
‫را ارسال کرده اس ‪ .‬اگر سیستم ‪ mail‬را ندارید آن را نصب کنید‪:‬‬
‫‪$ apt-get install mailutils‬‬
‫‪ /var/spool/cron‬یا ‪ /var/spool/cron/tabs‬یا‬ ‫‪ cron job‬وای کاربران در یکی از مستتتیر وای‬
‫‪ /var/spool/cron/crontabs‬ذخیره میشتتود که با مراجعه به این مستتیروا میتوانید در موردشتتان‬
‫اطالعات کسب کنید‪.‬‬
‫ابزار ‪ cron‬وم ومانند ابزار ‪ at‬فایلوای ‪ /etc/cron.allow‬و ‪ /etc/cron.deny‬را برای کنترل دسترسی‬
‫دارد‪.‬‬
‫فرض کنید که یک ‪ cron job‬را برای ستتاع ‪ ۲۳‬تنظیم کردهاید‪ ،‬ولی در آن ستتاع ستتیستتستتتم‬
‫خاموش با شد‪ .‬چه خواود شد؟ در این صورت آن ‪ job‬اجرا نخواود شد‪ anacron .‬ابزاری ا س که‬
‫کاروای ‪ cron‬ی را که اجرا نشتتدهاند اجرا خواود کرد‪ .‬توصتتیه میکنیم که حتماً ‪ man anacron‬و‬
‫ومچنین فایل ‪ /etc/anacrontab‬را مشاوده نمایید‪.‬‬
‫یکی از موارد مهمی که در ونگام اجرای فعالی وای ‪ cron‬و ‪ at‬مهم استتت تنظیم بودن ستتتاع‬
‫ا س ‪ .‬تو صیه می شود که ‪ network time protocol‬را بر روی سی ستمتان تنظیم کنید‪( .‬تمرین‬
‫عملی)‪.‬‬

‫امکانات زبان و منطقهای لینوکس‬


‫لینوکس یک سیستمعامل جهانی اس و کاربرانی را در کشوروای مختلف دارد‪ .‬بنابراین لینوکس‬
‫از مجموعه کارکتروا‪ ،‬کیبوردوا‪ ،‬و قالبوای زمانی مختلف پشتیبانی میکند‪.‬‬
‫لینوکس برای بررستتتی ‪ timezone‬شتتتما به فایل ‪ /etc/localtime‬مراجعه میکند‪ .‬در صتتتورتی که‬
‫‪ localtime‬شتتما تنظیم شتتده باشتتد‪ ،‬این فایل یک ‪ symbolic link‬به اطالعات ‪ time zone‬محلی‬
‫شما خواود بود‪ .‬بنابراین د ستور ‪ ls –l /etc/localtime‬اطالعات مفیدی به شما خواود داد‪ .‬اگر این‬
‫فایل ‪ symbolic link‬نیس ‪ ،‬دستور ‪ date‬را بزنید‪ ،‬در خروجی آن و در سم راس قبل از نمایش‬
‫سال یک کلمهی سه حرفی مثالً ‪ EDT‬را م شاوده میکنید که مخفف ‪ time zone‬شما س ‪ .‬برای‬
‫دانستتتن اینکه ورکدام از این کالم ستته حرفی مربوط به کدام منطقه اس ت میتوانید از ستتای‬
‫‪ www.timeanddate.com/library/abbreviations/timezones‬استفاده کنید‪.‬‬
‫عالوه بر فایل ‪ /etc/localtime‬فایل ‪ /etc/timezone‬حاوی اطالعاتی در مورد ‪ time zone‬استتت ‪ .‬از‬
‫این طریق نیز میتوان ید ‪ time zone‬خود را بررستتتی کن ید‪ .‬به عالوه برخی توزیع وای لینوکس‬
‫ابزاروای گرافیکی یا ‪ text-mode‬برای انجام این کار ارائه میکنند‪ .‬دستتتتورات ‪ tzselect ،tzsetup‬و‬
‫‪ tzconfig‬را بررسی کنید‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۴۴‬‬

‫اگر میخواوید که ‪ time zone‬خودتان را تغییر دوید قدموای زیر را دنبال کنید‪:‬‬
‫‪ .1‬با کاربر ‪ root‬وارد شوید و ‪ cd /etc‬را بزنید‪.‬‬
‫‪ .۲‬محتوای دایرکتوری ‪ /usr/share/zoneinfo‬را مشاوده نمایید و فایل مربوط به منطقهی‬
‫خود را پیدا کنید‪.‬‬
‫‪ .۳‬دستور ‪ rm /etc/locatime‬را بزنید‪.‬‬
‫‪ .۴‬دستور ‪ ln –s /usr/share/zoneinfo/your_file_here /etc/localtime‬را بزنید‪.‬‬

‫تنظیمات شما اعمال شد‪.‬‬


‫اگر میخواوید ‪ timezone‬را تنها برای یک کاربر‪ ،‬و نه کل سی ستم‪ ،‬تغییر دوید‪ ،‬از متغیر محیطی‬
‫‪ TZ‬استفاده کنید‪ .‬بهعنوانمثال‪:‬‬
‫‪$ export TZ=:/usr/share/zoneinfo/Europe/London‬‬

‫‪ locale‬چیست؟‬
‫در لینوکس‪ locale ،‬ابزاری برای م شخص کردن زبان‪ ،‬ک شور و واحد پول و سایر م شخ صات یک‬
‫کام یوتر استتت ‪ .‬به تجربه دیدهام که تنظیم کردن ‪ locale‬معموالً برای کاربران از طریق واستتتط‬
‫گرافیکی انجام میپذیرد‪ .‬ولی از طریق خط فرمان وم این اطالعات را میتوانید تنظیم و مشتتاوده‬
‫کنید‪:‬‬
‫‪$ /usr/bin/locale‬‬
‫دستتتور ‪ locale –a‬نیز اطالعاتی مشتتابهی را به شتتما نشتتان میدود‪ .‬میتوانید با ‪ export‬کردن‬
‫متغیروای محیطی که در باال م شاوده کردید‪ ،‬اطالعات ‪ locale‬خود را تغییر دوید‪ .‬برای حفظ این‬
‫تغییرات میتوانید آنوا را در ‪ ~/.bashrc‬یا ‪ /etc/profile‬قرار دوید‪.‬‬

‫تغییر دادن ‪ locale‬مربوط به فایلهای متنی‬


‫ال ممکن اس‬ ‫ممکن اس شما یک فایل متنی داشته باشید که دارای ‪ encoding‬خاصی باشد مث ً‬
‫ویرایشگر مورد نظر شما ‪ UTF-8‬را پشتیبانی بکند ولی از ‪ ISO-8859‬پشتیبانی نکند‪ .‬اگر تنها با‬
‫فایلوای انگلیسی ‪ ASCII‬سر و کار دارید‪ ،‬مشکلی نخواوید داش ‪ .‬اما ومیشه مسئله به این صورت‬
‫نیس ‪ .‬برای حل این مسئله ابزار ‪ iconv‬امکان تبدیل میان مجموعه کاراکتروای مختلف را فراوم‬
‫آورده اس ‪ .‬قالب این دستور بهصورت زیر اس ‪:‬‬
‫… ]‪iconv –f encoding [-t encoding] [inputfile‬‬
‫آرگومانوای ‪ –f‬و ‪ ،–t‬نوع ‪ encoding‬وای مبدأ و مقصد را مشخص میکنند‪ .‬برای مشاودهی لیس‬
‫‪ encoding‬وا دستور ‪ iconv –list‬را بزنید‪ .‬اگر ‪ encoding‬مقصد را نزنید‪ ،‬این دستور ‪encoding‬‬
‫فعلی شما را بهعنوان مقصد در نظر میگیرد‪ .‬مثال‪:‬‬
‫‪$ iconv –f iso-8859-1 –t UTF-8 myfile.txt > newfile.txt‬‬
‫فصل ‪ 11‬سرویسهای ضروری سیستم‬
‫بهطور معمول ساع در یک کام یوتر که به شبکه مت صل نی س ‪ ،‬بهطور دقیق تنظیم نخواود بود‪.‬‬
‫عالوه بر آن در صورتی که شبکهای از کام یوتروا داشته باشید‪ ،‬وماونگی ساع میان آنوا ب سیار‬
‫ال‬
‫مهم استت و حتی این عدم وماونگی ممکن استت برای شتتما مشتتکالت حقوقی ایجاد کند‪ .‬مث ً‬
‫فرض کنید در سیستم شهرداری که مجوزوای بسیاری را صادر میکند‪ ،‬به عل عدم تنظیم بودن‬
‫ساع سی ستموا‪ ،‬ساع صدور مجوز قبل از ساع برر سی کار شناس ثب شود‪ .‬برای حل این‬
‫مسئله از ابزاروای تنظیم زمان مبتنی بر شبکه استفاده میکنیم که معروفترین آن ‪ NTP‬اس ‪.‬‬

‫‪NTP‬‬
‫به کمک این ابزار کام یوتر ما از یک منبع ساع را میخواند و بر ا ساس آن ساع خود را تنظیم‬
‫میکند‪ .‬این کار در بازهوای زمانی قابل تنظیم میتواند انجام شود‪ .‬اولین کاری که باید برای تنظیم‬
‫‪ NTP‬انجام دوید یافتن یک سرور ‪ time‬بر روی اینترن یا تنظیم یک سرور ‪ ،time‬در صورتی که‬
‫شبکهی شما از داخلی ا س ‪ ،‬در داخل شبکهی خودتان ا س ‪ .‬سروروای عمومی ‪ time‬در آدرس‬
‫‪ support.ntp.org/bin/view/Servers/WebHome‬قابل م شاوده ا س ‪ .‬ومچنین ‪ pool.ntp.org‬در‬
‫بردارندهی سروروایی اس که بهصورت داوطلبانه بهعنوان ‪ public NTP server‬فعالی دارند‪.‬‬
‫بعد از اینکه ‪ NTP‬را به کمک ‪ package manager‬بر روی ستتتیستتتتم خود نصتتتب کردید‪ ،‬فایل‬
‫‪ /etc/ntp.conf‬را باز کنید این فایل شامل خطوطی به شکل زیر اس ‪:‬‬
‫‪server clock.example.com‬‬
‫‪ daemon‬مربوط به ‪ NTP‬باال باشد‪،‬‬ ‫ور کدام از این خطوط به یک سرور ‪ NTP‬اشاره دارد‪ .‬ورگاه که‬
‫تالش میکند که به این سروروا متصل شود و ساع سیستم را به روز کند‪ .‬ومچنین برای ‪restart‬‬
‫کردن این ‪ dameon‬میتوانید دستور زیر را بزنید‪:‬‬
‫‪# /etc/init.d/ntpd restart‬‬
‫ستور ‪ ntpq‬ا ستفاده کنید که‬ ‫برای اطمینان از اینکه ‪ NTP‬در حال کار کردن ا س ‪ ،‬میتوانید از د‬
‫یک برنامهی تعاملی اس که فرمانوای مختلفی را میپذیرد‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۴۶‬‬

‫ومین که چند سرور ‪ NTP‬راه راهاندازی کردید‪ ،‬میتوانید ‪ NTP client‬را بر روی سایر کام یوتروا‬
‫پیکربندی کنید که به آنوا ا شاره کنند‪ .‬این تنظیمات م شابه ومان تنظیمات انجام شده بر روی‬
‫سرور اس ‪ .‬در برخی موارد راه سادهتر برای تنظیم ساع بر روی یک ‪ client‬استفاده از دستور زیر‬
‫اس ‪:‬‬
‫‪# ntpdate clock.example.com‬‬
‫که در آن ‪ clock.example.com‬آدرس سرور ‪ NTP‬اس ‪.‬‬

‫ابزار ‪hwlock‬‬

‫این ابزار برای مشاوده و تنظیم ساع سخ افزار سیستم اس ‪ .‬آرگومان ‪ –utc‬میگوید که از زمان‬
‫‪ UTC‬استتتفاده کند و آرگومان ‪ –systohc‬میگوید که از زمان فعلی نرمافزار (ستتیستتتمعامل) برای‬
‫تنظیم ساع سخ افزار استفاده کند‪.‬‬

‫ثبت وقایع (‪ )log‬در لینوکس‬


‫لینوکس یک سرور ا س و اگر اطالعات ‪ log‬ن شوند و اتفاقی بیفتد نمیتوان ری شهی آن را یاف و‬
‫آن را حل و ف صل کرد‪ .‬در لینوکس ‪ log file‬وای متعددی جه نگهداری جزئیات کاروایی که در‬
‫سی ستم رخ میدود نگهداری می شود‪ .‬ممکن ا س شما قبالً با ‪ log file‬وا کار کرده با شید‪ ،‬ولی‬
‫دانستتتن نحوهی تنظیمات مربوط به ‪ log‬بستتیار مهم اس ت ‪ syslogd .‬ومان برنامهای اس ت که در‬
‫پش صحنهی سیستم حاضر اس و کاروای مربوط به ‪ log‬گیری برنامهوای سم کاربر را انجام‬
‫میدود و الب ته ‪ klogd‬نیز کار ‪ log‬مربوط به ‪ kernel‬را بر ع هده دارد‪ .‬و مانطور که میدان ید به‬
‫چنین برنامه ای که در پشتتت صتتتحنه ومواره فعال استتت و کاروایی را انجام میدود ‪daemon‬‬
‫میگوییم که ‪ d‬آخر ‪ syslogd‬و ‪ klogd‬نیز به ومین کلمه اشاره دارد‪ .‬یادتان باشد که ‪ syslogd‬تنها‬
‫‪ daemon‬برای ‪ log‬گیری نیس ؛ سیستموای دیگری ومچون ‪syslong- ،next generation syslog‬‬
‫‪ ng‬و ‪ rsyslog‬نیز وجود دارند‪.‬‬
‫ثب واقع کاربردوای متعددی دارد‪ .‬با استفاده از ‪ log‬وا میتوان به مشکالت سیستمی که پیش‬
‫آمده پی برد‪ ،‬مسائل امنیتی پیش آمده را تحلیل کرد و حتی دریاف که آیا ‪ cd‬وا و ‪ dvd‬وایی که‬
‫داخل ‪ dvd-rom‬میگذارید خش دارند یا خیر‪ .‬اگر فایلوای ‪ log‬به خوبی مدیری نشوند ممکن‬
‫اس تنومند شوند و حجم بسیاری را بر روی دیسک بگیرند‪ .‬به عالوه در صورتی که حجم فایل ‪log‬‬
‫باال باشد‪ ،‬امکان ارسال آن از طریق ایمیل به تحلیلگر مربوطه جه بررسی دشوار و بعض ًا غیر ممکن‬
‫میشود‪.‬‬
‫این فصل قسم وای مهمی از ‪ log‬را در لینوکس بررسی میکند‪ .‬در ‪ lPIC2‬سیستم ‪ log‬بهطور‬
‫کامل بررسی خواود شد‪.‬‬
‫‪1۴۷‬‬ ‫فصل ‪ 11‬سرویسوای ضروری سیستم‬

‫بررسی ‪syslogd‬‬

‫بیشتر توزیعوای لینوکس از یک ‪ daemon‬خاص جه ‪ log‬گیری و کاروای مربوط به آن استفاده‬


‫میکنند‪ .‬در ستتیستتتموای ستتنتی نام برنامهی ثب وقایع ‪ syslogd‬است ‪ .‬اگر در خط فرمان کاربر‬
‫‪ root‬فرمان زیر را بزنیم‪ ،‬میتوانیم پروسسوای مربوط به ‪ log‬را مشاوده کنیم‪:‬‬
‫‪#>> ps –aef | grep log‬‬
‫و ‪ klogd‬به منظور ثب وقایع ‪kernel‬‬ ‫کار ‪ syslogd‬ثب وقایع مربوط به برنامهوای ‪ user-mode‬اس‬
‫به کار میرود‪ .‬پس در توزیعوای سنتی لینوکس‪ ،‬سیستم ‪ log‬کرنل از برنامهوای عادی جداس ‪.‬‬
‫در توزیع وای لینوکس موجود که مبتنی بر ‪ init‬کار میکن ند‪ ،‬ور دوی این نرمافزاروا فرزند ‪init‬‬
‫و ستند‪ ،‬پس خروجی د ستور زیر را م شاوده کنید و برخی فایلوایی را که در خروجی میآیند را‬
‫بررسی کنید‪ ،‬تا به جزئیات ‪ log‬گیری برای برنامهوای مختلف پیببرید‪:‬‬
‫”*‪#>> find /etc –iname “*syslog‬‬
‫خودتان وم میتوانید داخل ‪ log،syslog‬بنویستتید‪ .‬معموالً خواندن ‪ log‬فایلوا پیچیده استت زیرا‬
‫دستگاهوای مختلف بر روی آن پیغاموای مختلف میگذارند و برای فهم پیغام گذاشته شده نیاز به‬
‫آ شنایی با د ستگاه تولیدکننده وجود دارد (ا سم رجی ستروا و اطالعات فنی و موارد م شابه)‪klogd .‬‬
‫نیز پیاموای ‪ kernel‬را به ‪ syslogd‬ارسال مینماید و ‪ syslogd‬پیام را در فایل مینویسد‪.‬‬

‫‪syslogd‬‬
‫بنویس‬
‫‪logfile‬‬
‫بنویس‬
‫پیغام‬
‫‪console‬‬

‫‪klogd‬‬
‫اگر یک پروسس تصمیم بگیرد پیامی را ‪ log‬نماید آن را به پروسس ‪ syslogd‬ارسال مینماید و‬
‫معموالً پیاموا در فایل‪ /var/log/messages‬نوشته میشوند‪ .‬فرم ‪ log‬در فایلوای ‪ log‬بهصورت‬
‫زیر میباشد (البته ‪ bash‬این قوانین را دقیق اجرا نمیکند)‪:‬‬
‫‪tm_stmp host application[pid]: message‬‬
‫که در آن ‪ tm_stmp‬تاریخ و ساع واقعه‪ host ،‬نام کام یوتری که پیام در آن تولید شده‪،‬‬
‫]‪ application [pid‬نام برنامه و شمارهی پروسس مربوطه‪ ،‬و ‪ message‬پیغامی اس که ثب شده‬
‫اس ‪.‬‬
‫سؤال‪ :‬چرا اسم ‪ host‬در تمام خطوای فایل ‪ log‬نوشته میشود؟‬
‫پاسخ‪ :‬لینوکس را میتوان بهعنوان ‪ log server‬استفاده کرد‪ .‬فرض کنید در یک سازمان ‪ ۵۰‬سرور‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۴۸‬‬

‫لینوکس داریم که ور کدام ‪ log‬وای خودشان را تولید میکنند‪ .‬بررسی ‪ log‬وای تکتک این سروروا‬
‫کاری دشوار و زمانبر اس ‪ .‬در عوض میتوان یک سرور مرکزی بهعنوان ‪ log server‬تعیین کرد که‬
‫‪ log‬وای سایر سیستموا بر روی آن بیاید‪ .‬بنابراین با استفاده از نام ‪ host‬مشخص میشود که کدام‬
‫‪ log‬مربوط به چه کام یوتری اس ‪.‬‬
‫نکتهی بسیار مهمی در مورد راهاندازی ‪ log server‬وجود دارد‪ .‬فایل ‪ /etc/services‬را با وم مشاوده‬
‫میکنیم‪:‬‬
‫‪>> less/etc/services‬‬
‫‪ .‬در اکثر پورتوا ‪ udp‬و ‪tcp‬‬ ‫در این فایل نام سرویسوای مختلف و شمارهی پورت آنوا آمده اس‬
‫برای سرویس یک سانی در نظر گرفته شده ا س اما پورت ‪ ۵1۴‬اینگونه نی س ‪ .‬پورت ‪tcp ۵1۴‬‬
‫متعلق به ‪ shell‬ا س و ‪ syslog‬وم از ‪ udp‬ا ستفاده میکند‪ .‬پس بهعنوان یک متخ صص لینوکس‬
‫این نکته را به خاطر داشتتته باشتتید‪ .‬پس باید بتوانید کار راهاندازی ‪ log server‬برای لینوکس را با‬
‫استتتتفاده از امکانات این پورت انجام دوید‪ .‬بهعنوانمثال میتوان ‪ log server‬را به گونهای تنظیم‬
‫کرد که ‪ history‬تمام کام یوتروای موجود در شتتبکه را در خود ذخیره کند به این ترتیب میتوان‬
‫لیس ت ‪ command‬وایی را که کاربران مختلف وارد کردهاند را داش ت و در صتتورت بروز مشتتکل‪،‬‬
‫بررسی کرد‪.‬‬
‫با سطح دسترسی ‪ root‬فرمان زیر را اجرا میکنیم تا محتویات ‪ log‬سیستم را بررسی کنیم‪:‬‬
‫‪#>> less /var/log/messages‬‬
‫با بررسی این ‪ log‬فایل اطالعات زیادی را در مورد فعالی وای مختلف بر روی سیستم میتوان به‬
‫دس آورد‪.‬‬

‫دالیل ایجاد ‪ log‬در سیستم‬


‫موارد متعددی میتواند منجر به ایجاد ‪ log‬در سیستم شود‪ ،‬که از جملهی آنوا موارد زیر را میتوان‬
‫نام برد‪:‬‬
‫‪ .1‬خطاوای کنترلی‬
‫‪ .۲‬عدم اجرای درس ‪( su‬وارد کردن رمز اشتباه)‬
‫‪ .۳‬خطاوای سخ افزاری‬
‫‪ login .۴‬از طریق ‪ telnet ،ssh‬و ‪ftp‬‬
‫‪ .۵‬فعالی وای مربوط به ‪mail server‬‬
‫‪ startup .۶‬و ‪ shutdown‬پروسسوا‬

‫یوتر اجرا شود (مثالً محاسبهی !‪ )n‬و درجه حرارت ‪cpu‬‬


‫فرض کنید که یک برنامهی سنگین در کام‬
‫باال رود‪ ،‬در این صورت سیستم ‪ log‬وایی را ثب میکند که در این مورد اس ‪ .‬برای وضوح بیشتر‬
‫‪1۴۹‬‬ ‫فصل ‪ 11‬سرویسوای ضروری سیستم‬

‫‪ log‬وا با توجه به حساسیتشان دستهبندی میشوند‪ .‬ورچه عدد مربوط به ‪ log‬به صفر نزدیکتر‬
‫باشد حساسی آن بیشتر اس ‪.‬‬
‫رتبهبندی‬ ‫واژه‬ ‫شرح‬
‫سیستم عمالً غیر قابل‬
‫‪0‬‬ ‫‪emergencies‬‬
‫استفاده است‬
‫باید فوراً عکسالعمل نشان‬
‫‪1‬‬ ‫‪alerts‬‬
‫دهیم‬
‫‪2‬‬ ‫‪critical‬‬ ‫شرایط بحرانی است‬
‫‪3‬‬ ‫‪errors‬‬ ‫خطایی در سیستم وجود دارد‬
‫‪4‬‬ ‫‪warnings‬‬ ‫اخطار‬
‫شرایط عادی است ولی‬
‫‪5‬‬ ‫‪notifications‬‬
‫مشکالتی وجود دارد‬
‫‪6‬‬ ‫‪informational‬‬ ‫جهت اطالع‬
‫پیامهای مربوط به‬
‫‪7‬‬ ‫‪debugging‬‬
‫‪ debugging‬سیستم‬
‫مثالً باال رفتن دمای ‪ cpu‬یک پیغام ‪ emergency‬اس ت ‪ .‬مثالً اگر ‪ swap‬در حال پر شتتدن باشتتد با‬
‫شتترایط ‪ alert‬روبهرو وستتتیم‪ .‬یا مثالً اگر درجه حرارت ستتیستتتم باالی ‪ ۸۰‬درجه باشتتد شتترایط‬
‫‪ critical‬اس ‪ .‬این اعداد از صفر تا وف وستند و با سه بی در مبنای دو قابل نمایش وستند‪.‬‬

‫تنظیمات مربوط به ‪log daemon‬‬

‫در فایل ‪ /etc/syslong.conf‬تنظیمات مربوط به ‪ syslogd‬قرار دارد‪ .‬این فایل بسیار ساده اس ‪ ،‬اما‬
‫قدرت ب سیار زیادی دارد‪ .‬خطوط کامن در این فایل با عالم ‪ #‬شروع می شوند و سایر خطوط‬
‫قالب زیر را دارند‪:‬‬
‫‪facility.priority‬‬ ‫‪action‬‬
‫‪ log‬را تولید کرده اس ؛ ‪priority‬‬‫در عبارت باال ‪ facitily‬نمایانگر برنامه یا ابزاری اس که پیغام‬
‫اولوی آن پیغام را نشان میدود و ‪ action‬میتواند یک فایل‪ ،‬یک کام یوتر دیگر یا محلی باشد که‬
‫پیغام مربوطه را دریاف میکند‪.‬‬
‫مثال‪:‬‬
‫*‪mail.‬‬ ‫‪/var/log/mail‬‬
‫این خط در ‪ /etc/syslog.conf‬نشان میدود که تمام پیغاموای ‪ log‬مربوط به ‪ mail‬در فایل‬
‫‪ /var/log/mail‬نوشته میشوند‪ .‬بیشتر تنظیمات اولیه در فایل ‪ /etc/syslong.conf‬مشابه مورد‬
‫باالس ‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۵۰‬‬

‫مثال‪:‬‬
‫* ‪*.emerg‬‬
‫‪ emergency‬به‬ ‫که تمام پیغاموای با اولوی‬‫این خط در فایل ‪ /etc/syslong.conf‬به این معناس‬
‫تمام کاربرانی که ‪ log in‬کردهاند ارسال شود‪.‬‬
‫حاال دو مثال قبلی را با وم در نظر بگیرید‪ .‬یک پیغام ‪ log‬داریم که مربوط به ‪ mail‬اس و سطح‬
‫اولوی آن نیز ‪ emergency‬اس در این صورت وم در فایل ‪ /var/log/mail‬ذخیره میشود و وم به‬
‫تمام کاربرانی که ‪ log in‬کردهاند ارسال میشود‪.‬‬
‫مثال‪:‬‬
‫‪kern.crit @logger.pangaea.edu‬‬
‫‪kern.crit /dev/console‬‬
‫‪kern.info; kern.!err /var/log/kern-info‬‬
‫‪ logger.pangaea.edu‬در شبکه ارسال میکند‪.‬‬ ‫خط اول تمام پیغاموای ‪ critical‬کرنل را به آدرس‬
‫توجه داشته باشید که کام یوتر ‪ logger.pangaea.edu‬باید از قبل تنظیم شده باشد که ‪ log‬وا را‬
‫دریاف و ثب کند‪ .‬خط دوم یک ک ی از پیغاموای ‪ critical‬را به ‪ /dev/console‬ارسال میکند که‬
‫در واقع در ‪ console‬اصلی کام یوتر نشان میدود‪ .‬خط سوم وم تمام پیغاموای ‪ log‬را که اولوی شان‬
‫بین ‪ info‬و ‪ error‬اس به ‪ /var/log/kern-info‬ارسال میکند‪.‬‬
‫در بیشتر سیتسموا تنظیمات اولیه مربوط به ‪ /etc/syslog.conf‬نیز قابل قبول و خوب اس‬
‫ولی ممکن اس که شما نیاز به تنظیمات خاصی داشته باشید‪.‬‬

‫ابزار ‪logger‬‬

‫در برخی مواقع ممکن اس بخواوید ببهطور دستی یک مدخل ‪ log‬در فایلوای ‪ log‬سیستم ایجاد‬
‫کنید‪ ،‬در این صورت میتوانید از ابزار ‪ logger‬استفاده کنید‪ .‬برای اطالعات بیشتر به صفحهی ‪man‬‬
‫‪ logger‬مراجعه کنید‪.‬‬
‫بهعنوانمثال فرض کنید که میخواویم پیغام ”‪“shutting down for system maintenance‬‬
‫را در ‪ /var/log/messages‬ثب کنید‪ ،‬فرمان زیر را میزنیم‪:‬‬
‫‪>> logger shutting down for system maintenance‬‬

‫‪ rotate‬کردن فایلهای ‪log‬‬

‫ممکن اس حجم فایلوای ‪ log‬بسیاز زیاد شود و به این ترتیب ممکن اس ‪ /var/log‬بسیار تنومند‬
‫گردد‪ .‬به منظور حل این مشکل‪ ،‬در لینوکس ابزاروایی جه ‪ rotate‬کردن فایلوای ‪ log‬در نظر‬
‫گرفته شده اس ‪ .‬رایجترین ابزار ‪ rotate‬کردن ‪ logrotate‬نام دارد‪ .‬این برنامه به واسطهی اجرا شدن‬
‫متعدد در بازهوای زمانی مشخص فعالی خود را انجام میدود (‪ .)cron job‬ابزار ‪ logrotate‬با بررسی‬
‫‪ /etc/logrotate.conf‬که شامل تنظیمات مختلفی اس که به ‪ /etc/logrotate.d‬اشاره میکند‪ ،‬رفتار‬
‫‪1۵1‬‬ ‫فصل ‪ 11‬سرویسوای ضروری سیستم‬

‫خود را تنظیم میکند‪ .‬بهعنوانمثال خروجی یک فایل ‪ /etc/logrotate.conf‬میتواند بهصورت زیر‬


‫باشد‪:‬‬
‫‪#Rotate logs weekly‬‬
‫‪weekly‬‬
‫‪#keep 4 weeks of old files‬‬
‫‪rotate 4‬‬
‫‪#create new log files after rotation‬‬
‫‪create‬‬
‫‪#compress old log files‬‬
‫‪compress‬‬
‫‪#Refer to files for individual packages‬‬
‫‪include /etc/logrotate.d‬‬
‫‪#Set miscellaneous options‬‬
‫‪notifempty‬‬
‫‪nomail‬‬
‫‪noolddir‬‬
‫‪#Rotate wtmp, which isn’t handled by a specific program‬‬
‫{‪/var/log/wtmp‬‬
‫‪montly‬‬
‫‪create 0664 root utmp‬‬
‫‪rotate 1‬‬
‫}‬
‫به یاد داشته باشید که ازآنجاکه عمل ‪ rotate‬بهصورت یک فعالی برنامهریزی شده انجام میشود‬
‫در صورتی که سیستم خاموش باشد‪ ،‬این عمل انجام نخواود شد‪ .‬اگر سیستمی در ساعات خاصی‬
‫خاموش می شود‪ ،‬در این صورت باید اطمینان حاصل کرد کرد که فعالی ‪ cron‬مورد نظر به موقع‬
‫انجام میشود یا اینکه از ‪ anacron‬استفاده کرد‪( .‬در ‪ LPIC2‬این موارد بهطور مفصل بررسی خواوند‬
‫شد)‪.‬‬
‫پس با ا ستفاده از ابزار ‪ logrotate‬به جای اینکه یک فایل تنومند دا شته با شید که پیو سته در حال‬
‫رشتتد باشتتد‪ ،‬چندین فایل داریم‪ .‬ور فایل که نوشتتته میشتتود و پر شتتد‪ ،‬بهعنوان آرشتتیو نگهداری‬
‫می شود و به سراغ فایل بعدی میرویم‪ .‬ازآنجاکه تعداد این فایلوا محدود ا س ‪ ،‬در مثال باال ‪ ۴‬تا‬
‫بود‪ ،‬بعد از اینکه به چهارمین فایل رسیدیم و آن نیز پر شد‪ ،‬دوباره به سراغ اولین فایل میرویم‪ .‬به‬
‫این ترتیب حجم م شخ صی از دی سک ا شغال می شود ولی بعد از مدتی برخی دادهوای ‪ log‬از بین‬
‫میروند که در صورتی که به آنوا نیاز باشد‪ ،‬باید از آنوا پشتیبان گرف و نگهداری نمود‪.‬‬

‫بررسی ‪mail server‬های لینوکس‬


‫ستتتروروای ایمیل لینوکس بهطور معمول از تعدادی ‪ component‬ستتتاخته شتتتدهاند‪ ،‬زیرا محیط‬
‫لینوکس بهطور پیش فرض یک ستتیستتتمعامل چند کاربره میباشتتد‪ .‬یک ستترور لینوکس موجود‬
‫بهطور معمول دارای ‪ mail‬سرور داخلی میبا شد‪ ،‬برای اجازه دادن به سرور برای ارسال ایمیلوای‬
‫خارجی نیاز به یک ابزار داریم که ‪ mail transfer agent‬یا به اختصتتتار ‪ MTA‬نامیده میشتتتود‪ .‬از‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۵۲‬‬

‫جم لهی ‪ MTA‬وای مهم ‪sendmail,postfix‬و ‪ exim‬و ‪ qmail‬را میتوان نام برد‪ .‬برای خوا ندن‬
‫ایم یل میتوانیم بهطور مستتتتقیم از طریق ‪ shell‬و یا ‪ mailbox protocol‬م ثل ‪ pop3‬یا ‪imap‬‬
‫استفاده نماییم‪ .‬عالوه بر آن بسیاری از ابزاروای ایمیل‪ ،‬واسطوای مبتنی بر وب را دارند‪ ،‬که امکان‬
‫خواندن ایمیل در مرورگر وب را فراوم میآورد‪.‬‬
‫در صورتی که ‪ mailutils‬بر روی سیستم شما نصب نیس ‪ ،‬آن را نصب کنید‪:‬‬
‫‪# apt-get install mailutils‬‬
‫‪ mail‬میتوانید آن را بررسی‬ ‫در صورتی که ایمیلی برای شما ارسال شده باشد‪ ،‬به کمک دستور‬
‫کنید‪ .‬ومچنین ابزار ‪ mailq‬لیس صف ایمیل را نمایش میدود‪ .‬ور مدخل در این لیس ‪ ،‬نمایش‬
‫دوندهی ‪ ID‬فایل در صف‪ ،‬حجم پیام‪ ،‬زمان دریاف ‪ ،‬ارسال کننده و مواردی از این دس اس ‪.‬‬
‫شاید جالب باشد که بدانید به کمک ابزار ‪ telnet‬وم میتوان ایمیلوا را خواند‪.‬‬

‫‪ redirect‬کردن ایمیل‬
‫برای ‪ redirect‬کردن ایمیل ممکن ا س نیاز به انجام برخی تنظیمات دا شته با شید‪ .‬بهعنوانمثال‬
‫حالتی را در نظر بگیرید که سروروای ایمیل باید ح سابی به نام ‪ postmaster‬دا شته با شند و یک‬
‫نفر که مسئول سیستمواس باید این ایمیلوا را بخواند‪ .‬اما ‪ login‬کردن بر روی تک تک سروروا‬
‫کار دشتتواری استت ‪ ،‬به جای آن میتوان گف که ور ایمیلی که به آدرس ‪ postmaster‬میآید‪ ،‬به‬
‫آدرس آن شتتتخص وم برود‪ .‬برای انجام این کار فایل ‪ /etc/mail/aliases‬یا ‪ /etc/aliases‬را باید‬
‫ویرایش کنید‪ .‬در برخی ‪ mail server‬وا از جمله ‪ Postfix ،senmail‬و ‪ qmail‬الزم استتت که فایل‬
‫‪ /etc/aliases‬را به صورت ‪ binary‬کام ایل کنید تا سرع انجام کار باالتر رود‪ .‬برای انجام این کار از‬
‫دستور زیر استفاده میشود‪:‬‬
‫‪# newaliases‬‬
‫که در آن کاربر‬ ‫یک راه دیگر برای ‪ redirect‬کردن ایمیل استتتتفاده از فایل ‪ ~/.forward‬استتت‬
‫میتواند مقصدی را که میخواود ایمیلوایش ارسال شود را مشخص کند‪.‬‬

‫مدیریت بر روی چاپ و چاپگرها‬


‫سیستمعامل لینوکس با مدیری قوی که بر روی چاپگروا دارد میتواند بهعنوان خادم چاچگر مورد‬
‫استفاده قرار گیرد‪ .‬با استفاده از ‪ CUPS‬و امکاناتی که ‪ CUPS‬در اختیار راوبر قرار میدود‪ ،‬مدیری‬
‫بر روی چاپگروا ساده بوده و با استفاده از تعداد زیادی فرمان میتوان فعالی وای مختلفی را بر‬
‫روی چاپگروا انجام داد‪ CUPS .‬فایلوای تنظیمات متعددی دارد که در مسیر ‪ /etc/cups‬قابل‬
‫دسترسی اس ‪.‬‬
‫‪1۵۳‬‬ ‫فصل ‪ 11‬سرویسوای ضروری سیستم‬

‫ابزارها‬
‫با فرمان ‪ redhat-config-printer‬میتوان چاپگر را تعریف نمود‪.‬‬ ‫‪‬‬
‫با فرمان ‪ lpc‬میتوان چاپگروا را مدیری نمود‪.‬‬ ‫‪‬‬
‫با فرمان ‪ lpstat‬میتوان وضعی چاپگر و گزارشات را دید‪.‬‬ ‫‪‬‬
‫تعداد فرمانوای مرتبط با چاپگر نسبتاً زیاد بوده و اکثر فرمانوای مربوط به چاپگر با‬ ‫‪‬‬
‫حروف ‪ lp‬شروع میگردند‪ ،‬مانند ‪.lpq ،lpr ،lpadmin ،lprm‬‬
‫برای ارسال گزارش به چاپگر میتوان از فرمان ‪ lp‬و یا ‪ lpr‬استفاده نمود‪.‬‬ ‫‪‬‬
‫فصل ‪ 12‬کار با شبکه‬
‫امروزه بیشتر سیستموای لینوکس به یک شبکه‪ ،‬خواه داخلی یا اینترن ‪ ،‬متصل وستند‪ .‬حتی‬
‫کام یوتروای خانگی و تلفنوای ومراه بهطور معمول به اینترن متصل میشوند‪ .‬به ومین دلیل‬
‫توانایی راهاندازی شبکه و آشنا بودن با مفاویم پایهای آن اومی بسیار زیادی دارد‪ .‬به عالوه داشتن‬
‫اتصال شبکه‪ ،‬برای پیکربندی کامل لینوکس ضروری بوده و یکی از پیشنیازوای آن میباشد‪.‬‬

‫سختافزار شبکه‬
‫سخ افزار شبکه با این ودف طراحی شده اس که دو یا چند کام یوتر را قادر سازد که با وم ارتباط‬
‫برقرار کنند‪ .‬اکثر کام یوتروای جدید بر روی بردمادر خود سخ افزاروای شبکهای را دارند و‬
‫تواناییوای شبکه بر روی آنوا در نظر گرفته شده اس ‪ .‬عالوه بر آن سخ افزار شبکه که بر روی‬
‫‪ PCI‬نصب میشوند یا از درگاه ‪ USB‬متصل میشوند نیز وجود دارند‪ .‬در اکثر سروروا و کاربردوای‬
‫جدی از اتصال ‪ RJ45‬که ومان کابل ‪ Lan‬اس استفاده میشود‪ .‬امروزه با افزایش سرع کارتوای‬
‫شبکه و وجود کارت وای چند گیگابی استفاده از اتصاالت فیبر نوری جه برقرار اتصاالت بین‬
‫دستگاهوا رایج شده اس ‪.‬‬
‫برای مشاودهی اطالعات ‪ PCI‬کارتوای شبکهای که داریم دستور زیر را میزنیم‪:‬‬
‫‪$ lspci | grep Eth‬‬
‫در خروجی دستور باال نام سازنده و اطالعات ‪ )domain:bus:device.fun( PCI‬را مشاوده خواوید‬
‫کرد‪ .‬خروجی دستور باال یکی از قابل اعتمادترین منابع برای کسب اطالعات در مورد سخ افزار‬
‫شبکهای اس که در روی سیستم شما قرار دارد‪.‬‬

‫بررسی پروتکلهای ‪TCP/IP‬‬

‫در زیر به بررسی برخی از پروتکلوای مهم ‪ TCP/IP‬میپردازیم‪.‬‬


‫‪1۵۵‬‬ ‫فصل ‪ 1۲‬کار با شبکه‬

‫‪IP .‬‬ ‫‪ IP‬این پروتکل اصلیترین پروتکل در قلب ‪ TCP/IP‬اس ‪ IP .‬یک پروتکل الیهی ‪ ۲‬شبکه اس‬
‫یک پروتکل مبتنی بر بهترین تالش اس به این معنا که در رساندن بستهوا به مقصد ویچ تضمینی‬
‫ارائه نمیکند‪ ،‬بلکه تنها بهترین تالش خود را انجام خواود داد‪ IP .‬بر دو نوع ‪ IPv4‬که ‪ ۳۲‬بیتی‪ ،‬و‬
‫‪ IPv6‬که ‪ 1۲۸‬بیتی اس ‪ ،‬میباشد‪.‬‬
‫‪ ICMP‬برای ارسال پیغاموای خطا از این پروتکل استفاده میشود‪ .‬بهعنوانمثال سیگنال عدم‬
‫دسترسپذیری سرویس درخواس شده‪ ،‬با این پروتکل اعالم میشود‪ .‬بهطور معمول برنامهوایی که‬
‫شما استفاده میکنید بستهوای ‪ ICMP‬را بر حسب درخواس کاربر تولید نمیکنند‪ ،‬بلکه این نوع‬
‫بستهوای در پش صحنه به واستهی برخی مشکالتی که در سرویس یا شبکه به وجود میآید‪،‬‬
‫تولید میشوند‪ .‬یک مورد استثنا در این مورد برنامهی ‪ ping‬اس ‪.‬‬
‫‪ UDP‬این پروتکل سادهترین پروتکل الیهی ‪ ۳‬شبکه اس ‪ .‬این پروتکل روندوای پیشرفتهای برای‬
‫تصحیح بستهوای خارج از ترتیب یا ضمان تحویل ارائه نمیکند‪ .‬ورچند این مسئله در برخی موارد‬
‫میتواند مشکلآفرین باشد‪ ،‬ولی ومچنین به این معنا اس که این پروتکل یک پروتکل سریع اس‬
‫که به خصوص برای سرویسوای ویدئو در اینترن ‪ ،‬سیستموای ‪ DNS‬و فایلسیستموای مبتنی بر‬
‫شبکه کاربرد دارد‪.‬‬
‫‪ TCP‬این پروتکل رایجترین پروتکل مورد استفاده در الیهی ‪ ۳‬شبکه اس ‪ .‬برخالف ‪ ،UDP‬این‬
‫پروتکل سازوکاروای بررسی خطا و اطمینان از رسیدن بستهوا را دارد‪ .‬این ویژگیوا باعث میشود‬
‫که این پروتکل جه استفاده در کاربردوایی که نیاز به انتقال دادهوا با حجم باال دارند‪ ،‬مفید باشد‪.‬‬
‫البته با این اوصاف ‪ TCP‬کمی کندتر از پروتکل ‪ UDP‬اس ‪ .‬بسیاری از برنامهوای شبکه که تابهحال‬
‫با آنوا کارکردهاید‪ ،‬ومانند برنامهوای ایمیل‪ ،‬احتماالً از این پروتکل استفاده میکنند‪.‬‬
‫الزم اس بدانید که در سالوای اخیر به عل اینکه ظرفی ‪ IPv4‬رو اتمام بوده اس ‪ ،‬بسیاری‬
‫از کشوروای جهان زیرساخ وای خود را به سم ‪ IPv6‬بردهاند‪ .‬ورچند ‪ IPv6‬تعداد آدرسوای‬
‫بسیار بیشتری را پشتیبانی میکند‪ ،‬ولی در حال حاضر کمی کندتر اس ‪.‬‬
‫مفهوم دیگری به نام ‪ network mask‬وجود دارد که با ناموای ‪ netmask‬یا ‪ subnetmask‬نیز‬
‫شناخته میشود‪ ،‬شمارهای اس که از روی آن قسمتی از آدرس ‪ IP‬را که مربوط به شبکه اس را‬
‫از قسمتی که آدرس کام یوتر اس تشخیص داد‪ .‬اگر بهصورت ‪( binary‬در مبنای دو)‪subnetmask ،‬‬
‫داده شده را با آدرس ‪ and ،IP‬کنیم به آدرس شبکه میرسیم‪ .‬برخی از آدرسوای شبکه برای‬
‫شبکهوای داخلی وستند و اصطالحاً به آنوا ‪ private IP address‬میگویند‪ ،‬بازهی دیگری از ‪ IP‬وا‬
‫وستند که توسط ‪ IANA‬کنترل میشوند و فروخته میشوند که اینوا ‪ public IP address‬وا‬
‫وستند‪ .‬در جدول زیر بازهی ‪ private IP addreses‬آمده اس ‪.‬‬
‫‪block‬‬ ‫‪start‬‬ ‫‪end‬‬
‫‪24-bit or /8 prefix‬‬ ‫‪10.0.0.0‬‬ ‫‪10.255.255.255‬‬
‫‪20-bit or /12 prefix‬‬ ‫‪172.16.0.0‬‬ ‫‪172.31.255.255‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۵۶‬‬

‫‪16-bit block or /16 prefix‬‬ ‫‪192.168.0.0‬‬ ‫‪192.168.255.255‬‬


‫در اکثر شبکهوای داخلی سازمانوا از ‪ IP‬وای مبتنی بر ردیف اول جدول باال استفاده میشود زیرا‬
‫که تعداد ‪ IP‬وای بیشتری در آن قرار دارد و امکان تعریف تعداد بیشتری کام یوتر در این شبکه‬
‫وجود دارد‪ .‬در جدول زیر کالسوای ‪ IP‬و ‪ subnetmask‬آنوا آمده اس ‪:‬‬
‫‪class‬‬ ‫‪subnetmask‬‬
‫‪A‬‬ ‫‪255..0.0.0‬‬
‫‪B‬‬ ‫‪255.255.0.0‬‬
‫‪C‬‬ ‫‪255.255.255.0‬‬
‫قسم وایی که بهصورت ‪ ۲۵۵‬در ‪subnetmask‬وای جدول باالس ‪ ،‬نمایش دودوی عدد ‪1111111‬‬
‫در مبانی دو اس ‪.‬‬
‫کام یوتروا با شتتمارهوا کار میکنند‪ ،‬بنابراین عجیب نیستت که از اعداد ‪ TCP/IP‬بهعنوان آدرس‬
‫ا ستفاده کنند‪ .‬اما ان سانوا ترجیح میدوند که با ا سامی کار کنند‪ .‬به ومین دلیل‪ TCP/IP ،‬راوی‬
‫برای مرتبط کردن استتتامی با آدرسوا فراوم آورده استتت ‪ ..‬به این استتتامی ‪ hostname‬میگویند‪.‬‬
‫‪ hostname‬شامل دو بخش نام ماشین و نام دامنه اس ‪ .‬نام ماشین به کام یوتر خاصی اشاره دارد‬
‫و نام دامنه به مجموعهای از کام یوتروا اشتتاره میکند‪ .‬البته به خاطر داشتتته باشتتید که نام دامنه‬
‫ال‬
‫معادل ق سم آدرس شبکه در ‪ IP‬نی س ‪ .‬دو مفهوم نام دامنه و ق سم آدرس شبکه در ‪ IP‬کام ً‬
‫جدا از یکدیگر وستند‪.‬‬
‫با زدن دستتتتور زیر در خط فرمان ‪ hostname‬کام یوتری که بر روی آن کار میکنیم را مشتتتاوده‬
‫خواویم کرد‪:‬‬
‫‪$ hostname‬‬
‫که خروجی آن بر روی سیستم ما بهصورت زیر اس ‪:‬‬
‫‪laitec.aictc.edu‬‬
‫در صورتی که دستور زیر را بزنیم نام ‪ hostname‬ما تغییر خواود کرد‪:‬‬
‫‪# hostname google.com‬‬
‫د ستورات ‪dnsdomainname‬‬ ‫که ‪ hostname‬سی ستم ما را به ‪ google.com‬تغییر میدود‪ .‬به عالوه‬
‫یا ‪ domainname‬نیز برای نمایش نام دامنه در سی ستم به کار میروند‪ .‬د ستور ‪ domainname‬نام‬
‫دامنهای را که توستتتط ‪ Network Information System‬استتتتفاده میشتتتوئد را نمایش داده‪ ،‬و‬
‫‪ dnsdomainname‬نام دامنهای را که توستتتط ‪ DNS‬استتتت فاده میشتتتود را نمایش میدود‪ .‬این‬
‫د ستورات بر روی سروروای دور تاثیری ندارند‪ ،‬تنها بر روی برنامهوایی که درخوا س وای شان بر‬
‫روی این سرور اس ‪ ،‬اثر خواوند گذاش ‪.‬‬
‫بستتیاری از توزیعوای لینوکس با مراجعه به فایل ‪ /etc/hostname‬یا ‪ /etc/HOSTNAME‬در‬
‫ونگام ‪ boot‬شتتدن ستتیستتتم ‪ hostname‬خود را تنظیم میکنند‪ .‬بنابراین اگر قصتتد تنظیم کردن‬
‫‪ hostname‬سی ستم را بهطور دائمی دارید باید به این فایلوا مراجعه نمایید‪ .‬البته به خاطر دا شته‬
‫باشتتید که توزیع ‪ Fedorad‬برخالف ستتایر توزیعوای لینوکس از فایل ‪ /etc/sysconfig/network‬به‬
‫‪1۵۷‬‬ ‫فصل ‪ 1۲‬کار با شبکه‬

‫این منظور استتتتفاده میکند‪ .‬توجه داشتتتته باشتتتید که برنامهوای بستتتیاری ومانند ‪ Apache‬و‬
‫‪ Sendmail‬از ‪ hostname‬تعریف شده برای انجام برخی پیکربندیوا ا ستفاده میکنند؛ بنابراین در‬
‫مشخص کردن مقدار آن دق کنید‪.‬‬
‫ومانطور که پیشتر گفتیم‪ ،‬ور وسیلهای اعم از کام یوتر‪ ،‬مسیریاب‪ ،‬سوئیچ‪ ،‬چاپگر و ‪ ...‬برای اتصال‬
‫به شتتبکه به منظور ستترویسگیری و یا ستترویسدوی نیاز به آدرستتی دارند که اصتتطالحاً آنرا ‪IP‬‬
‫‪ Address‬مینامند‪ .‬باید بدانیم که ‪ IP Address‬را میتوان به دو گونه به وستتتیله اختصتتتاص داد‪:‬‬
‫بهصتتتورت آدرس ایستتتتا و آدرس پویا‪ .‬ور کدام از این روشوای آدرسدوی دارای مزایا و معایبی‬
‫و ستند‪ .‬در صورت فعال بودن این سرویس‪ ،‬برای گرفتن ‪ IP‬تح سی ستمعامل لینوکس فرمان‬
‫‪ dhclient‬را وارد مینماییم‪ .‬در صتتورتی که ‪ dhcp‬ی ستتروری در شتتبکه موجود باشتتد و به این‬
‫درخواس پاسخ دود‪ ،‬سیستم ما یک ‪ IP‬جدید خواود گرف ‪.‬‬
‫از دیگر فایلوای مهم مربوط به شبکه در لینوکس فایل ‪ /etc/services‬ا س ‪ .‬این فایل پیکربندی‬
‫به عبارتی دفترچه تلفن برعکس (‪ )reverse‬میبا شد به این صورت که ابتدا شماره پورت و س س‬
‫استتم ستترویستتی که به آن پورت گوش میدود‪ ،‬آمده استت ‪ .‬بهعنوانمثال پورت ‪ 11۰‬متعلق به‬
‫سرویس ‪ pop3 email‬میباشد‪ .‬بنابراین‪ ،‬این فایل شامل لیس پورتوای تعریف شده و رزرو شده‬
‫می باشتتتد‪ .‬برای تغییر دادن پورت متعلق به ور ستتترویس میتوانید فایل را ویرایش نمایید‪ .‬برای‬
‫فهمیدن اینکه چه پورتوایی تو سط برنامهوا در حال ا ستفاده میبا شد میتوانید از فرمان ‪ lsof‬و‬
‫‪ nmap‬استفاده نمایید‪.‬‬

‫پورتهای شبکه‬
‫تماس گرفتن با یک کام یوتر در شتتبکه مهم استت ‪ ،‬اما یک نوع دیگر آدرسدوی‪ ،‬عالوه بر آدرس‬
‫‪ ،IP‬شماره پورت اس ‪ .‬ارسال کنندهی بسته باید آدرس پورتی را در کام یوتر مقصد در نظر داشته‬
‫باشتتد‪ ،‬تا بتواند با برنامهی مورد نظرش در آن تماس بگیرد و کار کند‪ .‬پس به زبان ستتاده شتتماره‬
‫پورت در یک الیه باالتر از ‪ ،IP‬نوع خدم و برنامهای را که کاربر میخواود را م شخص میکند‪ .‬در‬
‫ادامه به یکی از پرکاربردترین پروتکلوای موجود‪ ،‬پروتکل انتقال فایل ‪ ،FTP‬میپردازیم‪ .‬در جدول‬
‫زیر لیس پورتوای مهم و اطالعات آنوا آمده اس ‪:‬‬
‫نمونه برنامههای لینوکس‬ ‫کاربرد‬ ‫‪ TCP‬یا ‪UDP‬‬ ‫شماره پورت‬
‫‪ProFTP, vsftpd‬‬ ‫‪FTP‬پورت دادهوای‬ ‫‪TCP‬‬ ‫‪20‬‬
‫‪ProFTP, vsftpd‬‬ ‫‪FTP‬‬ ‫‪TCP‬‬ ‫‪21‬‬
‫‪OpenSSH, Dropbear‬‬ ‫(‪Secure Shell (SSH‬‬ ‫‪TCP‬‬ ‫‪22‬‬
‫‪in.telnetd‬‬ ‫‪Telnet‬‬ ‫‪TCP‬‬ ‫‪23‬‬
‫‪Sendmail, Postfix, Exim,‬‬ ‫‪Simple Mail Transfer‬‬
‫‪TCP‬‬ ‫‪25‬‬
‫‪qmail‬‬ ‫)‪Protocol (SMTP‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۵۸‬‬

‫نمونه برنامههای لینوکس‬ ‫کاربرد‬ ‫‪ TCP‬یا ‪UDP‬‬ ‫شماره پورت‬


‫‪Domain Name System‬‬
‫‪BIND, dnsmasq, djbdns‬‬ ‫‪TCP or UDP‬‬ ‫‪53‬‬
‫)‪(DNS‬‬
‫‪Apache, Roxen, thttpd‬‬ ‫‪HTTP‬‬ ‫‪TCP‬‬ ‫‪80‬‬
‫‪Dovecat, Qpopper, popa3d‬‬ ‫‪POP-3‬‬ ‫‪TCP‬‬ ‫‪110‬‬
‫‪InterNetNews(INN), Diablo,‬‬
‫‪NNTP‬‬ ‫‪TCP‬‬ ‫‪119‬‬
‫‪Leafnode‬‬
‫‪NetBIOS Session‬‬
‫‪Samba‬‬ ‫‪(Windows file‬‬ ‫‪TCP‬‬ ‫‪139‬‬
‫)‪sharing‬‬
‫‪Dovecat, Cyrus IMAP, UW-‬‬
‫‪IMAP‬‬ ‫‪TCP‬‬ ‫‪143‬‬
‫‪IMAP‬‬
‫‪Simple Network‬‬
‫‪Net-SNMP‬‬ ‫‪UDP‬‬ ‫‪161‬‬
‫‪Management Protocol‬‬
‫‪HTTP over SSL‬‬
‫‪Apache, Roxen‬‬ ‫‪TCP‬‬ ‫‪443‬‬
‫)‪(HTTPS‬‬
‫‪SMTP over SSL; or‬‬
‫‪Sendmail, Postfix, Exim,‬‬
‫‪URL Rendezvous‬‬ ‫‪TCP‬‬ ‫‪465‬‬
‫‪qmail; or network routers‬‬
‫)‪Director (URD‬‬
‫‪Dovecot, Cyrus IMAP, UW-‬‬
‫‪IMAP over SSL‬‬ ‫‪TCP‬‬ ‫‪993‬‬
‫‪IMAP‬‬
‫‪Dovecot, Qpopper, popa3d‬‬ ‫‪POP-3 over SSL‬‬ ‫‪TCP‬‬ ‫‪995‬‬

‫پروتکل ‪FTP‬‬

‫ورگاه الزم با شد که بین چند کام یوتر که در شبکه و ستند‪ ،‬فایلوای متعددی را منتقل کنید یا‬
‫به اشتتتتراک بگذارید‪ ،‬پروتکل ‪ FTP‬یکی از بهترین روش وا خواود بوئد‪ .‬البته ممکن استتت برای‬
‫کاربردوای موق از روشوای دیگر استتتفاده شتتود‪ .‬به خاطر داشتتته باشتتید که این پروتکل از دو‬
‫پورت استتتتفاده میکند‪ .‬پورت ‪ ۲۰‬برای داده وای ‪ FTP‬به کار میرود که به آن ‪ active FTP‬وم‬
‫میگویند‪ ،‬و پورت ‪ ۲1‬برای اانتقال دستورات به کار میروئد که به آن ‪ passive FTP‬گفته میشود‪.‬‬
‫برای راهاندازی این سرویس الزم اس که بر روی کام یوتر سرور یک سرویسدوندهی ‪ FTP‬نصب‬
‫کنید‪ .‬یکی محبوبترین خادموای ‪ very secure FTP ،FTP‬یا ‪ vsftp‬نام دارد‪ .‬شتتتما میتوانید با‬
‫ن صب این ب ستهی نرمافزاری بر روی سی ستم خودتان‪ ،‬یک سرور ‪ FTP‬راهاندازی کنید‪ .‬س س از‬
‫کام یوتری دیگری که میخواود فایلی را از روی سرور ‪ FTP‬بردارد‪ ،‬با ا ستفاده از امکانات خادم از‬
‫طریق خط فرمان و یا حتی مرورگر وب ارتباط برقرار کنید و عمل انتقال فایل را انجام داد‪ .‬بنابراین‬
‫کاربر اولین بار درخواس اتصال خود را به پورت ‪ ۲1‬سرور ‪ FTP‬ارسال میکند و بعد از وارد کردن‬
‫نام کاربری و رمز عبور (در صورتی که نیاز به اینوا با شد)‪ ،‬میتواند د ستورات خود را وارد کند‪ .‬در‬
‫صتتورتی که کاربر درخواس ت انتقال فایل بدود‪ ،‬اطالعات از طریق ‪ active FTP‬یا ومان پورت ‪۲۰‬‬
‫سرور منتقل خواود شود‪ .‬د ستور ‪ apt-cache show vsftpd‬یا ‪ yum info vsftpd‬اطالعات ب ستهی‬
‫‪1۵۹‬‬ ‫فصل ‪ 1۲‬کار با شبکه‬

‫نرمافزاری ‪ vsftpd‬که ومان ‪ daemon‬مربوط به ‪ vsftp‬اس را نمایش خواود داد‪.‬‬


‫بر روی تمامی توزیعوای محبوب لینوکس ‪ ftp client‬نصب شده اس و وجود دارد‪ .‬در صورتی که‬
‫دستور ‪ ftp‬بر روی سیستم شما کار میکند به این معنا ااس که ‪ FTP client‬بر روی سیستم شما‬
‫نصب شده اس ‪ .‬در صورتی که این بسته را ندارید میتوانید با دستور ‪ apt-get install ftp‬یا ‪yum‬‬
‫‪ install ftp‬آن را نصتتتب کنید‪ .‬عالوه بر ابزار ‪ ftp‬که در خط فرمان قرار دارد‪ FTP client ،‬وای‬
‫گرافیکی متعددی برای ‪ FTP‬نوشتتتته شتتتده استتت که از جملهی محبوبترین آن وا ‪FileZilla‬‬
‫میباشد‪.‬‬

‫‪telnet‬‬
‫کلمهی ‪ telent‬برگرفته از ‪ teletype network‬ا س ‪ telnet .‬یک پروتوکل شبکهای ا س که تح‬
‫اینترن یا ‪ lan‬کاربرد دارد‪ .‬با ا ستفاده از امکانات این پروتوکل میتوان از یک سرور ‪ login‬گرفته و‬
‫فعالی وای مورد نظر را انجام داد کاربران ستترور لینوکس میتوانند از راه دور با استتتفاده از فرمان‬
‫‪ telnet‬به ستترور متصتتل شتتده و این امکان را دارند تمام فرمانوایی که از طریق کنستتول قادر به‬
‫اجرای آن بودند را اجرا نمایند البته به خاطر دا شته با شید که از ‪ telnet‬تنها در شبکهوایی که به‬
‫امنی آنوا اطمینان دارید استفاده کنید و ورگز برای ارتباطات راه دور که از طریق اینترن برقرار‬
‫شدهاند‪ ،‬از این پروتکل استفاده نکنید‪.‬‬

‫‪host‬‬
‫این ابزار برای ان جام ‪ DNS Lookups‬استتتت فاده میشتتتود‪ .‬بهطور معمول برای ت بد یل نام وا به‬
‫آدرسوای ‪ IP‬و بالعکس از این ابزار استتتفاده میشتتود زمانی که ویچ ورودی و با ‪option‬ی داده‬
‫نشود‪ ،‬این فرمان یک توضیح مختصر از ورودیوا و ‪Option‬وای قابل استفاده نمایش میدود‪.‬‬
‫تمرین‪ :‬با مراجعه به صتتفحهی ‪ man‬دستتتور ‪ host‬توضتتیح دوید که ور کدام از فرمانوای زیر چه‬
‫کاری را انجام میدوند‪:‬‬
‫‪$ host example.com‬‬
‫‪$ host -t a example.com‬‬

‫‪dig‬‬
‫‪DNS name servers‬‬ ‫‪ domain information groper‬یک ابزار انعطاف پذیر برای تحقیق دربارهی‬
‫میباشتتتد‪ .‬کاربرد این فرمان برای حل مشتتتکالت ‪ DNS‬میباشتتتد که به دلیل انعطافپذیری باال‪،‬‬
‫سهول استفاده و وضوح خروجی آن محبوب شده اس ‪ .‬دستور زیر را وارد کنید و خروجی آن را‬
‫بهدق مطالعه نمایید‪:‬‬
‫‪$ dig localhost‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۶۰‬‬

‫‪traceroute‬‬
‫این ابزار برای ردیابی مسیر حرک بستهوای شبکهای در شبکهای با پروتکل اینترن )‪ (IP‬مورد‬
‫استفاده قرار میگیرد که نوع ‪ IPv6‬آن وم موجود اس ‪ .‬ابزار ‪ traceroute‬تقریباً در ومه سیستمعامل‬
‫وای شبیه یونیکس موجود اس ‪ .‬انواع مشابه این ابزار قابلی وای مشابه‪ ،‬از قبیل‪ tracepath‬در‬
‫لینوکسوای مدرن و ‪ tracert‬در سیستمعامل مایکروساف ویندوز وم وجود دارد‪ .‬ومچنین در‬
‫سیستمعاملوایی با پایه ویندوز ‪ NT‬شما میتوانید برنامه ‪ pathping‬را مشاوده کنید که چنین‬
‫قابلی وایی را فراوم آورده اس ‪.‬‬

‫ابزار ‪ping‬‬

‫‪ICMP ECHO_REQUEST‬‬ ‫این ابزار اتصال شبکه را مورد بررسی قرار میدود‪ ،‬به عبارت دقیقتر‬
‫را به کام یوتر مقصد ارسال میکند و بر حسب پاسخی که دریاف میکند‪ ،‬اطالعات مناسبی را به‬
‫کاربر نمایش میدود‪ ..‬نسخهی ‪ IPv6‬این ابزار با نام ‪ ping6‬اس ‪ .‬دستور زیر را بزنید‪:‬‬
‫‪$ ping google.com‬‬
‫که‬ ‫در خروجی این دستور دو قسم بسیار مهم وجود دارد‪ time .‬که نشان دوندهی زمانی اس‬
‫طول میکشد بسته از کام یوتر شما به مقصد برسد‪ ttl .‬یک عدد اس که حداکثر مقدار آن ‪255‬‬
‫میباشد به ازای ور روتری که بسته از آن عبور میکند یک واحد از ‪ ttl‬آن کاسته میشود‪ .‬در صورتی‬
‫که ‪ ttl‬به مقدر صفر برسد بسته ‪ drop‬خواود شد و به مقصد نخواود رسید‪ .‬کوچک بودن مقدار ‪ttl‬‬
‫در خروجی دستور ‪ ping‬نشاندوندهی تعداد بیشتر ‪ router‬وا در مسیر اس ‪.‬‬

‫پیکربندی با آدرس ‪ IP‬استاتیک‬


‫اگر در شبکه ‪ DHCP server‬وجود نداشته باشد در این صورت نمیتوانید با ‪ dhcp client‬یا ومان‬
‫دستور ‪ dhclient‬برای سیستم درخواس ‪ IP‬بکنید‪ .‬در چنین حالتی خودتان باید بهصورت دستی‬
‫تنظیمات شبکه سیستم را آماده کنید‪ .‬اعمال این تنظیمات با استفاده از دستورات خط فرمان ممکن‬
‫اس به عالوه در صورتی که بخواوید این تنظیمات را برای مدت طوالنی بر روی سیستم اعمال‬
‫کنید میتوانید فایلوای پیکربندی ومانند ‪ /etc/sysconfig/network-scripts/ifcfg-name‬یا‬
‫‪ /etc/network/interfaces‬را ویرایش کنید‪ .‬در زیر محتویات یک فایل ‪ ifcfg-name‬معمولی که برای‬
‫استفاده از ‪ IP‬ایستا تنظیم شده اس را مشاوده میکنید‪:‬‬
‫”‪DEVICE=”p2p1‬‬
‫”‪BOOTPROTD=”static‬‬
‫”‪IPADDR=”192.168.29.39‬‬
‫”‪NETMASK=”255.255.255.0‬‬
‫”‪NETWORK=”192.168.29.0‬‬
‫”‪BROADCAST=”192.168.29.255‬‬
‫”‪GATEWAY=”192.168.29.1‬‬
‫”‪ONBOOT=”yes‬‬
‫‪1۶1‬‬ ‫فصل ‪ 1۲‬کار با شبکه‬

‫برخی توضیحات مربوط به فیلدوای باال در زیر آمده اس ‪:‬‬


‫‪ IP Address‬از طریق دستور ‪ ifconfig‬میتوانید آدرس ‪ IP‬را به صورت ایستا مشخص کنید ومین‬
‫کار را از طریق فیلد ‪ IPADDR‬که در باال آمده اس نیز میتوانید انجام دوید‪.‬‬
‫‪ Network Mask‬امکان تنظیم کردن ‪ netmask‬از طریق دستور ‪ ifconfig‬یا از طریق فیلد‬
‫‪ NETMASK‬در فایل پیکربندی باال وجود دارد‪.‬‬
‫‪ Gateway Address‬از طریق دستتتتور ‪ route‬در خط فر مان ام کان تغییر ‪ gateway‬وجود دارد‪.‬‬
‫جه ت اعمتتال تغییرات بتتهصتتتورت دائمی‪ ،‬الزم استتتت کتته فتتایتتل پیکربنتتدی در مستتتیر‬
‫‪ /etc/sysconfig/network/routes‬را تغییر دوید‪ .‬توجه دا شته با شید که دا شتن ‪ gateway‬بر روی‬
‫کام یوتری که به یک شتتبکهی وستتیعتر متصتتل نیستت ضتترورتی ندارد‪ ،.‬به این معنا که چنین‬
‫کام یوتری بر روی شبکهوای محلی که به ویچ ‪ router‬ی متصل نیس کار خواود کرد‪.‬‬
‫‪ DNS settings‬برای اینکه ‪ Linux‬بتواند از ‪ DNS‬برای تبدیل بین آدرسوای ‪ IP‬و ‪ hostname‬وا‬
‫ا ستفاده کند الزم ا س که حداقل یک ‪ DNS‬سرور را بر روی سی ستم در فایل ‪/etc/resovl.conf‬‬
‫تنظیم کرده با شید‪ .‬در این فایل قبل از آدرس ‪ IP‬سرور ‪ DNS‬کلمهی کلیدی ‪ nameserver‬را قرار‬
‫میدوند‪ ،‬ومانند ‪ .nameserver 192.16829.1‬میتوانید حداکثر نام ستتته ‪ nameserver‬را در فایل‬
‫‪ /etc/resovl.conf‬قرار دوید‪ .‬به عالوه در این فایل میتواند نام ‪ domain‬کام یوتر خودتان را به‬
‫کمک گزینهی ‪ domain‬تعیین کنید‪ ،‬بهعنوانمثال ‪.domain sharif.edu‬‬
‫توجه داشتتتته باشتتتید که در توزیع وای مبتنی بر ‪ RHEL‬فایل پیکربندی برای ‪ eth0‬در مستتتیر‬
‫‪ /etc/sysconfig/network-scripts/ifcfg-eth0‬قرار دارد در حتتالی کتته در توزیعوتتای مبتنی یر‬
‫‪ debian‬چنین فا یل پیکرب ندی در مستتتیر ‪ /etc/network/interfaces‬قرار دارد‪ .‬پس در کار با‬
‫فایلوای پیکربندی مربوط به شبکه‪ ،‬توجه به توزیعی که با آن کار میکنید ضرورت دارد‪ .‬عالوه بر‬
‫روشوای گفتهشتده در اینجا در صتورتی که نستخهی لینوکستی که بر روی ستیستتمتان نصتب‬
‫کردهاید دارای واستتتط کاربری باشتتتد‪ ،‬در قستتتم ‪ setting‬مربوط به شتتتبکه به راحتی میتوانید‬
‫تنظیمات مورد نظر خودتان را اعمال کنید‪.‬‬
‫ومانطور که پیشتتتر اشتتاره کردیم‪ ،‬ابزار ‪ ifconfig‬اومی حیاتی وم در تنظیم آدرس ‪ IP‬و وم در‬
‫تنظیم ‪ netmask‬دارد‪ .‬این برنامه ومچنین میتواند تنظیمات فعلی شتتبکه را نشتتان دود‪ .‬استتتفاده‬
‫معمول از ابزار ‪ ifconfig‬بهصورت زیر اس ‪:‬‬
‫‪$ ifconfig eth0 up 192.168.29.39 netmask 255.255.255.0‬‬
‫دستور باال آدرس ‪ IP‬مشخص شده را به واسط ‪ eth0‬داده و ومچنین ‪ netmask‬ی را که در باال آمده‬
‫اس برای آن در تعیین میکند‪ .‬بنابراین بعد از تنظیمات اعمال شده در باال‪ ،‬کام یوتر به بستهوایی‬
‫که در شبکه به لینک ‪ eth0‬برسند پاسخ خواود داد‪ .‬اما توجه داشته باشید که دستور باال مسیری‬
‫(‪ )route‬برای ترافیک خارج از شبکهی شما تعیین نمیکند‪ .‬برای انجام این کار میتوانید از ابزار‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۶۲‬‬

‫‪ route‬استفاده کنید‪:‬‬
‫‪$ route add default gw 192.168.29.1‬‬
‫‪ 192.168.29.1‬باید آدرس ‪ gateway‬شبکهی خودتان را قرار‬ ‫توجه داشته باشید که به جای آدرس‬
‫دوید که میتوانید آن را از مسئول شبکه که روتروا را تنظیم کرده اس ‪ ،‬ب رسید‪.‬‬
‫برای کسب اطالعات در مورد شبکه وم از ابزار ‪ ifconfig‬و وم از ابزار ‪ route‬میتوانید استفاده کنید‪.‬‬
‫بهعنوانمثال ‪ ifconfig eth0‬اطالعات زیادی را در مورد لینک ‪ eth0‬نمایش میدود‪ .‬ومچنین در‬
‫صورتی که بخواوید اطالعات مربوط به تمامی لینکوای را مشاوده کنید میتوانید از دستور‬
‫‪ Ifconfig –a‬استفاده نمایید‪ .‬مثالً یکی از اطالعات مهم آدرس ‪ MAC‬مربوط به لینک اس که در‬
‫خروجی دستور ‪ ifconfig‬مقابل ‪ HWaddr‬نمایش داده میشود‪ .‬جه استفاده از دستور ‪ route‬برای‬
‫بررسی وضعی شبکه و رفع مشکالت آن را بهصورت ‪ route –n‬در خط فرمان وارد کنید‪ .‬آرگومان‬
‫‪ –n‬به ‪ route‬خواود گف که تالش کند که ‪ hostname‬وای مرتبط با ‪IP‬وا را پیدا کند‪.‬‬
‫برای اینکه بخواوید یک لینک را قطع (‪ )down‬کنید میتوانید از دو دستور ‪ ifdown eth0‬یا‬
‫‪ ifconfig eth0- down‬استفاده نمایید‪ .‬ومچنین برای راهاندازی (‪ )up‬کردن آنوا میتوانید از دو‬
‫دستور ‪ ifup eth0‬یا ‪ ifconfig eth0 up‬استفاده نمایید‪ .‬توجه داشته باشید که دستور ‪ ifconfig‬یک‬
‫دستور سطح پایینتر و در برخی موارد قویتر اس ‪.‬‬
‫یکی از نکات مهمی که باید به آن توجه کنید این اس ت که بهطور معمول لینوکس قبل از مراجعه‬
‫به ‪ DNS‬ستتروروایی که برای ‪ name resolution‬مشتتخص شتتده استت (در در باال در مورد آنوا‬
‫توضتتیح دادیم)‪ ،‬به فایل ‪ /etc/hosts‬مراجعه میکند‪ .‬شتتما میتوانید این رفتار را با مراجعه به فایل‬
‫پیکربندی ‪ /etc/nsswitch.conf‬تغییر دوید که سرویس ‪ Name Service Switch‬یا ومان ‪ NSS‬را‬
‫پیکربندی میکند‪.‬‬

‫پیکربندی ‪routing‬‬

‫ومانطور که میدانید ‪ routing‬ترافیک را از یک شبکه به شبکهی دیگر منتقل میکند‪ .‬الزم ا س‬


‫که ستتیستتتم لینوکس برای ارتباط مستتتقیم با کام یوتروای موجود در شتتبکه پیکربندی شتتود‪.‬‬
‫ومچنین شما در کام یوتر آدرس ‪ router‬ی را که سیستم شما بهعنوان ‪ gateway‬استفاده میکند‬
‫ر ا الزم ا س که تعیین کنید تا به این و سیله سی ستم شما بتواند با شبکهی بزرگتر و اینترن‬
‫ارتباط برقرار کند‪ .‬ور ب ستهای که مق صد آن شبکهی محلی نبا شد‪ ،‬به سم ‪default gateway‬‬
‫ودای خواود شد‪ .‬به کمک د ستور ‪ route‬شما یک ‪ target‬را ‪ add‬یا ‪ del‬از جدول ‪ routing‬ا ضافه‬
‫یا حذف میکنید‪ .‬آرگومانوای ‪ –net‬و ‪ –host‬ابزار ‪ route‬را وادار میکنند که ‪ target‬را‪ ،‬به ترتیب‪،‬‬
‫بهعنوان آدرس شتتتبکه و کام یوتر در نظر بگیرد‪ .‬برای تنظیم ‪ netmask‬نیز از گزینهی ‪netmask‬‬
‫میتوان استفاده کرد و ومچنین ‪ gw‬برای مشخص کردن روتری که از طریق آن بستهوا به ‪target‬‬
‫میخواوند بروند را م شخص میکند‪ .‬البته توجه دا شته با شید که در برخی از ن سخهوای ‪ route‬از‬
‫‪1۶۳‬‬ ‫فصل ‪ 1۲‬کار با شبکه‬

‫عنو‪ .‬ان ‪ gateway‬به جای ‪ gw‬استفاده شده اس ‪ .‬کلمهی ‪ reject‬یک مسیر ‪ blocking‬را مشخص‬
‫میکند که تمام ترافیکی را که به آن آدرس میروند را رد میکند‪ .‬یک نکتهی مهم دیگر وم این‬
‫ا س که ورچند ابزار ‪ route‬معموالً توانایی شناختن ‪ device‬مرتبط را دارد ولی شما نیز میتوانید‬
‫به کمک آرگومان ‪ dev‬آن را مشخص کنید‪.‬‬
‫بهعنوانمثال شبکهای را در نظر بگیریدکه در آن ب ستهوا به آدرس مق صد ‪ ،172.20.0.0/16‬باید از‬
‫طریق روتر ‪172.21.1.1.‬ارستتال شتتوند‪ .‬توجه داشتتته باشتتید که آدرس این روتر بهعنوان ‪default‬‬
‫‪ gateway‬در نظر گرفته نشده اس و این کار نیز باید انجام شود‪ .‬به کمک دستور زیر میتوان این‬
‫کار را انجام داد‪:‬‬
‫‪# route add –net 172.20.0.0 netmask 255.255.0.0 gw 172.21.1.1‬‬
‫تذکر‪ routing table :‬وای نادر س میتواند م شکالت ب سیار جدی به وجود آورد‪ .‬شما میتوانید‬
‫‪ routing table‬سیستمتان را از طریق دستور ‪ route‬بررسی کنید و به کمک آرگومان ‪del‬‬ ‫وضعی‬
‫در دستتتور ‪ route‬مواردی را که نادرستت وستتتند از جدول حذف کنید و به کمک آرگومان ‪add‬‬
‫مواردی را که الزم اس به این جدول اضافه نمایید‪.‬‬

‫ابزار ‪netstat‬‬

‫یکی از مهمترین ابزاروا در رفع اشکال شبکه محسوب میشود‪ netstat .‬آرگومانوای متعددی‬
‫می پذیرد و وم برای کسب اطالع و وم تغییر تنظیمات در شبکه به کار میرود‪ .‬به وسیلهی این ابزار‬
‫میتوان اطالعاتی را در مورد ابزاروای شبکه به دس آورد که از طرق دیگر شاید به راحتی امکانپذیر‬
‫نباشد‪ .‬به حال وای زیر توجه نمایید‪.‬‬
‫کسب اطالعات در مورد‬ ‫اطالعات واسط شبکه‪ :‬آرگومان ‪ –interface‬یا ‪ –i‬دستور ‪ netstat‬جه‬
‫واسطوای شبکه به کار میرود‪ .‬این خروجی ومانند چیزی اس که ‪ ifconfig‬بر میگرداند‪.‬‬
‫اطالعات ‪ :routing‬به کمک آرگومان ‪ –route‬یا ‪ –r‬میتوانید اطالعات ‪ routing‬را‪ ،‬ومانند آنچه که‬
‫در دستور ‪ route‬دیدیم‪ ،‬به دس آوریم‪.‬‬
‫اطالعات ‪ :masquerade‬آرگومان ‪ –M‬را به ‪ netstat‬بدوید تا اطالعات مربوط به ارتباطاتی را که‬
‫به واسطهی امکانات ‪ NAT‬لینوکس وجود دارد را مشاوده نمایید‪.‬‬
‫پورتهای باز‪ :‬اگر دستور ‪ netstat‬را بدون ویچ آرگومانی بزنید‪ ،‬اطالعاتی را در مورد پورتوای باز‬
‫و سیستموایی که به آن وصل میشوند‪ ،‬نمایش خواود داد‪.‬‬
‫تمام اتصاالت‪ :‬آرگومان ‪ –all‬یا ‪ –a‬را میتوان به ومراه سایر آرگومانوا استفاده کرد که موجب‬
‫میشود که ‪ netstat‬اطالعاتی را در مورد پورتوایی که برنامهوای سرور باز کردهاند و در حال گوش‬
‫ال برقرار شده اس ‪ ،‬نمایش دود‪.‬‬
‫کردن وستند را به ومراه سایر ارتباطاتی که قب ً‬
‫به شما توصیه میکنیم که حتماً دستور ‪ man netstat‬را زده و این صفحه را بهدق مطالعه‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۶۴‬‬

‫نمایید تا به قابلی وای دیگر ‪ netstat‬نیز پی ببرید‪.‬‬


‫فصل ‪ 13‬امنیت‬
‫سیستموای لینوکس بهطور معمول بهعنوان کام یوتروای سرور مورد استفاده قرار میگیرند و ممکن‬
‫اس بهطور مستقیم یا غیرمستقیم به اینترن متصل باشند‪ .‬در چنین سیستموایی امنی شبکه‬
‫اومی پیدا میکند زیرا که سیستموایی که نادرس پیکربندی شده باشند‪ ،‬میتوانند نقطهای برای‬
‫نفوذ وکروا‪ 1‬به شبکهی شما باشند‪ .‬روشوای متعددی در امنی برای جلوگیری از دسترسیوای‬
‫ناخواسته خارج از شبکه به سیستم شما وجود دارد که از جمله سادهترین آنوا قطع کردن شبکه‬
‫یا محدود کردن دسترسی به سروروای شبکه با کنترل کردن پورتوای شبکهای اس که آنوا‬
‫استفاده میکنند‪.‬‬
‫توجه دا شته با شید که امنی یک زمینهی ب سیار گ سترده ا س و ت سلط به تمامی ق سم وای آن‬
‫ورگز برای یک نفر امکان نخواود دا ش ‪ .‬در این ف صل آ شنایی با زمینهوای ا صلی امنی لینوکس‬
‫را خواویم داشتتت ‪ .‬به عالوه امروزه توزیعی به نام ‪ Kali Linux‬وجود دارد شتتتامل ابزاروایی برای‬
‫بررسی امنی شبکه اس و بهصورت نسخهی قابل بوت بهصورت ‪ ISO‬قابل دریاف اس ‪.‬‬

‫ابزارهایی برای مدیریت رمز عبور‬


‫بیشتر توزیعوای لینوکس بهطور پیشفرض از پسوردوای ‪ shadow‬شده استفاده میکنند؛ به این‬
‫معنا که مقدار ‪ hash‬شدهی رمز عبور در فایل ‪ /etc/passwd‬قرار ندارد که برای ومه قابل مشاوده‬
‫باشد (که چه بسا با دستور ‪ John‬قابل کرک شدن باشد)‪ ،‬بلکه در فایل ‪ /etc/shadow‬قرار گرفته‬
‫اس ‪ .‬پس بهعنوان مسئول سیستم الزم اس که فایل ‪ /etc/passwd‬را بررسی کنید و از ‪shadow‬‬
‫بودن رمزوای عبور کاربران اطمینان حاصل کنید‪ .‬در صورت نیاز میتوانید از ابزار ‪shadowconfig‬‬
‫استفاده کنید‪ .‬ومچنین به خاطر داشته باشید که فایل ‪ /etc/passwd‬را باید از طریق دستور ‪vipw‬‬
‫ویرایش کنید و نه از طریق ویرایشگروای معمول‪ ،‬تا مشکلی پیش نیاید‪.‬‬

‫‪ethical-hacker‬‬ ‫‪1‬البته وکر لزوماً به کستتی که خرابکار اس ت گفته نمیشتتود زیرا که ‪ white-hat-hacket‬یا‬
‫وایی وستند که جه دفاع از سیستموا تخصص کسب کردهاند‪.‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۶۶‬‬

‫نکتهی مهم دیگر در مورد رمزوای عبور این استتت که باید بهطور دورهای عوض شتتتوند‪ .‬دستتتتور‬
‫‪ chage‬به مدیر سیستم کمک میکند که کاربران را وادار کند که بهطور دورهای رمزوای عبور خود‬
‫را تغییر دوند‪ .‬در مورد ‪ chage‬پیشتر در این کتاب صحب کردهایم‪.‬‬
‫یکی دیگر از نکاتی که باید به آن توجه داش ‪ ،‬استفاده از کانالوای امن در ارتباطات راه دور اس ‪.‬‬
‫در صتتورتی که از ‪ telnet‬برای برقراری ارتباط راه دور استتتفاده میکنید‪ ،‬باید بدانید ممکن استت‬
‫پستتورد شتتما لو برود‪ .‬یا اگر از ‪ vnc server‬بر روی ‪ telnet‬برای ارتباط تصتتویری به واستتط کاربری‬
‫لینوکس ا ستفاده میکنید باید دق کنید که ‪ telnet‬به تنهایی امن نی س ‪ .‬یک راه حل خوب این‬
‫اس که از ابزار ‪ ssh‬برای ایجاد یک تونل امن ایجاد کنید و از داخل آن ‪ telnet‬برقرار کنید‪.‬‬

‫سرور تنومند در لینوکس‬


‫بسیاری از برنامهوا پورتوای شبکه را باز میکنند و بهطور مستقیم به بر روی آن در شبکه گوش‬
‫میکنند‪ ،‬که به این برنامهوای ‪ daemon‬گفته می شود‪ .‬برخی دیگر از برنامهوا از طریق یک وا سط‬
‫این کار را انجام میدوند که به این واسط ‪ super server‬گفته میشود‪ .‬مزی استفاده از واسط این‬
‫ا س که در صورتی که درخوا س وا در شبکه به برنامهی مورد نظر بهطور دائم نبا شد‪ ،‬ا ستفاده از‬
‫‪ super server‬باعث استتتفادهی بهینه از منابع ستتیستتتم میشتتود‪ .‬یکی دیگر از فواید استتتفاده از‬
‫‪ super server‬امنی است ‪ .‬امکان انجام وارستتیوای امنیتی در ‪ super server‬وجود دارد و به این‬
‫ترتیب تمام برنامهوایی و ستتترویسوایی که تح ‪ super server‬اجرا میشتتتوند تح محافظ‬
‫خواو ند بود‪ .‬دو ‪ super server‬محبوب در لینوکس ‪ inetd‬و ‪ xinetd‬وستتتت ند که ‪ xinetd‬تاک ید‬
‫ویژهای بر روی مستتتالهی امنی دارد‪ .‬در ‪ inetd‬مستتتائل امنیتی از طریق بستتتتهای به نام ‪TCP‬‬
‫‪ Wrapper‬بررستتی میشتتود‪ ،‬در حالی که ویژگیوای امنیتی ‪ xinetd‬بهصتتورت درونی در خود آن‬
‫پیادهسازی شده اس ‪.‬‬
‫‪super‬‬ ‫نکته‪ :‬تا جایی که میتوانید در تمام مراحل وارستتیوای امنیتی را انجام دوید‪ .‬مثالً وم در‬
‫‪ server‬وار سی امنیتی انجام دوید و وم در خود برنامهای که تح ‪ super server‬اجرا می شود؛ به‬
‫این ترتیب از امنی بسیار باالتری برخوردار خواوید بود‪.‬‬

‫پیکربندی ‪inetd‬‬

‫در صورتی که بستهی ‪ inetd‬بر روی سیستم شما نصب نیس ‪ ،‬آن را نصب کنید‪ .‬بعد از نصب آن‬
‫دستور ‪ ps ax | grep inetd‬را بزنید تا متوجه وضعی اجرای آن شوید‪ .‬فایل پیکربندی این ‪super‬‬
‫‪ server‬در مسیر ‪ /etc/inetd.d‬یا فایل ‪ /etc/inetd.conf‬میباشد‪ .‬این فایل پیکربندی حاوی خطوط‬
‫مختلفی اس که ور یک به یک سرور اشاره دارند‪ .‬در نسخهوای اخیر ‪ inetd‬سعی بر آن اس که‬
‫به جای داشتن یک فایل پیکربندی‪ ،‬چندین فایل پیکربندی وجود داشته باشد که زیر دایرکتوری‬
‫‪1۶۷‬‬ ‫فصل ‪ 1۳‬امنی‬

‫‪ /etc/inetd.d‬قرار میگیرند‪ .‬برای نوشتن فایل پیکربندی جدید برای برنامهای خودتان‪ ،‬میتوانید به‬
‫فایلوای نمونهای که در مسیر گفتهشده وجود دارند مراجعه نمایید‪ .‬در فایل ‪ /etc/inetd.conf‬عالم‬
‫‪ #‬برای کامن به کار رفته اس ‪ .‬بعد از اینکه تغییرات خود را در فایلوای پیکربندی ‪ inetd‬اعمال‬
‫کردید‪ ،‬الزم اس که آن را مجدد ًا راهاندازی کنید‪:‬‬
‫‪# /etc/init.d/inetd restart‬‬
‫در دستور باال عالوه بر ‪ restart‬میتوانید از آرگومان ‪ reload‬استفاده کنید که فقط فایلوای‬
‫پیکربندی توسط ‪ inetd‬بازخوانی شود‪ .‬البته توجه کنید که برخی مواقع ‪ reload‬ممکن اس به‬
‫درستی کار نکند‪ .‬یک راه دیگر برای راهاندازی مجدد استفاده از دستور‬
‫‪# kill –HUP pid‬‬
‫اس که در آن ‪ pid‬شمارهی پروسس ‪ inetd‬اس که میتوان با دستور‬
‫‪# ps –aef | grep inetd‬‬
‫آن را مشاوده کرد‪.‬‬
‫ابزار ‪ inetd‬با صتتدا زدن ‪ tcpd‬بررستتی میکند که آیا یک درخواست انجام شتتده برای ستترویس از‬
‫طرف کاربر ‪ authorized‬وست یا خیر‪ .‬برای کنترل دستترستی در ‪ inetd‬دو فایل پیکربندی وجود‬
‫دارد‪ /etc/hosts.allow :‬و ‪ ./etc/hosts.deny‬فایل اول کام یوتروایی را که حق دسترسی به سیستم‬
‫دارند را م شخص میکند‪ ،‬که اگر ک سی لی س ن شده با شد‪ ،‬حق د ستر سی نخواود دا ش ‪ .‬فایل‬
‫‪ hosts.deny‬لیستت کام یوتروایی را که اجازهی دستتترستتی ندارند را مشتتخص میکند‪ .‬اگر یک‬
‫کام یوتر در ور دو لی س با شد‪ ،‬فایل ‪ hosts.allow‬اولوی خواود دا ش ‪ .‬صفحات ‪ man‬مربوط به‬
‫‪ hosts.allow‬و ‪ hosts.deny‬دربارهی ویژگیوای پیشرفتهی آنوا اطالعات زیادی را در بر دارد‪.‬‬

‫پیکربندی ‪xientd‬‬

‫برنامهی ‪ xinetd‬یا ومان ‪ extended super server‬شتتبیه ‪ inetd‬است که کمی بهبود یافته است ‪.‬‬
‫اکثر توزیعوای مدرن از این ‪ super server‬استتتتفاده میکنند‪ .‬مشتتتابه ‪ inetd‬فایلوای پیکربندی‬
‫مربوط به ‪ xientd‬در م سیروای ‪ /etc/xinetd.d‬و ومچنین ‪ /etc/xinetd.conf‬قرار دارد‪ .‬ور برنامهای‬
‫که قرار با شد تح ‪ xinetd‬اجرا شود یک فایل مرتبط در م سیر ‪ /etc/xinetd.d‬قرار میدود‪ .‬شما‬
‫نیز میتوانید فایلوای مربوط به برنامهوای خودتان را نوشته و در این مسیر قرار دوید‪ .‬یک مدخل‬
‫نمونه از تنظیمات در فایلوای پیکربندی ‪ xientd‬در زیر آماده اس ‪:‬‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۶۸‬‬

‫‪service ftp‬‬
‫{‬
‫‪socket_type‬‬ ‫‪= stream‬‬
‫‪protocol‬‬ ‫‪= tcp‬‬
‫‪wait‬‬ ‫‪= no‬‬
‫‪user‬‬ ‫‪= root‬‬
‫‪server‬‬ ‫‪= /usr/sbin/in.ftpd‬‬
‫‪server_args‬‬ ‫‪= -1‬‬
‫}‬
‫اگر خط ‪ disable = yes‬را در فایل باال اضافه کنید‪ ،‬در این صورت کل این مدخل نادیده گرفته‬
‫میشود و برنامه تح ‪ xientd‬اجرا نخواود شد‪ .‬حتماً به صفحهی ‪ man‬برنامهی ‪ xinetd‬مراجعه‬
‫فرمایید تا اطالعات خود را در مورد پیکربندی آن افزایش دوید‪ .‬به خاطر داشته باشید که در برخی‬
‫از برنامهوا که بهطور پیشفرض فایلوای پیکربندی خود را در مسیر ‪ /etc/xinetd.d‬قرار میدوند‬
‫خط ‪ disable = yes‬بهطور پیش فرض وجود دارد‪ ،‬که اگر میخواوید آن برنامه تح ‪ xinetd‬اجرا‬
‫شود‪ ،‬باید آن خط را به ‪ disable = no‬تغییر دوید‪ .‬بعد از اینکه تغییرات را در فایل یا فایلوای‬
‫پیکربندی مورد نظر انجام دادید‪ xientd ،‬را ‪ restart‬کنید‪:‬‬
‫‪# /etc/init.d/xientd restart‬‬
‫امکانات امنیتی زیر در ‪ xinetd‬وجود دارد‪:‬‬
‫‪ ‬نام واسط شبکه‪ :‬با کمک کلمهی ‪ bind‬میتوان به ‪ xinetd‬گف که تنها بر روی یک‬
‫لینک خاص شبکه به بستهوا پاسخ دود‪ .‬این ویژگیوای در کام یوتروایی که چندین‬
‫لینک یا کارت شبکه دارند مفید اس ‪.‬‬
‫‪ ‬آدرس ‪ IP‬یا شبکهی مجاز‪ :‬به کمک ‪ only_from‬میتوان این مسئله را تعیین کرد‪ .‬به‬
‫این ترتیب بستهوایی که از آدرسوای نامربوط میآیند‪ ،‬پاسخ داده نخواوند شد‪.‬‬
‫‪ ‬آدرس ‪ IP‬یا شبکهی غیرمجاز‪ :‬به کمک گزینهی ‪ no_access‬میتوانید این مسئله را‬
‫تنظیم کنید‪.‬‬
‫‪ ‬زمانوای دسترسی‪ :‬به کمک گزینهی ‪ access_times‬میتوان زمانوایی را که در آن‬
‫کاربران امکان دسترسی به سرویس را دارند مشخص نمود‪ .‬این گزینه را میتوان بهصورت‬
‫‪ hour:min-hour:min‬مشخص کرد که بازهای اس که در آن امکان دسترسی وجود دارد‪.‬‬
‫توجه داشته باشید که اگر زمان دسترسی را از ساع ‪ ۸‬صبح تا ‪ ۵‬بعد از ظهر بگذارید و‬
‫یک کاربر ‪ 1‬دقیقه به ‪ ۵‬وارد سیستم شود‪ ،‬میتواند تا ساع بعد از ‪ ۵‬نیز از سرویس‬
‫استفاده کند‪ .‬این مسئله تنها بر روی کاربرانی که میخواوند بعد از ساع گفتهشده وارد‬
‫سیستم شوند اثر میگذارد و مانع میشود‪.‬‬

‫نکته‪ :‬توجه داشته باشید که در ‪ LPIC1‬در مورد دیوارهوای آتش‪ 1‬صحب نمیشود‪ ،‬اما شما باید با‬

‫‪1‬‬ ‫‪firewall‬‬
‫‪1۶۹‬‬ ‫فصل ‪ 1۳‬امنی‬

‫این مفهوم آشنایی داشته باشید‪ firewall .‬کام یوتری اس که دسترسی به سایر کام یوتروا در‬
‫شبکه را محدود میکند تا از آنوا در برابر حمالت محافظ کند‪ .‬دو نوع دیوارهی آتش داریم‪:‬‬
‫‪ packet-filter firewall‬و ‪ .proxy filter‬نوع اول تک تک بستهوا را بهصورت جزئی بررسی میکند‬
‫و دومی در سطح باالتری کار میکند و لزوماً به بررسی تک تک بستهوا نمیپردازد‪ .‬وستهی‬
‫سیستمعامل لینوکس توانایی ‪ packet-filter firewall‬را دارد‪ ،‬که به کمک دستور ‪ iptables‬میتوان‬
‫آن را پیکربندی کرد‪.‬‬
‫نکته‪ :‬یکی از ابزاروای مهم در بررسی شبکه ابزار ‪ netstat‬اس که در فصل پیش به آن اشاره شد‪.‬‬

‫ابزار ‪lsof‬‬

‫این ابزار جه لیس کردن فایلوای باز اس ‪ .‬توجه داشته باشید که منظور از فایل در اینجا بسیار‬
‫گسترده اس و شامل ارتباطات شبکه وم میشود‪ .‬بهعنوانمثال دستور زیر را بزنید تا لیس‬
‫ارتباطات شبکه و نوع آنوا را مشاوده کنید‪:‬‬
‫‪# lsof –i‬‬
‫تمام ارتباطاتی که به ‪ google.com‬برقرار اس ‪:‬‬
‫‪# lsof –i@google.com‬‬
‫در صورتی که ‪ lsof –i‬را بهعنوان یک کابر عادی و نه ‪ root‬بزنید‪ ،‬تنها مواردی را که مربوط به کاربر‬
‫خودتان اس را مشاوده میکنید‪.‬‬
‫دستور زیر را بزنید تا تمام ارتباطاتی را که مربوط به پورت ‪ ftp‬اس را مشاوده کنید‪:‬‬
‫‪# lsof –i:ftp‬‬

‫استفاده از ‪nmap‬‬

‫‪ nmap‬ابزاری استت که برای بررستتی پورتوای باز یک ستتیستتتم به کار میرود‪ .‬برای بررستتی‬
‫پورتوای باز ‪ google.com‬که ‪ TCP‬وستند‪ ،‬دستور زیر را بزنید‪:‬‬
‫‪# nmap –sT google.com‬‬
‫برای بررسی پورتوایی که از ‪ UDP‬استفاده میکنند دستور زیر را بزنید‪:‬‬
‫‪# nmap –sU google.com‬‬

‫محدود کردن دسترسی ‪root‬‬

‫به این دلیل که اکان ‪ root‬تواناییوای بستتیاری دارد‪ ،‬دستتترستتی به آن باید محدود باشتتد‪ .‬در‬
‫کام یوتری با یک م سئول سرور حل کردن این م سئله آ سان ا س و کافی ا س که ‪ root‬تنها یک‬
‫رمز عبور داشته باشد که ویچ کسی نمیداند و در این صورت تنها اوس که میتواند با اکان ‪root‬‬
‫وارد شتتود یا با دستتتور ‪ su‬به اکان ‪ root‬تغییر کاربری دود‪ su .‬مخفف ‪ switch user‬اس ت ‪ .‬فرض‬
‫کنید که با نام کاربری ‪ ali‬وارد شدهاید و در خط فرمان دستور ‪ su‬را میزنید در این صورت از شما‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۷۰‬‬

‫رمز عبور ‪ root‬را میپر سد که اگر در س وارد کنید به اکان ‪ root‬تغییر کاربری میدوید‪ .‬اگر بعد‬
‫از ورود دستور ‪ exit‬را بزنید دوباره به ومان ترمینال کاربر ‪ ali‬برمیگردید‪.‬‬
‫یکی دیگر از روشوای استفاده از ‪ su‬به روش زیر اس ‪:‬‬
‫”‪$ su –c “lsof –i‬‬
‫میشود و دستور ‪lsof –i‬‬ ‫به این ترتیب در صورتی که کاربر ‪ root‬نباشید از شما رمز ‪ root‬خواسته‬
‫را تح دسترسیوای ‪ root‬اجرا میکند‪ .‬توجه کنید که دستور باال را به روش زیر نیز میتوانید اجرا‬
‫کنید‪:‬‬
‫‪$ sudo lsof –i‬‬
‫که باز وم در صورتی که کاربر ‪ root‬نبا شید از شما رمز عبور ‪ root‬را خواود پر سید‪ .‬توجه دا شته‬
‫باشتتتید که ور کاربری وم نمیتواند ‪ sudo‬بکند‪ .‬فایل ‪ /etc/sudoers‬برای پیکربندی این مورد در‬
‫نظر گرفته شتتده اس ت ‪ .‬این فایل را از طریق ‪ visudo‬میتوان ویرایش کرد‪ .‬این فایل حاوی دو نوع‬
‫مدخل ا س ‪ aliases :‬و ‪ .user specifications‬این فایل در م شخص کردن سطح د ستر سیوا برای‬
‫کاربران مختلف نقش حیاتی دارد‪ .‬صتتفحهی ‪ man sudoers‬یکی از مراجع مهم برای ویرایش فایل‬
‫‪ /etc/sudoers‬است ‪ .‬پس ‪ sudoers‬برای مدیری ستیاست امنیتی ‪ sudo‬استتفاده میشتود‪ .‬فرض‬
‫کنید که یک د سته د ستور ‪ STORAGE‬دارید که برای مدیری م سائل ذخیره سازی ا س ‪ ،‬و یک‬
‫دستتته دستتتور دیگر به نام ‪ PROCESSES‬داریم‪ .‬در این صتتورت فایل ‪ sudoers‬را میتوان ومانند‬
‫زیر پیکربندی کرد‪:‬‬
‫‪## Storage‬‬
‫‪Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe,‬‬
‫‪/bin/mount, /bin/umount‬‬
‫‪## Processes‬‬
‫‪Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall‬‬
‫‪%sys ALL = STORAGE, PROCESSES‬‬
‫‪%disk ALL = STORAGE‬‬
‫‪%wheel ALL = (ALL) ALL‬‬
‫کاربرانی که عضو گروه ‪ sys‬وستند امکان اجرای ور دو دسته از دستورات را دارند و آنهایی که در‬
‫گروه ‪ disk‬وستند امکان اجرای دستورات ‪ STORAGE‬را دارند و آنوایی که در گروه ‪ whell‬وستند‬
‫امکان اجرای دستورات ‪ PROCESSES‬را دارند‪.‬‬

‫تعیین محدودیتها‬
‫به ک مک فا یل ‪ /etc/security/limits.conf‬میتوان مشتتتخص کرد که کاربران چه م قدار ‪،CPU‬‬
‫‪ RAM‬یا ف ضای دی سک میتوانند م صرف کنند‪ .‬ورچند تغییر دادن این فایل یکی از راهوای اعمال‬
‫تغییرات ا س ‪ ،‬راه دیگر ا ستفاده از د ستور ‪ ulimit‬ا س که محدودی وایی را برای موارد زیر در‬
‫نظر دارد‪:‬‬
‫‪core file‬‬
‫‪file‬‬
‫‪1۷1‬‬ ‫فصل ‪ 1۳‬امنی‬

‫‪process‬‬
‫‪memory‬‬
‫‪hard and soft limits‬‬
‫برای مشتاودهی وضتعی فعلی محدودی وا دستتور ‪ ulimit –a‬را بزنید‪ .‬یکی از دستتوراتی که در‬
‫اکثر اسکری وای ‪ bash‬دیده میشود دستور ‪ ulimit –c 0‬اس که مانع ایجاد فایل ‪ core‬میشود‪.‬‬
‫اگر در گروه کاریتان افراد برنامهنویس ح ضور دارند‪ ،‬بهتر ا س که ‪ ulimit –c unlimited‬بزنید یا‬
‫حدا قل بهصتتتورت ‪ soft( ulimit –Sc 0‬که کاربر میتوا ند آن را تغییر د ود) بزن ید که کاربران‬
‫برنامهنویس در صورتی که نیازمند دا شتن ‪ core file‬بودند بتوانند با د ستور ‪ulimit –c unlimited‬‬
‫این محدودی را برای کاربر خودشان بردارند‪.‬‬

‫دستور ‪ find‬از دیدگاه امنیت‬


‫فرمان زیر را بزنید‪:‬‬
‫‪# find / -perm +6000 –type f‬‬
‫ستتیستتتم (‪ )/‬با ستتطح ‪ permission‬باالتر از‬
‫در خروجی دستتتور باال تمام فایلوایی (‪ )-f‬که در کل‬
‫‪ 6000‬وستتتند را لیستت خواود شتتد‪ .‬توجه داشتتته باشتتید که ‪ permission‬وای چهار رقمی نوع‬
‫خا صی از ‪ permission‬وا و ستند که مخ صوص فایلوایی و ستند که با سطح د ستر سی باالتری‬
‫اجرا میشوند‪ .‬بنابراین بررسی این فایلوا در سیستم شما از دیدگاه امنیتی ضروری اس ‪.‬‬

‫پیکربندی ‪SSH‬‬

‫‪telnet‬‬ ‫در گذ شته ب سیاری از ارتباطات راه دور از طریق ‪ telnet‬انجام می شود‪ ،‬اما به این دلیل که‬
‫بستتیاری از ویژگیوای امنیتی مورد نیاز را نداشتت ‪ ،‬امروزه ‪ ssh‬جایگزین آن شتتده استت ‪ .‬از ‪ssh‬‬
‫میتوان برای انتقال فایل بین ستتروروا‪ ،‬تونلی برای عبور ارتباط ‪ ftp‬و ستتایر موارد استتتفاده کرد‪.‬‬
‫چندین ‪ ssh server‬در لینوکس وجود دارد که معروفترین آن ‪ OpenSSH‬اس ‪ OpenSSH .‬را وم‬
‫میتوان بهعنوان یک ‪ daemon‬مستقل یا تح ‪ xinetd‬اجرا کرد‪.‬‬
‫بعد از نصتتب ‪ sshd‬به خوبی کار میکند‪ ،‬ورچند در فایل ‪ /etc/ssh/sshd_config‬میتوان تنظیمات‬
‫مورد نظر را اعمال کرد‪ .‬یکی از مهمترین قستتم وای این فایل ‪ PermitRootLogin‬استت که در‬
‫صورتی که ‪ yes‬با شد کاربر ‪ root‬میتواند ‪ ssh‬کند و وارد سی ستم شود‪ .‬این مورد در برخی موارد‬
‫میتواند مشکل ساز شود‪.‬‬
‫بخش مهمی از امنی ‪ ssh‬مربوط به کلیدوا س ‪ .‬کلیدوا بر دو نوع عمومی و خ صو صی و ستند‪ .‬به‬
‫وسیلهی کلید عمومی میتوان دادهوا را تبدیل به دادهوای رمز شده کرد‪ .‬این دادهوای رمز شده را‬
‫با کلید خصوصی میتوان با سرع زیادی تبدیل به دادهوای اولیه کرد ولی بدون آن انجام این کار‬
‫بسیار بسیار زمان بر‪ ،‬و عمالً با کام یوتروای معمولی‪ ،‬در صورتی که کلید به اندازهی کافی طوالنی‬
‫جزوه آموزشی لینوکس مقدماتی )‪(LPIC-1‬‬ ‫‪1۷۲‬‬

‫باشتتتد‪ ،‬غیرممکن استتت ‪ .‬کلید وا در مستتتیر ‪ /etc/ssh‬قرار دارند و معموالً ‪ ssh_host_rsa_key‬و‬


‫‪ ssh_host_dsa_key‬برای کلیدوای خ صو صی‪ ،‬و برای کلیدوای عمومی به ومراه پ سوند‪ .pub‬نام‬
‫گاری شدهاند‪ .‬در برخی سیستموا ‪ ssh_host_rsa1_key‬و کلید عمومی آن نیز وجود دارد‪ .‬اگر شما‬
‫این کلیدوا را ندارید‪ ،‬میتوانید با ابزار ‪ ssh-keygen‬آنوا را تولید کنید‪:‬‬
‫‘ ‘ ‪# ssh-keygen -q –t rsal-f/etc/ssh/ssh_host_key –C ‘ ‘ –N‬‬
‫‘ ‘ ‪# ssh-keygen -q –t rsa-f/etc/ssh/ssh_host_rsa_key –C ‘ ‘ –N‬‬
‫‘ ‘ ‪# ssh-keygen -q –t dsa -f/etc/ssh/ssh_host_dsa_key –C ‘ ‘ –N‬‬
‫ور کدام از فرمانوای باال یک کلید عمومی و یک کلید خصوصی تولید خواوند کرد‪.‬‬
‫در صورتی که ‪ client‬ی با کلیدوای قبلی به سیستم شما وصل شده باشد‪ ،‬کلید عمومی مربوط در‬
‫م سری ‪ ~/.ssh/known_hosts‬آن کاربر ذخیره می شود‪ .‬در سی ستم کاربر میتوان بهطور ‪system-‬‬
‫‪ wide‬کل ید وا در فا یل ‪ ssh_known_hosts‬که معموالً در مستتتیر ‪ /etc‬یا ‪ /etc/ssh‬قرار دارد‪،‬‬
‫پیکربندی کرد‪ .‬برای این کار وم کافی ا س که در صورتی که قبالً آن کاربر به یک سرور و صل‬
‫شده باشد دستور زیر را بزند‪:‬‬
‫‪cp /home/ali/.ssh/known_hosts/etc/ssh/ssh_known_hosts‬‬
‫اگر شما کلیدوا را بر روی سرور تغییر دوید‪ ،‬کاربری که برای بار دوم یا چندم به سی ستم شما‬
‫وصتتل میشتتود پیغامی مبتنی بر تغییر کلید مشتتاوده خواود کرد و ارتباط برقرار نخواود شتتد تا‬
‫زمانی که وی کلیدوای قبلی را از روی ستتیستتتمش پاک کند و کلیدوای جدید شتتما را جایگزین‬
‫کند‪.‬‬

‫کنترل دسترسی ‪SSH‬‬

‫عالوه بر کنترل از طریق رمز عبور میتوان از طریق روشوای زیر دسترسی را کنترل کرد‪:‬‬
‫‪ :TCP Wrappers‬از طریق انجتتام پیکربنتتدی در فتتایتتلوتتای ‪ /etc/hosts.deny‬و ومچنین‬
‫‪ /etc/hosts.allow‬که پی شتر در مورد آنوا صحب کردهایم‪ .‬توجه دا شته با شید که این روش در‬
‫صتتورتی که ‪ sshd‬ستتیستتتم شتتما از آن پشتتتیبانی کند یا اینکه ‪ sshd‬تح ‪ inetd‬اجرا شتتود‪،‬‬
‫کاربس پذیر خواود بود‪.‬‬
‫‪ :Firewalls‬ومانند تمام سروروا شما میتوانید از طریق دیوارهی آتش دسترسیوا را محدود کنید‪.‬‬
‫‪ :/etc/nologin‬اگر این فایل بر روی سیستم وجود داشته باشد‪ SSH ،‬به آن اومی میدود‪ .‬وجود‬
‫این فایل به معنای آنس که تنها کاربر ‪ root‬امکان وارد شدن به سیستم را دارد‪ .‬بنابراین در صورتی‬
‫که این فایل وجود داشته باشد و در فایل ‪ /etc/ssh/sshd_config‬مقدار ‪ PermitRootLogin‬بهصورت‬
‫‪ no‬باشد‪ ،‬ویچ اتصال ‪ ssh‬ی برقرار نخواود شد‪.‬‬

‫کپی امن با ‪scp‬‬

‫ال میخواویم فایل ‪ main.cpp‬را‬


‫برای ک ی فایل از طریق ‪ SSH‬از دستور ‪ scp‬استفاده میکنیم‪ .‬مث ً‬
‫‪1۷۳‬‬ ‫فصل ‪ 1۳‬امنی‬

‫از دایرکتوری جاری به کام یوتر ‪ 10.20.1.12‬و دایرکتوری ‪ /home‬کاربری ‪ ali‬ک ی کنیم‪:‬‬
‫‪$ scp./main.cpp ali@10.20.1.12:/home/‬‬
‫نکته‪ :‬در سیستموا امروزی ‪ rcp‬معموالً لینکی به ‪ scp‬اس ‪.‬‬
‫تمرین‪ :‬فرض کنید که یک کاربر دفعات زیادی نیاز به انجام ‪ ssh‬به یک سیستم دارد‪ .‬بررسی کنید‬
‫که چگونه می توان ورود کاربر را اتوماتیک کرد که ور بار نیاز به وارد کردن رمز عبور نباشد‪.‬‬
‫‪~/.ssh/authorized_keys‬‬ ‫راهنمایی‪:‬‬
‫یکی دیگر از راه وای کاوش در تعداد دفعات وارد کردن رمز عبور برای ‪ SSH‬وای متعدد به یک‬
‫سی ستم ا ستفاده از ‪ ssh-agent‬ا س ‪ .‬یک بار که از ‪ ssh-agent‬ا ستفاده کردید و وارد یک ‪session‬‬
‫شدید تا زمانی که از آن خارج نشده باشید‪ ،‬نیاز به ورود دوبارهی رمز عبور نخواود بود‪ .‬ابتدا دستور‬
‫‪ ssh-agent /bin/bash‬را میزنیم ستت س دستتتور ‪ ssh-add ~/.ssh/id_rsa‬را وارد میکنیم که رمز‬
‫عبور را تنها یکبار در این مرحله میپرستتد‪ .‬حال ‪ ssh‬وایی که در این ‪ session‬انجام میدویم‪ ،‬رمز‬
‫عبور شما را به خاطر نگه دا شته و ور بار نخواود پر سید‪ .‬در نهای برای ‪ restart‬کردن سرور ‪ssh‬‬
‫میتوان از دستور زیر استفاده کرد‪:‬‬
‫‪# /etc/init.d/sshd restart‬‬

‫استفاده از ‪GPG‬‬

‫‪ ssh‬برای مرزگذاری انتقال فایلوا و فعالی وای ‪ interactive‬طراحی شده ا س ‪ .‬ورچند در برخی‬
‫از کاربردوا ممکن استتت بخواوید فایلی را رمز گذاری کنید و بعداً از طریق ‪ usb‬یا ایمیل آن را به‬
‫دوستتت تان بدو ید‪ .‬ابزار معمول برای رمز گذاری ایم یل ‪ Gnu Privacy Guard‬یا ‪ GPG‬یا و مان‬
‫‪ GnuGPG‬اس ‪ .‬برای تولید کلید دستور زیر را میزنیم‪:‬‬
‫‪# gpg --gen-key‬‬
‫بعد از اینکه کلید را تولید کردید با دستور زیر میتوانید کلید عمومی خود را استخراج کنید‪:‬‬
‫‪# gpg --export name > gpg.pub‬‬
‫حال اگر این کلید عمومی را به دوستتتان بدوید او میتواند به کمک دستتتور زیر اول آن را ‪import‬‬
‫کند‪:‬‬
‫‪# gpg –import filename‬‬
‫و س س از طریق دستور زیر دادهوا را رمزگذاری کند‪:‬‬
‫‪# gpg--out encrypted-file --recipent uid --armor--ecncrypt original-file‬‬
‫و بعد آن را از طریق ایمیل برای شما ار سال میکند‪ .‬ازآنجاکه تنها شما کلید خ صو صی را دارید‪،‬‬
‫ویچ کسی نمیتواند (در صورتی که کلید به اندازهی کافی طوالنی باشد) اطالعات شما را مشاوده‬
‫کند‪ .‬حال شما به کمک دستور زیر میتوانید فایل رمزگذاری شده را باز کنید‪:‬‬
‫‪# gpg--out decrypted-file --decrpyt encrypted-file‬‬
‫پیوست‪ :‬نصب ‪CentOS 6‬‬
‫بیشتتک بهواستتطهی تالشوای ‪ developer‬وای قدرتمند در جامعهی ‪ open source‬امروزه نصتتب‬
‫لینوکس به یکی از آسانترین کاروا تبدیلشده اس ‪ .‬مطالعهی سریع این قسم برای کاربرانی که‬
‫در این زمینه دانش و تجربه دارند‪ ،‬خالی از لطف نبوده نیستتت ‪ .‬به کاربرانی که تابه حال لینوکس‬
‫نصب نکردهاند توصیهی میکنیم که این قسم را بهدق مطالعه نمایند‪ .‬ومچنین توصیه میکنیم‬
‫که دسترسی به اینترن داشته باشید‪ ،‬زیرا که پاسخ بسیاری از سؤاالتتان را بهراحتی با جستجو در‬
‫اینترن و ومچنین استفاده از ‪ Wikipedia‬خواوید یاف ‪.‬‬
‫از میان توزیعوای لینوکس ‪ CentOS‬توزیعی مبتنی بر ‪ ،RHEL‬ولی بدون نیاز به ‪ license‬و رایگان‬
‫ا س ‪ .‬در حال حا ضر (ونگام نو شتن کتاب) ‪ CentOS 6‬آخرین ن سخه از این توزیع ا س که در‬
‫تاریخ ‪ 10 July 2011‬توزیع شده اس ‪ ،‬بهروزرسانیوای کامل آن تا تیرماه ‪ 1۳۹۵‬انجام خواود شد‪.‬‬
‫البته تا چند وق دیگر نستتخهی ‪ ۷‬آن در دستتترس خواود بود‪ .‬توجه داشتتته باشتتید که نصتتب‬
‫‪ CentOS‬واقعاً دشوار نیس ‪.‬‬
‫اگر اولین بار است که ‪...‬‬
‫‪vmware‬‬ ‫اگر اولین بار اس که لینوکس نصب میکنید توصیهی میکنیم که از ابزاروایی ومچون‬
‫‪ workstation‬یا ‪ virtual box‬برای نصتتب آن استتتفاده کنید‪ .‬در این حال در صتتورت اشتتتباه در‬
‫‪ partion‬بندی فایلوای مهمتان را از دس نخواوید داد‪.‬‬
‫اتصال اینترنت‬
‫در صورتیکه ات صال اینترن شما برقرار با شد‪ ،‬آخرین بهروزر سانیوا را میتوانید دریاف کنید‪ .‬اگر‬
‫لپ تاپ دار ید و لینوکس را در دا خل ‪ vmware workstation‬یا ‪ virutalbox‬نصتتتب میکن ید‪،‬‬
‫بهاحتمالزیاد سیستم شما با ‪ wifi‬به اینترن متصل اس که مشکلی نخواوید داش ‪ ،‬چون ‪wifi‬‬
‫لینوکس قبالً بهخوبی برقرارشده اس ‪ .‬درصورتیکه لینوکس را بر روی خود سیستم و بدون ابزاری‬
‫ومچون ‪ vmware workstation‬ن صب میکنید‪ ،‬تو صیه میکنیم که از ات صال ‪ LAN‬ا ستفاده کنید‬
‫تا ارتباط اینترن پایداری داشته باشید‪.‬‬
‫‪1۷۵‬‬ ‫‪ :‬نصب ‪CentOS 6‬‬ ‫پیوس‬

‫نصب در ‪vmware workstation‬‬


‫برای نصب لینوکس در داخل ‪ vmware workstation‬قدموای زیر را دنبال کنید‪:‬‬
‫‪ .1‬فایل ‪ iso‬توزیع ‪ CentS 6‬را تهیه کنید‪ .‬این فایل از طریق سای ‪ centos.org‬در دسترس‬
‫اس ‪.‬‬
‫‪ .۲‬فایل ‪ setup‬مربوط به ‪ vmware workstation‬را تهیه کنید و آن را بر روی سیستم ویندوز‬
‫خود نصب کنید‪ .‬ممکن اس شما سیستمعامل ‪ Mac‬داشته باشید که در این صورت‬
‫ابزاروای مشابه زیادی وجود دارند‪ ،‬کافی اس در اینترن یک جستجوی مختصر (حتی‬
‫به زبان فارسی) بکنید‪ .‬درصورتیکه سیستمعامل کام یوتر شما ‪ Windows‬یا ‪ Mac‬نیس ‪،‬‬
‫شاید به این معناس که شما بهاندازهی کافی دانش و تجربه دارید و نیاز چندانی به‬
‫مطالعه این بخش نخواوید داش ‪.‬‬
‫‪ .۳‬بعد از نصب ‪ vmware workstation‬آن را اجرا کنید و از منوی ‪ file‬گزینهی ‪new virtual‬‬
‫‪ machine‬را بزنید‪ .‬در قسمتی از شما میپرسد که سیستمعامل را از چه طریقی میخواوید‬
‫نصب کنید‪ ،‬گزینهی فایل ‪ iso‬را انتخاب کنید و آدرس فایل را به آن بدوید‪ .‬تنظیماتی را‬
‫که مناسب سیستمتان اس انجام دوید‪ ،‬و کار را دنبال کنید‪.‬‬
‫‪ .۴‬با صفحهی آبیرنگی مواجه خواوید شد که مربوط به نصب ‪ CentOS‬اس و گزینهوای‬
‫مختلفی دارد‪ .‬گزینهی ‪ Install‬را انتخاب کنید (معموالً اولین گزینه که بهصورت‬
‫پیشفرض انتخابشده اس )‪.‬‬
‫‪ .۵‬در قدموای بعدی تنظیمات را مطابق با آنچه برای شما و سیستم شما مناسب اس ادامه‬
‫دوید‪ .‬بیشک بسیاری از لینوکس کاران در زمینهی انگلیسی خبره وستند و کافی اس‬
‫با دق مراحل را مطالعه نموده و دنبال کنند‪.‬‬
‫‪ ‬نکته‪ :‬ازآنجاکه عملیات نصب را داخل ‪ vmware‬انجام میدوید‪ ،‬بیهوده خود را نگران‬
‫نکنید‪ ،‬چون در صورت اشتباه در نصب آسیبی به سیستم شما وارد نخواود شد‪.‬‬
‫درصورتیکه در نصب سیستم اشتباه کردید‪ ،‬میتوانید در سیستمعامل ‪ host‬تان (که‬
‫بهاحتمالزیاد ‪ Windows‬اس )‪ ،‬فایلوایی را که توسط ‪ vmware workstation‬برای این‬
‫ماشین مجازی ساخته شده بود را پاککنید‪ .‬توجه کنید که پاک شدن نام ماشینمجازی‬
‫از منوی سم چپ در ‪ vmware workstation‬لزوماً به معنای پاک شدن فایلوای آن از‬
‫‪ hard disk‬نیس ‪ .‬لطفاً دق کنید تا فضای واردتان ودر نرود‪.‬‬
‫‪ ‬نکته‪ :‬توصیه میکنیم که نصب ‪ CentOS‬را چند بار در چند ماشین مجازی مختلف انجام‬
‫دوید‪ ،‬تا به خوبی به مراحل کار مسلط شوید‪.‬‬

You might also like