آشنایی با دستورات لینوکس گام نخست و بسیار حیاتی در مسیر تسلط بر این سیستم عامل محسوب میشود. لینوکس در مقایسه با ویندوز، انعطافپذیری فوقالعادهای در استفاده از دستورات جهت مدیریت سرور ارائه میدهد. به گونهای که با تسلط بر این دستورات، امکان مدیریت کاملاً حرفهای یک سرور لینوکسی از راه دور و بدون نیاز به محیط گرافیکی فراهم میگردد، امری که برای سرورهای ویندوزی بسیار دشوار یا غیرممکن است.
در این مقاله تلاش خواهیم کرد تا دستورات لینوکس را به صورت منظم و در بازههای زمانی مشخص با دستورات جدید بهروزرسانی کنیم. به نحوی که در پایان آموزش، کاربر نیازی به جستجوی دستورات خاص در موتورهای جستجو یا سایتهای دیگر نداشته باشد. لذا به طور مرتب به این صفحه مراجعه فرمایید.
آموزش دستورات لینوکس
در لینوکس همهچیز به یک سری فایل و دایرکتوری تقسیمبندی میشود ساختار دایرکتوریها (همان فولدرها در ویندوز) در لینوکس همانطور که در عکس زیر مشاهده میکنید به صورت یک درخت وارونه میباشد.
هر دایرکتوری، خود شامل یک سری دایرکتوری و فایلهای مهم سیستمی دیگر میباشد که وظیفههای اساسی و مهم لینوکس را انجام میدهند.
شما با دانستن دستورات لینوکس به طور کامل خواهید توانست عملیات مدیریتی خود را بر روی این بخشها به طور تخصصی انجام داده و یا سرویسهای خاصی را بر روی لینوکس نصب و راهاندازی کنید.
قدم اول
یکی از کارهایی که ابتدا باید در لینوکس با آن آشنا شوید نحوهی باز کردن فایلها میباشد، شما در ویندوز با رفتن روی آیتم موردنظر خود و دابل کلیک کردن، فایل مربوطه را باز میکردید، در لینوکس این عمل با دستور cat قابل انجام میباشد بدین شکل که ابتدا دستور cat را نوشته و سپس به دنبال آن مسیر فایل مربوطه را وارد میکنیم.
cat /etc/passwd cat /proc/meminfo
چنانچه بخواهید اطلاعات سرور لینوکسی خود را به صورت دقیق به دست آورید برای شروع کار و با دانستن همین دستور فایلهای زیر را بررسی کنید.
cat /proc/cpuinfo cat /proc/meminfo cat /proc/swaps
دستور اول اطلاعات سی پیو، تعداد هستهها – دستور دوم اطلاعات رم و دستور سوم اطلاعاتی در رابطه با مقادیر swap فایل به شما نمایش خواهد داد.
چنانچه بخواهید تاریخ و زمان تنظیم شده بر روی سرور خود را مشاهده کنید با دستور date خروجی تاریخ و زمان قابل دریافت میباشد.
date
برای نمایش تمامی اسلات های متصل شده به سیستم هم دستور زیر را میتوانید استفاده کنید (صرفاً جهت یادآوری: اسلات ها همانند سختافزارهای نصب شونده به صورت کارت هستند که در جایگاههای خاصی بر روی سرور تعبیه میشوند مثل کارت گرافیک در کیس سیستمهای شخصی)
lspci
دستور زیر هم برای نمایش تعداد سختافزارهای نوع usb متصل شده به لینوکس کاربرد دارد، مانند زمانی که شما در my computer سیستمعامل ویندوزی تعداد usb ها متصل شده به سیستم را بررسی میکنید.
lsusb
چنانچه بخواهید اطلاعاتی راجب نوع توزیع و ورژن و اطلاعات کرنل یا هسته لینوکس دریافت کنید میتوانید از دستور زیر استفاده کنید.
uname –a
برای تنظیم ساعت بر روی بایوس سرور هم از دستور زیر میتوانید استفاده کنید.
clock –w
نکته مهم
در لینوکس برای آشنایی بیشتر با هر دستور و همچنین نحوه استفاده از سوییچها از کامند man قبل از دستور استفاده کنید و راهنمای استفاده را دقیقاً مطالعه کنید تا اطلاعات بسیار کاملی را در رابطه با دستور کسب کنید.
برای مثال ما میخواهیم راهنمای دستور cat را دریافت کنیم به صورت زیر در محیط command line دستور را وارد میکنیم.
man cat
بخش دوم آموزش دستورات لینوکس
بخش دوم آموزش دستورات لینوکس رو شروع میکنیم، در این قسمت میخواهیم یک سری دستورات مدیریت سختافزار رو براتون شرح بدیم که توسط آنها میتوانید وضعیت روشن، خاموش و ریبوت سرور رو تحت کنترل داشته باشید.
اولین دستور init هستش که توسط آن میتوانید مد کارکرد سرور رو تغییر بدید، ۶ مد برای این دستور تعریف شده که ۰ برای بردن سیستم به حالت shutdown مد ۱ حالت single user هستش که معمولاً برای ریکاوری استفاده میشه، مد ۲ حالت multi user مد ۳ حالت multi user with networking مد ۴ بلا استفاده و تعریف نشده، مد ۵ حالت گرافیکی سیستم که لینوکس معمولاً در این حالت کار میکنه و با GUI بالا میاد و مد ۶ هم بردن لینوکس به حالت ریبوت هستش مانند زمانی که شما دستور reboot رو وارد میکنید.
init 0 init 1 init 2 init 3 init 5 init 6
دستور بعدی logout هستش که توسط این دستور مانند زمانی که به صورت گرافیکی از ویندوز logout میکنید عمل میکنه
logout
دستور reboot هم که معلومه دقیقاً مانند ریستارت کردن در ویندوز عمل می کنه
reboot
دستور shutdown هم که سیستم رو خاموش میکنه ولی اگر با سوییچهای دیگه به کار بره میتونه عملکرد متفاوتی داشته باشه برای مثال دستور زیر سیستم رو ریبوت میکنه
shutdown -r now
خب، بیایید آموزش دستورات لینوکس را به سمت مدیریت و کنترل پوشهها (دایرکتوریها) در لینوکس هدایت کنیم تا ببینیم چگونه میتوانیم با آنها کار کنیم.
یکی از مهمترین و پرکاربردترین دستورات، دستور “cd” است. این دستور مخفف عبارت “change directory” به معنای تغییر پوشه است. زمانی که بخواهید در لینوکس از یک مسیر به پوشه دیگری بروید، باید از این دستور استفاده کنید.
در دستور زیر، هر جایی از لینوکس که باشید، با این دستور وارد پوشه خانگی (home) میشوید. شاید برایتان سوال باشد که این پوشه چیست؟ باید بگویم که این پوشه، اطلاعات مربوط به هر کاربر را در خود نگهداری میکند.
cd /home
در لینوکس برای رفتن به یک شاخه قبلتر مانند زدن دکمه back در ویندوز جلوی دستور cd ما .. میزاریم تا یک دایرکتوری به عقبتر برگردیم
cd ..
با زدن دستور زیر در محیط command line لینوکس نیز وارد home یوزر خودتان میشوید، چون دستورات رو به عنوان یوزر root وارد میکنید دایرکتوری home شما root/ خواهد بود.
cd ~
با دستور cp هم در لینوکس میتوانید فایل یا دایرکتوری رو کپی کنید، مانند راست کلیک و copy کردن یک آیتم و سپس paste در ویندوز عمل میکند.
cp 1.txt /home/1.txt
دستور بالا که کاملاً مشخصه توسط دستور زیر هم یک دایرکتوری رو عیناً با محتویات داخلش کپی میکنیم یک جای دیگه
cp /music /music2
توسط دستور ls میتوانید یک خروجی از دایرکتوری که در حال حاضر در آن هستید بگیرید و هر فایل و دایرکتوری موجود در این دایرکتوری را مشاهده کنید.
به دلیل اینکه در لینوکس سرور، مانند ویندوز گرافیک معنا ندارد و همه کارها به صورت دستوری است. تا دستور ls وارد نشود هیچ خروجی شما نخواهید داشت و نمیدانید در یک دایرکتوری چه محتویاتی وجود دارد.
دستور ls دارای سوییچهای گوناگونی است که با زدن دستور man همانطور که توضیح دادم میتوانید از آنها استفاده کنید ولی دستور ls با سوییچهای زیر به طور کامل جواب تمامی نیازهای شما را خواهد داد
ls –lha ls –lthra
اگر بخواهید در لینوکس یک دایرکتوری بسازید باید چیکار کنید؟ باید از دستور mkdir مخفف make directory استفاده کنید و سپس نام دایرکتوری را بدید در مثال زیر ما یک دایرکتوری با نام modireserver میسازیم.
mkdir modireserver
اگر بخواهید یک فایل یا یک دایرکتوری را کلاً در لینوکس جابهجا کنید مانند move در ویندوز از دستور mv استفاده میکنیم در مثال زیر من دایرکتوری modireserver رو منتقل میکنم به home به طور کامل
mv modireserver /home
اگر در لینوکس بخواهید ببینید در حال حاضر در چه دایرکتوری هستید از دستور pwd استفاده میکنیم با زدن این دستور لینوکس به شما دایرکتوری فعلی که در آن هستید رو به صورت absolute path نمایش خواهد داد.
pwd
توسط دستور rm میتوانید فایل و دایرکتوری را از روی سرور حذف کنید، در استفاده از این دستور به شدت مراقب باشید چون در صورت اشتباه فایلهای سیستمی لینوکس رو پاک کنید دیگه هیچ کار نمیشه کرد و کلیهی اطلاعات شما از بین خواهد رفت .
rm modireserver
زمانی که دستور بالا را وارد کنید از شما سؤال خواهد شد که آیا مطمئن به حذف فایل هستید یا خیر و بعد تأیید این عمل انجام میشود ولی اگر بخواهید به صورت کامل و بدون هیچ سؤالی یک دایرکتوری را با محتویات داخل آن پاک کنید از سوییچهای این دستور به شکل زیر استفاده کنید.
rm –rf modireserver
اگر بخواهید در لینوکس یک فایل خالی با هر پسوندی بسازید هم از دستور touch میتوانید استفاده کنید البته در جلوتر خواهم گفت که با کمک ادیتورها هم میتوانید این کار رو انجام بدید.
touch test.txt
هرگاه بخواهید در لینوکس یک خروجی به شکل درختی از دایرکتوریها بگیرید دستور زیر یک نمای کلی از تمامی دایرکتوریها و زیر دایرکتوریهای آن به شما خواهد داد، این دستور کاربرد مدیریتی چندانی ندارد ولی برای کامل کردن آموزش دستورات لینوکس و جامع شدن این بخش باید تمامی دستورها رو بگیم خدمتتون
tree
جلسه سوم آموزش دستورات لینوکس
برای سرچ در لینوکس هم دستورات قدرتمندی وجود دارد که شما توسط آنها میتوانید آیتمهای متنوع از جمله فایل، یوزر، دایرکتوری و… را جستجو کنید. قدرتمندترین دستور موجود find میباشد که در ادامه به نحوه کاربرد آن خواهیم پرداخت.
برای پیدا کردن یک فایل در لینوکس از دستور find به همراه سوییچ name- به شکل زیر استفاده میکنیم.
find / -name filename
به جای filename نام فایل موردنظر خود را وارد کنید.
اگر به دنبال فایلهایی با پسوند خاصی میباشید میتوانید به صورت زیر از دستور find استفاده کنید. توسط دستور زیر تمامی فایلهایی که پسوند آنها txt. میباشد برای شما نمایش داده خواهند شد.
find / -name *.txt
البته اینو هم مدنظر داشته باشید اگر مسیر خاصی به غیر از شاخه / را بخواهید جستجو کنید میتوانید مسیر خود را جایگزین آن کنید.
و یا اگر به دنبال فایلی میگردید که آخرین بار ۳۰ روز قبل استفاده شده و تا زمان کنونی به آن دسترسی گرفته نشده باشد از دستور زیر میتوانید استفاده کنید
find / -type f –atime 30
در دستور بالا با سوییچ type- فقط به دنبال فایلها هستیم و یک جور فیلتر ایجاد کردیم و توسط atime- نیز تمامی فایلهای مسیر / که آخرین بار ۳۰ روز گذشته به آنها دسترسی گرفته شده در خروجی نمایش داده خواهند شد.
دستور بعدی که از آن نیز برای جستجو استفاده میکنیم دستور locate هستش مزیت این دستور نسبت به find سرعت بیشتر آن در پیدا سرچ هستش ولی حتماً باید قبل استفاده دستور updated را بزنید تا دیتابیسی که از آن برای جستجو استفاده میکند آپدیت شود.
locate *.txt
برای نمایش مسیر یک فایل باینری در لینوکس نیز میتوانید از دستور زیر استفاده کنید.
whereis ls
توسط این دستور ما در واقع به دنبال مسیر فایل باینری ls هستیم که اگر یادتون باشه ls خودش دستور لینوکسی هستش
دستور نهایی هم which هستش که کاربردی مانند whereis دارد
which ls
جلسه چهارم آموزش دستورات Linux
دستور mount نیز برای مستقر کردن یک دایرکتوری و یا هارد دیسک به مسیر دیگری در لینوکس مورد استفاده میباشد. برای مثال شما زمانی که یک usb را به لینوکس خود متصل میکنید این سختافزار به صورت یک پارتیشن توسط سیستم شناسایی خواهد شد و شما برای آنکه بتوانید از اطلاعات درون این دیسک در یک دایرکتوری مشخص شده توسط خودتان استفاده کنید میتوانید یک دایرکتوری ابتدا ایجاد کرده و سپس usb را به آن mount کنید.
mount /dev/usb /root/myusb
برای خارج کردن پارتیشن از حالت استقرار هم از دستور زیر استفاده میکنیم.
umount /dev/usb
شما به عنوان مدیر سرور نیاز دارید تا مرتباً مقدار فضای استفاده شده و یا فضای خالی هارد سرور را بررسی کنید و در صورت لزوم مناسبترین تمهیدات رو بی اندیشید توسط دستور df میتوانید تمامی پارتیشنهای مانت شده را به همراه مقدار فضای خالی آنها مشاهده نمایید.
df –h
چنانچه بخواهید مقدار فضای استفاده شده توسط یک دایرکتوری خاص را بررسی کنید میتوانید از دستور زیر استفاده کنید.
du –sh dirname
جای dirname نام دایرکتوری موردنظر خودتان را وارد نمایید.
در این بخش میرسیم به دستورات مدیریت کاربران که تماماً توسط مدیر سرور و با دسترسی root انجام میشه، مدیر میتونه توسط این دستورها در سرورهای لینوکسی یوزری ایجاد کرده، حذف و یا دسترسیهای آنها را محدود نماید.
توسط دستور زیر بر روی یک یوزر محدودیت زمانی اعمال میشود
chage -E 2005-12-31 user
به جای user نام کاربری موردنظر خود را وارد نمایید و طبق همیشه برای بررسی سوییچها میتوانید از دستور man در ابتدای دستور استفاده کنید.
در بسیاری از مواقع شما باید یک گروه برای دستهای کاربران خاص ایجاد کرده و به این گروه دسترسیهای مشخصی را اعمال کنید و چنانچه در آینده بخواهید یوزر جدیدی با دسترسیهای مشابه ایجاد کنید کافی است یوزر را به این گروه الحاق نمایید و کار شما بسیار راحتتر خواهد شد.
با دستور groupadd groupname میتوانید این کار را انجام دهید فقط کافی است نام گروه کاربری موردنظر خود را جایگزین groupname کنید.
در هر زمان اگر بخواهید یک گروه را حذف نمایید دستور مشخصی بدین منظور در لینوکس برای آن در نظر گرفته شده است. توسط دستور groupdel به راحتی میتوانید اقدام به این کار کنید.
groupdel groupname
گاهی مواقع هم نیاز هستش تا اطلاعات یک گروه کاربری مانند نام آن را تغییر دهید برای این منظور دستور groupmod تعیین شده است که با فرمت زیر میتوانید از آن بهرهمند شوید.
groupmod -n vpsroyal modireserver
در دستور بالا ما نام گروه را از vpsroyal به modireserver تغییر دادیم.
دستور پرکاربرد بعدی دستور passwd میباشد که توسط آن میتوانید پسورد هر یوزر را تغییر بدید اگر با دسترسی روت وارد ناحیه ssh سرور شده باشید و این دستور را تنها وارد کنید در واقع دارید پسورد یوزر root رو تغییر میدید ولی چنانچه جلوی دستور نام کاربری را وارد کنید پسورد مشخصاً یوزر مربوطه تغییر خواهد کرد.
دستور مهم آخر نیز دستور اضافه کردن یوزر به سرور هستش که من کاملترین سوییچهای انو هم استفاده کرده که در ادامه براتون هرکدومو شرح میدم
useradd -c “comment here” -g adm -d /home/user -s /bin/bash user
توسط سوییچ c برای یوزر یک کامنت تعریف میکنیم که البته وجود اون ضروری نیستش، توسط سوییچ g یوزر رو به گروه مربوطه مرتبط میکنیم و با d خانه یوزر و محل قرارگیری فایلهای هر یوزر رو مشخص میکنیم و توسط d نیز دسترسی کاربر به شل رو معلوم میکنیم.
حالا میخواهیم در این بخش به دستورات مدیریت فایلها بپردازیم، برای تغییر گروه یک فایل از دستور زیر میتوانیم استفاده کنیم.
chgrp adm file
توسط دستور بالا file را به گروه کاربری adm تغییر میدهیم.
دستور بسیار مهم و کاربردی بعدی دستور chmod میباشد توسط این دستور میتوان پرمیژن هر فایل و یا دایرکتوری را تغییر داد. سه سمبلی که برای این دستور حتماً باید آنها را یادبگیرید r به معنی read و عدد ۴، w به معنی write و عدد ۲ و x به معنی execute و عدد ۱ میباشد.
زمانی که بخواهید به یک فایل فقط دسترسی خواندن داشته باشید با توجه به ترکیب بالا خروجی دستور می شود –r و عدد مربوطه ۴۰۰ خواهد شد یعنی chmod 400 file و بدین شکل میتوانید ترکیبهای دیگری برای این دستور نیز بسازید.
دستور بعدی chown میباشد مخفف change owner یا تغییر مالک، هر فایل و یا دایرکتوری به یک مالک و یک گروه اختصاص دارد شما توسط دستور مربوطه میتوانید با فرمت زیر این دو مورد رو تغییر بدید
chown root:root file
چنانچه بخواهید به صورت تو در تو تمامی فایلها و یا دایرکتوریهای موجود در دایرکتوری موردنظر خود را تغییر مالک دهید از سوییچ R- به صورت زیر استفاده کنید.
chown –R root:root directory
فشردهسازی و خارج کردن فایلها از حالت فشرده :
برای اکسترکت فایلهای فشرده شده با پسوند bz2. از دستور bunzip2 به شکل زیر میتوانید استفاده کنید.
bunzip2 file.bz2
برای فشرده کردن یک فایل با پسوند bzip2 از دستور زیر میتوانید استفاده کنید.
bzip2 file
برای خارج کردن فایل از حالت فشرده با پسوند gz. از دستور زیر میتوانید استفاده کنید.
gunzip file.gz
برای فشرده کردن فایل با پسوند gz از دستور زیر استفاده میشود.
gzip file
برای فشرده کردن یک فایل با حداکثر میزان فشردگی میتوانید از دستور زیر استفاده کنید.
gzip -9 file
برای فشرده کردن یک فایل با پسوند rar نیز میتوانید به فرمت زیر دستور را وارد کنید.
rar a file.rar file
برای خارج کردن یک فایل از حالت فشرده نیز میتوانید به شکل زیر دستور را وارد نمایید.
rar x file.rar
ایجاد یک فایل با فرمت tar به صورت غیر فشرده
tar -cvf archive.tar file
برای خارج کردن یک فایل از حالت فشرده tar.gz. میتوانید از دستور زیر استفاده کنید.
tar -xvfz archive.tar.gz
برای خارج کردن یک فایل از حالت فشرده با پسوند zip از دستور زیر میتوانید استفاده کنید.
unzip file.zip
جلسه پنجم مدیریت بستههای RPM
در لینوکسهای مبتنی بر توزیع ردهت بیس برای نصب بستههای نرمافزاری از پکیجهای RPM استفاده میشود. بدین صورت که ابتدا شما باید فایل مربوط به نرمافزار خود را از اینترنت دانلود کرده و سپس توسط دستور زیر اقدام به نصب آن کنید.
rpm -ivh package
به جای package نام نرمافزار خود را به صورت کامل وارد کنید.
چنانچه بخواهید یک پکیج را بدون در نظر گرفتن پیشنیازهای آن نصب کنید میتوانید از دستور RPM به صورت زیر استفاده کنید.
rpm -ivh -nodeeps package
اگر بر روی لینوکس خود یک پکیج را از قبل نصب دارید و میخواهید آن را آپدیت کنید از دستور زیر میتوانید استفاده کنید.
rpm -U package
برای حذف یک بسته میتوانید از دستور زیر استفاده کنید.
rpm -e package
از دستور زیر نیز میتوانید برای نمایش تمامی پکیجهای نصب شده بر روی سیستم استفاده کنید.
rpm –qa
حال اگر بخواهیم یک بسته را درون تمامی پکیجهای نصب شده بر روی سیستم جستجو کنیم میتوانیم از دستور زیر استفاده کنیم.
rpm -qa | grep httpd
من در این مثال به دنبال پکیج httpd بودم
توسط دستور زیر میتوانیم صحت سالم بودن تمامی بستههای نصب شده بر روی سیستم خود را بررسی کنیم.
rpm -qa gpg-pubkey
با دستور زیر هم میتوانیم یک پکیج را از حالت فشرده خارج کنید.
rpm2cpio package | cpio -id
جلسه ششم ابزار yum و نحوه استفاده از آن
در این جلسه از آموزش دستورات لینوکس، نحوه بررسی و نصب دقیق بستهها (پکیجها) بر روی توزیعهای مبتنی بر ردهت را بررسی خواهیم کرد. این جلسه یکی از پرکاربردترین بخشهای دستورات لینوکس در سیستمعامل CentOS به شمار میرود.
در توزیعهای مبتنی بر ردهت، مانند CentOS، یک ابزار قدرتمند به نام “yum” برای نصب و مدیریت بستهها وجود دارد. این ابزار همانند “apt” در توزیعهای مبتنی بر دبیان عمل میکند. شما میتوانید از طریق این ابزار، بستهای را جستجو، نصب و حتی حذف کنید.
با استفاده از دستور زیر از سری دستورات لینوکس CentOS، میتوانید یک بسته را به صورت خودکار نصب کنید. این دستور به این شکل عمل میکند که ابتدا به مخازن CentOS مراجعه میکند و در صورت وجود نام بسته در مخزن، آن را بر روی لینوکس شما نصب و راهاندازی مینماید.
yum -y install packagename
اگر پکیج در مخزن اصلی وجود نداشته باشد یا باید به صورت دستی آن را نصب کنید و یا در صورت وجود مخزن حاوی پکیج آن را بر روی لینوکس خود فعال کنید. برای مثال بسیاری از پکیجهای مهم توسط مخزن epel بر روی لینوکس قابل نصب هستند که شما میتوانید آن را با دستور زیر ابتدا بر روی لینوکس خود فعال کنید و بعد توسط دستور بالا آن را نصب کنید.
yum install epel-release
توسط دستور زیر تمامی پکیجهایی که بر روی لینوکس شما نصب هستند به آخرین ورژن آپدیت میشوند، استفاده از دستور زیر برای یک مدیر سرور به صورت دورهای جز واجبات کار محسوب میشود.
yum -y update
سوییچ y- باعث میشود بعد از بررسی پکیجها هنگام آپدیت جهت نصب از شما دوباره اجازه بازنویسی پرسیده نشود و تمامی کارها اتوماتیک و بدون وقفه انجام شوند.
برای حذف یک پکیج بعد از اینکه نام آن را یافتید باید توسط دستور زیر آن را حذف کنید. البته باید این را مدنظر داشته باشید فقط پکیجهایی توسط این دستور حذف میشوند که توسط دستور yum قبلاً نصب شده باشند.
yum remove packagename
در صورتی که به دنبال نصب یک بسته خاص هستید اما نام دقیق آن را نمیدانید و هنگام استفاده از دستور نصب با خطا مواجه میشوید، میتوانید پس از دستور “yum search” بخشی از نام بسته را وارد کنید تا نام دقیق آن در خروجی برای شما نمایش داده شود.
اگر در گذشته هنگام نصب یک بسته با خطا روبرو شده باشید، احتمال دارد در آینده هنگام نصب بستههای جدید، همان خطای قبلی برای شما رخ دهد. در این موارد، باید با استفاده از دستور “yum clean all” تمامی حافظه نهان (cache) موجود بر روی لینوکس خود را پاک کرده و سپس دوباره برای نصب اقدام نمایید.
جلسه هفتم مدیریت نصب پکیجها در توزیعهای دبیان بیس
توسط دستور dpkg میتوان در توزیعهای دبیان بیس مانند دبیان و اوبونتو به مدیریت بستههای نصبی پرداخت، توسط دستور زیر میتوان یک پکیج را بر روی سیستم نصب و یا آپدیت نمود.
dpkg –i package.deb
مشخصاً باید به جای package.deb نام پکیجی که قصد نصب و یا آپدیت آن را دارید باید قرار دهید.
با استفاده از همین دستور و تنها با تغییر سوییچ به r- میتوان یک پکیج را از روی سیستم حذف نمود، فرمت استفاده از این دستور به شکل زیر میباشد.
dpkg –r package
با استفاده از سوییچ l- میتوان لیستی از تمام پکیجهای نصب شده بر روی سیستم را در خروجی نمایش داد.
dpkg –l
چنانچه بخواهید یک پکیج نصب شده بر روی سیستم را درون این لیست جستجو کنید کافی است از دستور زیر استفاده کنید.
dpkg -l | grep httpd
توسط دستور بالا خروجی لیست شده را به ورودی دستور grep داده و میتوانیم هر پکیجی را جستجو کنیم که در این مثال ما به دنبال وب سرور apache بودیم.
اگر بر روی سرور به یک فایلی برخورد کردید و خواستید که بدانید این فایل دقیقاً مربوط به کدام پکیج نصبی بوده است میتوانید از دستور زیر استفاده کنید.
dpkg -S /bin/ping
جلسه هشتم مشاهده محتویات فایل
در لینوکس، شما به عنوان مدیر سرور، همواره نیاز خواهید داشت تا محتویات درون فایلها را بررسی کنید، آنها را بخوانید یا ویرایش نمایید. لینوکس انعطافپذیری بسیار زیادی برای خواندن فایلها با دستورات متنوع ارائه میدهد. یکی از معروفترین این دستورات، “cat” میباشد.
دستور “cat” یکی از دستورات لینوکس CentOS است که به شما امکان میدهد هر فایلی را با هر پسوندی باز کرده و محتویات آن را بخوانید. کاربرد دیگر دستور “cat” ادغام محتویات چندین فایل به صورت همزمان و نمایش خروجی آنها است.
cat file
توسط دستور بالا تمامی محتویات داخل file در خروجی نمایش داده خواهد شد.
دستور بعدی head میباشد همانطور که از معنی آن هم مشخص است این دستور برای نماش بخش ابتدای یک فایل به کار میرود، برای مثال توسط دستور زیر ما فقط دو خط ابتدایی فایل را در خروجی نمایش میدهیم.
head -2 file
حالا اگر بخواهیم چند خط انتهایی فایل را نمایش دهیم باید از دستور tail استفاده کنید، قرینه دستور بالا را با less اجرا میکنیم و دو خط انتهایی فایل را مشاهده میکنیم.
tail -2 file
دستور less و more نیز قابلیت خواندن یک فایل را فراهم کرده با این تفاوت که more به صورت درصدی و جلو رونده بوده و less قابلیت رو به عقب و خواندن خط به خط را فراهم میکند و نسبت به more پرکاربردتر است.
جلسه نهم ادیت و کار با فایل متنی
اگر بخواهیم یک ستون خاصی از خروجی را جدا کنیم باید از دستور awk استفاده کنید، این دستور به شدت پرکاربرد بوده و برای شخصی سازی خروجی مورد استفاده میباشد.
echo hello world | awk '{print $1}'
توسط دستور بالا ما خروجی حاصل از دستور echo را به صورت شخصی سازی شده درآورده و فقط ستور اول آن را جدا میکنیم، یعنی کلمه hello فقط در خروجی نمایش داده خواهد شد.
اگر بخواهیم دو فایل را با هم مقایسه کنیم دستوری منحصراً برای این کار در لینوکس تعبیه شده است که میتوان از آن استفاده کرد توسط دستور زیر ما دو فایل test1 و test2 را با هم مقایسه میکنیم.
diff test1 test2
دستور فوقالعاده پرکاربرد و بینظیر بعدی grep هستش که به کمک آن میتوانید درون محتویات یک فایل جستجو کنید، برای مثال شما میخواهید درون یک دایرکتوری خاص هر فایلی که دورن آن عبارت modireserver آمده بود را پیدا کنید به راحتی توسط دستور grep و به شکل زیر میتوانید این کار را انجام دهید.
grep modireserver /var/log/messages
البته در دستور بالا ما فقط درون فایل لاگ messages به دنبال عبارت modireserver بودیم شما میتوانید از این دستور به شکلهای بهینهتری استفاده کنید و سوییچهای مهم آن را باهم ترکیب کنید.
دستور بعدی sed هستش که به کمک آن میتوانید یک حرف و یا رشته خاصی را با عبارات دلخواه خود جایگزین کنید، این دستور زمانی بسیار مهم جلوه میکند که شما قصد دارید تعداد بسیار زیادی از یک حرف و یا جمله را درون یک و یا چندین فایل به سرعت و فقط با یک دستور تغییر دهید.
sed 's/string1/string2/g' example.txt
توسط دستور بالا ما عبارت string1 را به string2 درون فایل example.txt تبدیل کردیم
دستور آخر نیز sort بوده که به وسیله آن میتوان خروجی چند فایل را به صورت مرتب شده بر اساس فاکتور دلخواه شما درآورد.
sort file1 file2 | uniq
با استفاده از دستور بالا دو فایل file1 و file2 با هم ترکیب شده و خروجی آنها به صورت sort شده و البته با حذف خطوط تکراری نمایش داده میشود.
جلسه دهم آنالیز و تعمیر فایل سیستم
در مواردی در لینوکس، فایل سیستم شما ممکن است دچار مشکل شود و شما به عنوان مدیر سیستم باید در سریعترین زمان مشکلات موجود را رفع نمایید، یکی از دستوراتی که در اینگونه موارد به کمک شما میآید دستور fsck میباشد که وظیفه چک و رفع مشکلات فایل سیستم را بر عهده دارد.
fsck /dev/sda1
توسط این دستور پارتیشن اول هارد اول سیستم را جهت بررسی مشکلات موجود آنالیز میکنیم.
دستور fsck خود یک دستور font-end برای دستور fsck.ext2,fsck.ext3,fsck.vfat و … میباشد که با توجه به نوع پارتیشن فرمت هارد شما آن را به صورت اتوماتیک شناسایی و اجرا میکند.
توسط دستور زیر هم اگر بلاکهای معیوبی بر روی سیستم موجود باشد بررسی و برطرف خواهد شد.
badblocks -v /dev/hda1
یکی دیگر از دستورات مدیریتی در لینوکس دستور mkfs میباشد که وظیفه پارتیشنبندی هارد را بر عهده دارد، استفاده از این دستور بدون سوییچ به شکل زیر بر روی hda1 پارتیشن فرمت ext2 را اجرا میکند.
mkfs /dev/hda1
استفاده از سوییچهای این دستور به شما قابلیت پارتیشنبندی هارد با انواع رایج فرمتها را فراهم میسازد، برای مثال توسط دستور زیر فرمت FAT32 رو بر روی هارد اجرا میکنیم.
mkfs -t vfat 32 -F /dev/hda1
دستور آخر نیز mkswap میباشد یک دستور کم کاربرد ولی ضروری برای مدیران سیستم، این دستور به شما امکان پارتیشنبندی یک هارد را به منظور اختصاص دهی برای عملیات swap فراهم میکند، swap یک فضایی بر روی هارد است که اصولاً مقدار آن دو برابر رم سیستم است و نهایتاً ۸ گیگ بوده و در مواقعی که رم موجود بر روی لینوکس قادر به پاسخگویی به درخواستها نباشد با نوشتن اطلاعات قبلی روی رم روی فضای swap رم را برای پاسخگویی به درخواستهای جدید خالی میکند که البته کند میباشد ولی برای استفادههای سروری ضروری است.
mkswap /dev/hda3
توسط دستور بالا پارتیشن سوم هارد اول را به swap اختصاص دادیم البته بحث مدیریت swap تخصصی بوده که سعی کردیم در دوره ۰ تا ۱۰۰ لینوکس برای مدیران سرور آن را آموزش دهیم.
بعد از پارتیشنبندی هارد مربوط به swap باید آن را در فایل fstab تعریف کنید و توسط دستور swapon آن را به فضای موجود اختصاص دهید.
swapon /dev/hda3
بدیهی است توسط دستور swapoff میتوانیم فضایی که برای عملیات swap اختصاص دادهایم را غیرفعال کنیم.
جلسه یازدهم بکاپ گیری و دستورات شبکه
در لینوکس دستورات متنوعی برای گرفتن بکاپ وجود دارد که هر کدام کارایی متفاوتی را ایجاد میکنند، دستور زیر که یک دستور ترکیبی است ابتدا تمامی فایلهای log را بر روی سیستم پیدا کرده و سپس از تمامی آنها یک فایل فشرده درست میکند.
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2
در واقع شما با زدن یک دستور توانستید مجموعهای از فایلهای پراکنده log را به صورت یک فایل فشرده در سریعترین زمان ممکن در اختیار بگیرید که اگر این کار را دستی قصد داشتید انجام بدید زمان بسیار زیادی را فقط باید صرف پیدا کردن فایلها میکردید.
توسط دستور زیر هم از طریق ssh یک سرور ثانویه، از هارد سرور هدف یک بکاپ تهیه میکنیم
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'
توسط دستور زیر هم می توانیم بکاپ موجود از دایرکتوری home/ را بازگردانی کنیم
restore -if /tmp/home0.bak
با دستور tar هم به شکل زیر میتوان از یک دایرکتوری به طور کامل نسخه پشتیبان تهیه کرد.
tar -cvf backup.tar /home/user
در بررسی آموزش دستورات لینوکس به بخش شیرین دستورات شبکه میرسیم که میتوانیم به واسطه آنها رو شبکه کنترل دقیقی داشته باشیم
دستور اول وظیفه بردن کارت شبکه روی مد dhcp را بر عهده دارد
dhclient eth0
البته نام کارت شبکه را توسط دستور ifconfig پیدا میکنیم و توسط دستور بالا مد آن را تغییر میدهیم.
حال میتوانیم توسط دستور ifconfig eth0 تنظیمات کارت شبکه خودمان را مشاهده کنیم و مقادیر ip و gateway و netmask را بررسی و حتی تغییر دهیم.
اگر بخواهیم کارت شبکه را از شبکه خارج کنیم میتوانیم توسط دستور زیر موقتاً آن را غیرفعال کنیم.
ifdown eth0
حالا اگر بخواهیم کارت شبکه را به حالت اول برگردانیم و وارد شبکه کنیم میتوانیم از دستور مخالف یعنی ifup eth0 استفاده کنیم.
دستور مهم و پرکاربرد بعدی netstat هستش که به واسطه آن میتوان اتصالات شبکه را به طور دقیق ردیابی کرد این دستور به همراه سوییچهای آن قدرتمند و با ارزش است پس لزوماً باید با استفاده از man به کاربرد تمامی سوییچهای آن مسلط شوید.
netstat –tup
این دستور تمامی اتصالات شبکه و PID مربوط به هرکدام را نمایش میدهد.
در مبحث روتینگ و تنظیم gateway نیز از دستور route استفاده خواهیم کرد. استفاده از این دستور به همراه سوییچ n- تمامی اطلاعات مربوط به جداول روتینگ را نمایش میدهد.
route –n
حالا اگر بخواهیم آدرس gateway مربوط به یک کارت شبکه را تغییر دهیم میتوانیم از دستور زیر استفاده کنیم.
route add -net 0/0 gw IP_Gateway
بدیهی است باید به جای gw IP_Gateway آدرس Ip مربوط به gateway دریافتی از سمت دیتاسنتر را وارد نمایید.
در لینوکس و در لابهلای آموزش دستورات لینوکس به یک دستور مهم و البته کاربردی در مواقع خاص میرسیم، توسط دستور زیر شما سرور و یا سیستم خودتان را به حالت مد routing میبرید یعنی لینوکس شما همانند یک روتر قابلیت روت کردن پکتها را خواهد داشت.
echo "1" > /proc/sys/net/ipv4/ip_forward
دستور بعدی که مدیران شبکه و سیستم از آن بسیار زیاد استفاده میکنند دستور tcpdump میباشد توسط این دستور میتوان پکتهای شبکه را خروجی گرفت و دیتاهای رد و بدل شده را آنالیز کرد.
tcpdump tcp port 80
توسط دستور بالا تمامی پکتهای مربوط به وب سرور بر بستر پروتکل tcp در خروجی نمایش داده خواهند شد.
جلسه دوازدهم دیواره آتش
در لینوکس به صورت پیشفرض از یک فایروال قدرتمند به نام iptables بهره گرفته شده است، توسط این ابزار قدرتمند و البته با تسلط به دستورات آن میتوان رولهای بسیار قدرتمندی نوشت که جلوی بسیاری از حملات شبکه را گرفته و برای شما امنیت را به طور چشمگیری افزایش دهد.
طبق همیشه استفاده از man برای مشاهده سوییچهای کاربردی و راهنمای دستور استفاده میکنیم و بعد با استفاده از تمرین بر دستورات مسلط میشویم.
اولین دستور برای نمایش تمامی رولهای مربوط به filter هستش که در خروجی برای شما لیست خواهد شد.
iptables -t filter –L
در واقع استفاده از دستور iptables به این فرمت برای گرفتن اطلاعات دیتابیس فایروال میباشد.
دستور iptables -t nat –F نیز تمامی رولهای مربوط به nat را در خروجی نمایش میدهد.
دیواره آتش iptables دارای یکسری فرمتهای مشخص بوده که با یادگیری چند نمونه از آنها میتوانید به راحتی قوانین متنوعی را بنویسید.
توسط دستور زیر ما اجازهی اتصال telnet به ورودی را میدهیم.
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT
یا توسط دستور زیر اجازه اتصال http به خروجی را مسدود میکنیم.
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
و یا حتی میتوان بستههای یک میزبان را به یک مقصد و یا میزبان دیگر تحویل داد.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22
جلسه سیزدهم نظارت و اشکالزدایی سیستم
در این جلسه از آموزش دستورات لینوکس، به موضوع نظارت بر سختافزار و اتصالات شبکه میپردازیم. یک مدیر سیستم باید توانایی بررسی و رفع مشکلات سیستم را در مواقع ضروری داشته باشد. ممکن است در برخی مواقع، بار سرور افزایش یابد و مشکلاتی مانند قطع شدن سرویسها را به همراه داشته باشد، یا اتصالات و بستههای زیادی از آدرسهای محدودی به سمت سرور شما، باعث اشغال منابع سرور شده و شما را دچار مشکل کند.
در این گونه موارد، شما باید توانایی این را داشته باشید که به سرعت وارد عمل شده، مشکل را یافته و بهترین راهکار را برای برون رفت از آن اعمال کنید.
یکی از منابع مهم و همیشه درگیر در سیستم، حافظه رم (RAM) است. شما باید به طور مرتب میزان خالی و پر بودن رم را بررسی کنید و در صورت لزوم، به صورت سختافزاری منابع را افزایش دهید یا برای خروج از وضعیت اشباع شدن (overload)، راهکاری پیدا کنید.
free –m
این دستور میزان فضای استفاده شده و فضای خالی رم را بر حسب مگابایت به شما نمایش میدهد.
در مواقعی شما یک پروسه را در سیستم پیدا میکنید که هیچ نیازی به آن ندارید و یا باید در حال حاضر آن پروسه را ببندید و یا حتی در مواقعی در لینوکس شما به صورت معمول نمیتوانید یک سرویس را غیرفعال کنید و پروسه آن کماکان در پسزمینه در حال اجراست در این موارد توسط دستور زیر میتوانید به طور حتم آن را ببندید.
kill -9 process_id
شما باید به جای process_id عدد مربوط به شماره PID آن پروسه را ابتدا پیدا کنید و سپس با جایگزینی آن را ببندید، برای پیدا کردن شماره پروسهها میتوانید از دستورات مختلفی همچون ps و یا top استفاده کنید.
توسط دستور زیر میتوانید آخرین باری که سیستم راهاندازی مجدد شده را مشاهده کنید.
last reboot
لینوکس توسط کرنل و ماژولهای که توسط آن راهاندازی میشود اجرا و کاربردی میشود در لینوکس توسط دستور زیر شما میتوانید لیستی از ماژولهای در حال اجرای روی سیستم را مشاهده کنید.
lsmod
اگر بخواهید لیستی از فایلهایی که یک پروسه در حال استفاده از آنها میباشد را پیدا کنید میتوانید از دستور زیر استفاده کنید.
lsof -p process_id
همانطور که قبلتر هم اشاره کردیم توسط دستور ps میتوان پروسههای سیستمی را مشاهده کرد، این دستور توسط سوییچهای آن کاربردی میشود و نمونهای از این دستور که نمایش تمامی برنامههای در حال اجرا را ممکن میکند به شکل زیر میباشد.
ps –eafw
شاید در مواقعی بخواهید وابستگی هر پروسه به دیگری را به صورت یک نمایش گرافیکی و درختی مشاهده کنید که لینوکس یک دستور برای این کار در نظر گرفته که میتوانید از آن استفاده کنید.
pstree
دستور بسیار مهم بعدی دستور top هستش که به جرات میتوان گفت تمامی مدیران سیستم به صورت روزانه از آن استفاده میکنند.
این دستور تمامی پروسهها، میزان استفاده از منابع را به صورت در لحظه نمایش میدهد و ابزاری قدرتمند برای سنجش کارای و رفع مشکل سیستم است.
جلسه آخر دستورات اضافی و الحاقی
در لینوکس قابلیتی به نام alias وجود دارد که به واسطه آن میتوانید برای دستورات عبارات معادل و کوتاه دلخواه در نظر بگیرید برای مثال توسط دستور زیر شما تعریف میکنید که هرگاه hh تایپ شد عملکردی مانند دستور history را داشته باش
alias hh='history'
در مواردی که امنیت برای شما مهم باشد قابلیت دیگری در لینوکس وجود دارد که شما میتوانید به واسطه آن بر روی فایلهای خود یک کد احراز هویت قرار دهید تا اگر این فایل توسط افراد متخلف دچار تغییر شد به وسیله این امضا بتوانید متوجه تغییرات اعمالی بر روی فایل شوید.
gpg -c file1
در این جمله، دستور مورد نظر برای رمزنگاری یک فایل ذکر نشده است.
در مواقعی نیاز دارید تا کتابخانههای استفاده شده یک برنامه را به دقت شناسایی کنید، تا بتوانید از آنها در برنامهنویسی خود استفاده کرده یا حتی آن کتابخانه خاص را بهروزرسانی کنید. به عنوان مثال، با استفاده از دستور “ldd /usr/bin/ssh” میتوانید تمامی کتابخانههای مورد استفاده دستور “ssh” را مشاهده نمایید.
دستور آخر “who -a” است که به واسطه آن میتوانید تمامی کاربرانی که در حال حاضر به سیستم متصل هستند، پروسههای فعال، پروسههای متوقف شده، آخرین تغییرات روی ساعت سیستم و موارد مشابه را مشاهده کنید.