۲۰ دستور ضروری لینوکس برای فضای ابری و دواپس
اگر میخواهید با سیستمها و سرورهای ابری کار کنید، باید با لینوکس آشنا و راحت باشید. لینوکس همه جا هست و آشنایی با آن واقعا به شما کمک خواهد کرد. اگر میخواهید کانتینرها را راهاندازی، ماشینهای مجازی را مدیریت یا سرورها را عیبیابی کنید، متوجه خواهید شد که دستورات لینوکس ابزارهای مورد استفاده شما برای همه این کارها هستند. دانستن 20 دستور ضروری لینوکس به شما کمک میکند تا به سرعت مشکلات را عیبیابی و وظایف را خودکار کنید.
این مطلب 20 دستور لینوکس را که هر مهندس دواپس باید بداند، به همراه مثالهایی برای هر کدام بررسی میکند.
دستورات لینوکس برای مهندسان ابری و دواپس
این دستورات به شما در پیمایش سرورها، مدیریت فایلها، نظارت بر عملکرد و خودکارسازی وظایف در خدمات ابری کمک میکنند.
دستورات ناوبری پایه
با این دستورات، میتوانید در فایل سیستم لینوکس پیمایش کنید. میتوانید از یک پوشه به پوشه دیگر بروید، محتوای دایرکتوری فعلی خود را بررسی نموده یا مکان فعلی خود را مشاهده کنید.
ls – فهرست کردن محتویات دایرکتوری
دستور ls یکی از رایجترین دستورات لینوکس است. برای فهرست کردن محتویات یک دایرکتوری استفاده میشود. اجرای دستور به تنهایی و بدون هیچ آرگومانی، فایلها و دایرکتوریهای موجود در دایرکتوری فعلی شما، به جز فایلهای مخفی، را نمایش میدهد.
سینتکس:
گزینههای رایج:
- l- : یک فرمت لیست طولانی با اطلاعات دقیق مانند پرمیشن، مالک، اندازه و تاریخ تغییر را نشان میدهد.
- h- : اندازه فایلها را در قالبی قابل خواندن توسط انسان (مانند KB، MB، GB) در صورت استفاده با -l نمایش میدهد.
- a- : تمام فایلها و دایرکتوریها، از جمله فایلهای مخفی که با نقطه (.) شروع میشوند را لیست میکند.
- r- : ترتیب مرتبسازی را معکوس میکند، مانند لیست کردن فایلها از قدیمیترین به جدیدترین به جای پیشفرض.
- t- : فایلها و دایرکتوریها را بر اساس آخرین زمان تغییر آنها مرتب میکند و جدیدترینها را ابتدا نشان میدهد.
- R- : به صورت بازگشتی محتویات همه زیرشاخه را لیست میکند.
- d- : خود ورودی دایرکتوری را لیست میکند، نه محتویات درون آن را.
- S– : فایلها را بر اساس اندازه آنها، از بزرگترین به کوچکترین، مرتب میکند.
- 1- : هر فایل یا دایرکتوری را در خط خودش لیست میکند.
مثال:
برای نمایش فهرستی دقیق و خوانا برای انسان از همه چیز در داخل پوشه parsdev واقع در دایرکتوری فعلی.
cd – تغییر دایرکتوری
دستور cd به شما امکان میدهد بین دایرکتوریها حرکت کنید. این کار مانند کلیک کردن روی پوشهها در یک فایل اکسپلورر است.
سینتکس:
گزینههای رایج:
- .. cd : شما را به دایرکتوری والد (یک سطح بالاتر) از مکان فعلیتان منتقل میکند.
- ~ cd : شما را از هر کجای سیستم به دایرکتوری home میبرد.
- – cd : شما را به دایرکتوری قبلی که در آن بودید، منتقل میکند.
- / cd : به دایرکتوری root، که بالاترین سطح کل فایل سیستم است، حرکت میکند.
مثال:
برای حرکت به دایرکتوری parsdev، سپس بازگشت به دایرکتوری home با استفاده از ~:
pwd – چاپ دایرکتوری کاری
دستور pwd دقیقا به شما میگوید که در کجای فایل سیستم هستید. این دستور مسیر کامل دایرکتوری فعلی که در آن هستید را نمایش میدهد. برای دریافت یک مسیر قابل اعتماد، در اسکریپتها به این دستور نیاز خواهید داشت.
سینتکس:
گزینههای رایج:
- L- : مسیر منطقی (logical ) دایرکتوری فعلی شما، از جمله هرگونه symbolic links که برای رسیدن به آنجا استفاده کردهاید را نشان میدهد. این رفتار پیشفرض دستور pwd است.
- P- : مسیر فیزیکی (physical ) را نمایش میدهد و تمام symbolic links را برای نمایش مکان واقعی و صحیح روی دیسک، resolve میکند.
مثال:
برای نمایش مسیر کامل دایرکتوری فعلی و تایید اینکه در پوشه home هستید:
مدیریت فایل و دایرکتوری
این دستورات ابزارهای شما برای ایجاد، کپی، انتقال و حذف فایلها و دایرکتوریها در ترمینال لینوکس هستند.
touch – ایجاد فایلهای جدید
دستور touch به شما امکان میدهد فوری یک فایل جدید و خالی ایجاد کنید. همچنین میتوان از آن برای بهروزرسانی تایم استمپ (Timestamp)ویرایش یک فایل موجود استفاده کرد.
سینتکس:
گزینههای رایج:
- a- : فقط زمان دسترسی را بهروزرسانی میکند.
- m- : فقط زمان ویرایش را بهروزرسانی میکند.
- t- : زمان فایل را روی تاریخ و زمان مشخصی که شما ارائه میدهید تنظیم میکند.
- c- : در صورت عدم وجود فایل جدید، از ایجاد آن توسط touch جلوگیری میکند.
مثال:
اگر فایلی وجود نداشته باشد، یک فایل جدید و خالی با نام README.md در دایرکتوری فعلی شما ایجاد میکند، یا اگر وجود داشته باشد، آخرین تایم استمپ تغییر یافته آن را بهروزرسانی میکند.
mkdir – ایجاد دایرکتوریها
دستور mkdir برای ایجاد یک یا چند دایرکتوری برای مدیریت فایلهای شما و سازماندهی سیستم شما استفاده میشود.
سینتکس:
گزینههای رایج:
- p- : اگر دایرکتوریهای والد وجود ندارند، آنها را ایجاد کنید.
- m- : هنگام ایجاد دایرکتوری جدید، پرمیشنهای آن را تنظیم کنید.
- v- : برای هر دایرکتوری ایجاد شده، پیامی در ترمینال چاپ میکند.
مثال:
برای ایجاد یک دایرکتوری demo به همراه زیردایرکتوریهای تو در توی logs و archive در یک دستور:
اگر هر یک از دایرکتوریهای والد از قبل وجود داشته باشند، بدون خطا از آنها صرف نظر میکند.
نکته:
اگر ابزار خط فرمان tree نصب نشده باشد، با خطایی مواجه خواهید شد که به شما اطلاع میدهد باید آن را نصب کنید. برای انجام این کار، دستورات زیر را اجرا کنید:
در اوبونتو/دبیان
دستور زیر را اجرا کنید:
در RHEL/Fedora/Rocky/AlmaLinux
ابتدا باید مخزن EPEL را روی سیستم خود فعال کنید. سپس دستور زیر را اجرا کنید:
ArchLinux
دستور زیر را اجرا کنید:
سرور مجازی لینوکس یک ماشین مجازی کامل است که میتوانید سیستم عامل مورد نظر خود را روی آن انتخاب کنید.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، فرانسه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
cp – کپی کردن فایلها و دایرکتوریها
شما اغلب نیاز به کپی کردن فایلها دارید، شاید برای بکاپگیری یا آمادهسازی(staging). دستور cp میتواند به شما در انجام این کار کمک کند. این دستور فایلها یا پوشهها را از یک مکان به مکان دیگر در سیستم شما کپی میکند.
سینتکس:
برای کپی کردن کل یک دایرکتوری، باید از پرچم r- (بازگشتی) استفاده کنید.
گزینههای رایج:
- r- : کپی کردن دایرکتوریها و محتویات آنها به صورت بازگشتی.
- v- : فایلها را هنگام کپی شدن نشان میدهد.
- p- : ویژگیهای فایل مانند حالت (mode)، مالکیت و تایم استمپ را حفظ میکند.
- i- : قبل از overwriting روی فایل موجود، از شما سوال میکند.
- u- : فقط زمانی کپی میکند که فایل منبع جدیدتر از فایل مقصد باشد یا فایل مقصد وجود نداشته باشد.
مثال:
برای کپی کردن فایل notes.txt از دایرکتوری فعلی خود به پوشه demo با نام جدید، notes_backup.txt:
mv – انتقال یا تغییر نام فایلها و دایرکتوریها
دستور mv میتواند یک فایل یا پوشه را به مکان جدید منتقل کند یا نام فایل را تغییر دهد.
سینتکس:
هنگام تغییر نام، منبع و مقصد باید در یک مسیر باشند. در غیر این صورت، وقتی مسیر مقصد متفاوتی مشخص شود، فایل هم تغییر نام داده میشود و هم به مسیر مشخص شده منتقل میشود.
گزینههای رایج:
• v- : نام هر فایل را هنگام انتقال نشان میدهد.
• n- : از overwriting جلوگیری میکند.
• i- : قبل از overwriting روی فایل موجود، درخواست میدهد.
• u- : اگر فایل منبع جدیدتر از فایل مقصد است یا فایل مقصد وجود ندارد، آن را منتقل میکند.
مثال:
برای تغییر نام notes.txt به tasks.txt:
برای انتقال فایل tasks.txt به دایرکتوری demo و تغییر نام آن به tasks-archived.txt:
rm – حذف فایلها و دایرکتوریها
دستور rm فایلها و دایرکتوریها را به طور دائم حذف میکند. این دستور میتواند برای پاکسازی فایلهای لاگ قدیمی، دادههای موقت یا فایلهای استقرار ناموفق استفاده شود.
سینتکس:
گزینههای رایج:
- r- : حذف دایرکتوریها و محتویات آنها به صورت بازگشتی
- f- : حذف فایلها بدون درخواست تایید
- i- : درخواست تایید قبل از حذف هر فایل
- v- : نام هر فایل را هنگام حذف نشان میدهد
مثال:
برای حذف فایل README.md در دایرکتوری فعلی:
مشاهده و جستجوی فایلها
به عنوان یک مهندس خدمات ابری، زمان زیادی را صرف خواندن لاگها و فایلهای پیکربندی خواهید کرد. این دستورات به شما کمک میکنند تا دادههای متنی را به طور موثر مشاهده و جستجو کنید.
cat – الحاق و نمایش محتوای فایل
دستور cat یک فایل را میخواند و محتوای آن را در ترمینال چاپ میکند. این دستور برای مشاهده سریع کل محتوای یک فایل کوچک به طور مستقیم در ترمینال شما عالی است.
سینتکس:
گزینههای رایج:
- n- : تمام خطوط خروجی، از جمله خطوط خالی را شمارهگذاری میکند.
- b- : تمام خطوط خروجی غیر خالی را شمارهگذاری میکند.
مثال:
برای نمایش محتوای فایل docker-compose.yml در ترمینال شما:
grep – جستجوی متن
grep ابزاری برای یافتن متن یا الگوهای خاص در فایلها یا حتی خروجی دستورات دیگر است. این دستور برای جستجوی فایلهای بزرگ یا در چندین فایل به طور همزمان عالی است.
سینتکس:
گزینههای رایج:
- i- : جستجو را نسبت به حروف کوچک و بزرگ بیتفاوت میکند و حروف بزرگ و کوچک را با هم تطبیق میدهد.
- n- : شماره خط در فایل را برای هر خط منطبق نمایش میدهد.
- r- : به صورت بازگشتی در تمام فایلهای زیر دایرکتوری داده شده و زیرشاخههای آن، الگو را جستجو میکند.
- v- : جستجو را معکوس میکند تا فقط خطوطی را نشان دهد که حاوی الگو نیستند.
- c- : تعداد کل خطوط منطبق را به جای نمایش خود خطوط، شمارش میکند.
مثال:
برای یافتن تمام خطوط حاوی کلمه “ERROR” در یک فایل لاگ:
شبکهسازی و نظارت بر سیستم
شامل دستوراتی برای دسترسی، مانیتور و نگهداری سرورها میشود. این دستورات شبکه لینوکس به شما کمک میکنند تا به سیستمهای ریموت متصل شوید، فایلها را منتقل ، میزان استفاده از منابع را بررسی و مشکلات اتصال را عیبیابی کنید.
ps – وضعیت فرآیند
ps دستوری است که برای گرفتن یک تصویر لحظهای سریع از تمام فرآیندهای در حال اجرا در سیستم شما استفاده میشود. این دستور برای یافتن یک شناسه فرآیند (PID) خاص از یک برنامه یا مشاهده دقیق فرآیندهایی که یک کاربر خاص در حال اجرا است، عالی است.
سینتکس:
گزینههای رایج:
- e- : هر فرآیند در حال اجرا در سیستم را نمایش میدهد.
- f- : فهرستی کامل با جزئیات اضافی مانند شناسه فرآیند والد و زمان شروع را نشان میدهد.
- u- : فرآیندهای متعلق به یک کاربر مشخص را نمایش میدهد.
- a- : فرآیندهای مربوط به همه کاربران، از جمله آنهایی که به ترمینال مرتبط نیستند را نشان میدهد.
- x- : فرآیندهایی را که به هیچ ترمینالی متصل نیستند، مانند سرویسهای سیستم، نمایش میدهد.
مثال:
برای نمایش اسنپشات از تمام فرآیندهای در حال اجرا روی سیستم، از جمله user، CPU و میزان استفاده از حافظه آنها و دستور:
top – نظارت بر فرآیندهای سیستم
top داشبورد لحظهای برای هر اتفاقی است که در سیستم شما میافتد. این دستور یک نمای پویا و مدام بهروز از تمام فرآیندهای در حال اجرا به شما میدهد. این دستور برای مشاهده سریع آنچه از CPU، حافظه و به طور کلی سلامت سرور شما استفاده میکند، بسیار ارزشمند است.
سینتکس:
گزینههای رایج:
- u- : فقط فرآیندهای متعلق به یک کاربر خاص را نشان میدهد.
- n- : تعداد تکرارها یا بهروزرسانیهایی را که top قبل از خروج انجام خواهد داد، مشخص میکند.
- -b: دستور top را در حالت دستهای اجرا میکند و خروجی را بدون دستورات تعاملی به خروجی استاندارد ارسال میکند.
- d- : تاخیر یا فاصله بین بهروزرسانیهای صفحه را تنظیم میکند.
- p- : فقط فرآیندهایی را با شناسههای فرآیند (PID) خاص نظارت میکند.
مثال:
برای مشاهده زنده سیستم خود، دستور زیر را اجرا کنید:
برای خروج از بالا، q را فشار دهید. از h برای کمک یا از M برای مرتبسازی بر اساس میزان استفاده از حافظه در حین اجرا استفاده کنید.
df – نمایش میزان استفاده از فضای دیسک
تمام شدن فضای دیسک یک مشکل رایج است. دستور df فضای موجود و استفاده شده روی سیستم فایل نصب شده شما را نمایش میدهد.
سینتکس:
گزینههای رایج:
- h- : فضای دیسک را با فرمت قابل خواندن توسط انسان (مانند KB، MB، GB) نمایش میدهد.
- T- : نوع فایل سیستم را برای هر دیسک نشان میدهد (مثلا ext4، xfs، nfs).
- a- : شامل تمام فایل سیستمهای موجود در لیست، حتی سیستمهای شبه (pseudo ) و تکراری میشود.
- P- : از فرمت خروجی استاندارد POSIX استفاده میکند و تضمین میکند که هر ورودی در یک خط قرار دارد.
- i- : اطلاعات مربوط به inodeها (ساختارهای دادهای که اطلاعات فایل را ذخیره میکنند) را به جای بلوکهای دیسک نمایش میدهد.
مثال:
برای دریافت یک گزارش قابل خواندن توسط انسان از میزان استفاده از دیسک برای همه سیستم فایلها، از جمله نوع آنها:
du – تخمین میزان استفاده از فضای فایل و دایرکتوری
در حالی که df فضای دیسک را برای کل فایل سیستم نشان میدهد، du میزان فضای استفاده شده توسط یک فایل یا دایرکتوری خاص را نشان میدهد.
سینتکس:
گزینههای رایج:
- h- : اندازههای استفاده از دیسک را در قالبی قابل خواندن توسط انسان (مانند 1K، 234M، 2G) نمایش میدهد.
- a- : میزان استفاده از دیسک برای همه فایلها، نه فقط دایرکتوریها را نشان میدهد.
- s- : فقط خلاصهای از هر موردی که مشخص میکنید را نمایش میدهد.
- c- : در انتهای خروجی، مجموع کل استفاده از دیسک را اضافه میکند.
- max-depth=N– : میزان عمق نمایش زیرشاخهها توسط du را تا سطح مشخص شده N محدود میکند.
مثال:
برای نمایش کل فضای دیسک استفاده شده توسط دایرکتوری logs در قالبی قابل خواندن توسط انسان:
ssh – اساساچ
ssh یک ابزار خط فرمان برای اتصال ایمن به سرورهای ابری از راه دور شما با استفاده از پروتکل SSH است که به طور پیشفرض به پورت 22 گوش میدهد.
سینتکس:
گزینههای رایج:
- i- : مسیر فایل کلید خصوصی را برای احراز هویت مشخص میکند.
- p- : شماره پورت اتصال به سرور از راه دور را مشخص میکند (پیشفرض 22 است).
- v- : حالت verbose را فعال میکند و خروجی دیباگ دقیق را در طول فرآیند اتصال نشان میدهد.
مثال:
برای ایجاد اتصال SSH به یک سرور ریموت با استفاده از نام کاربری و IP مشخص شده:
scp – کپی امن
scp به شما امکان میدهد فایلها را به طور ایمن بین کامپیوتر محلی خود و یک سرور از راه دور یا حتی بین دو سرور از راه دور کپی کنید. از SSH برای رمزگذاری استفاده میکند، بنابراین دادههای شما همیشه ایمن هستند. برای انتقال دادهها به و از نمونههای ابری شما مفید است.
سینتکس:
گزینههای رایج:
- p- : جزئیات مهم مانند زمانهای اصلاح اولیه، زمانهای دسترسی و پرمیشنهای فایلی که کپی میکنید را حفظ میکند.
- r- : به صورت بازگشتی کل دایرکتوریها و تمام محتویات آنها را کپی میکند.
- v- : حالت verbose را فعال میکند و خروجی دیباگ را در حین انتقال نشان میدهد.
- i- : مسیر یک فایل کلید خصوصی را برای احراز هویت مشخص میکند.
مثال:
برای کپی کردن فایلی به نام cmds.txt از دایرکتوری فعلی به دایرکتوری home/parsdev/ در سروری با آدرس 5.62.175.54:
curl – انتقال دادهها با URLها
curl ابزار مورد استفاده شما برای ایجاد درخواستهای شبکه است. میتوانید از آن برای آزمایش نقاط پایانی API، دانلود فایلها یا بررسی سریع پاسخدهی وب سرور استفاده کنید.
سینتکس:
گزینههای رایج:
- L- : اگر صفحهای که به دنبال آن هستید جابجا شده باشد، این گزینه به طور خودکار پس از تغییر مسیر به مکان جدیدش، آن را دنبال میکند.
- I- : فقط اطلاعات سربرگ (header) یک URL را دریافت میکند، نه محتوای کامل صفحه را.
- O- : سندی را که مستقیم دریافت میکنید، با حفظ نام اصلی آن، در یک فایل محلی ذخیره میکند.
- u- : نام کاربری و رمز عبور را برای احراز هویت سرور مشخص میکند.
- d- : دادههای مشخص شده را در یک درخواست POST ارسال میکند، که معمولا برای ارسال فرمها یا ارسال به یک API استفاده میشود.
مثال:
برای دریافت محتوای یک صفحه وب:
برای دریافت فقط اطلاعات سربرگ URL:
ping – بررسی اتصال شبکه
پینگ بستههایی را به یک میزبان شبکه ارسال میکند و منتظر پاسخها میماند که به شما میگوید که آیا یک میزبان قابل دسترسی است و چقدر طول میکشد تا کامپیوتر شما پاسخی دریافت کند.
سینتکس:
گزینههای رایج:
- i- : زمان انتظار (به ثانیه) بین ارسال هر بسته را تنظیم میکند.
- t- : زمان زنده ماندن (TTL) برای بستههای خروجی را تنظیم میکند که حداکثر تعداد گامهای شبکه (مانند روترها) است که بسته شما میتواند قبل از دور انداختن طی کند.
- q- : خروجی بیصدا را فعال میکند و فقط آمار خلاصه را در شروع و پایان نشان میدهد.
- c- : تعداد یا تعداد کل بستههای پینگ برای ارسال قبل از توقف را مشخص میکند.
- s- : اندازه بسته دادهای که باید ارسال شود را بر حسب بایت تنظیم میکند.
مثال:
ارسال 3 بسته پینگ به google.com و گزارش موفقیت/شکست:
دسترسی و پرمیشنها
درک پرمیشن فایل و مالکیت برای امنیت و عملکرد روان در لینوکس بسیار مهم است. این دستورات به شما امکان میدهند مدیریت کنید چه کسی میتواند با فایلهای شما چه کاری انجام دهد.
chmod – تغییر مجوزهای فایل
chmod برای تغییر مجوزهای خواندن، نوشتن و اجرای فایلها و دایرکتوریها استفاده میشود. این برای ایمنسازی فایلهای شما و اجرایی کردن اسکریپتها بسیار مهم است.
سینتکس:
گزینههای رایج:
- R- : تغییرات پرمیشن را به صورت بازگشتی به یک دایرکتوری و تمام فایلها و زیردایرکتوریهای درون آن اعمال میکند.
- v- : حالت verbose را فعال میکند که برای هر فایلی که پرمیشنهای آن تغییر میکند، پیامی چاپ میکند.
مثال:
برای اجرایی کردن اسکریپت script.sh درون دایرکتوری parsdev:
ابتدا، برای بررسی مجوزهای فعلی روی فایل:
-rw-rw-r– نشان میدهد که مالک و گروه میتوانند فایل را بخوانند و بنویسند، اما هیچکس نمیتواند آن را اجرا کند.
در مرحله بعد، فایل را اجرایی کنید:
سپس با اجرای دستور ls با گزینه l- ، تغییر را تایید کنید تا پرمیشنهای فایل هم نشان داده شود:
حالا، خروجی -rwxrwxr-x است. توجه کنید که x اضافه شده است و تایید میکند که فایل اکنون قابل اجرا است.
همچنین میتوانید فایل را اجرا نمائید تا تایید شود که قابل اجرا است:
chown – تغییر مالک و گروه فایل
chown مالک و یا گروه یک فایل یا دایرکتوری را تغییر میدهد. این برای اطمینان از دسترسی کاربران و سرویسهای صحیح به منابع حیاتی است.
سینتکس:
برای تغییر مالک یک فایل:
برای تغییر مالک و گروه:
گزینههای رایج:
- R- : تغییرات مالکیت را به صورت بازگشتی به یک دایرکتوری و تمام فایلها و زیردایرکتوریهای داخل آن اعمال میکند.
- v- : حالت verbose را فعال میکند که برای هر فایلی که مالکیت آن پردازش میشود، پیامی چاپ میکند.
مثال:
برای تنظیم مالک و گروه دایرکتوری backups/ روی parsdev:
ابتدا، مالکیت دایرکتوری را با استفاده از دستور ls تایید کنید:
مالکیت دایرکتوری و محتویات آن را تغییر دهید:
سپس با اجرای مجدد دستور ls، تغییر را تایید کنید:
مالکیت با موفقیت از root به parsdev منتقل شد.
جمعبندی
در این مطلب، 20 دستور ضروری لینوکس را که شامل مدیریت فایل، نظارت بر سیستم و مدیریت شبکه است، مرور کردیم. گام بعدی، باز کردن یک ترمینال و شروع به تمرین است. این تجربه عملی در ایجاد اعتماد به نفس شما بسیار موثر خواهد بود.
به خاطر داشته باشید که میتوانید از طریق صفحه راهنمای هر دستور در ترمینال، اطلاعات بیشتری در مورد آن کسب کنید. به عنوان مثال، برای کسب اطلاعات بیشتر در مورد دستور ls، دستور man ls را وارد کنید.