راهنمای جامع کار با دستورات کاربردی ترمینال در لینوکس

آموزش دستورات کاربردی ترمینال لینوکس برای مدیریت فایل‌ها و سرور
azarsys team
مدت زمان مطالعه : 52 دقیقه
0 کامنت
۱۴۰۵/۰۸/۰۸

توی دنیای لینوکس، مخصوصا هم وقتی که پای سرور و VPS وسط بیاد، معمولا از محیط‌های گرافیکی رنگارنگ، موس و کلیک‌های پشت سر هم خبری نیست. اینجاست که ترمینال وارد کار می‌شه و یادگیری دستوراتش، راه اصلی کار با سیستم رو باز می‌کنه. با خط فرمان می‌تونید از طریق Shell مستقیماً با سیستم کار کنید و خیلی از کارهای مدیریتی رو سریع‌تر، دقیق‌تر و حتی به‌صورت خودکار انجام بدید. توی این پست هدف اینه که دستورات کاربردی ترمینال در لینوکس رو یاد بگیرین. ترمینال رو باز کنید تا کار رو شروع کنیم!

محیط ترمینال لینوکس چیه و چجوری کار می‌کنه؟

ترمینال لینوکس در واقع یه محیط متنیه که توش دستورهای مختلف رو تایپ می‌کنی و برای مدیریت سرور یا سیستم، دیگه نیازی به موش و کیبورد و دکمه‌های گرافیکی نداری. وقتی یه دستوری رو اینجا می‌نویسی، یه برنامه‌ای به اسم شل (Shell) اون رو تحویل می‌گیره، تفسیرش می‌کنه و میره ابزار یا برنامه مربوطه رو صدا می‌زنه. مثلاً وقتی دستور ls یا df -h رو وارد می‌کنی، شل اون رو پردازش می‌کنه و نتیجه کار (یا همون ارور احتمالی) رو روی صفحه ترمینال بهت نشون میده.

نحوه ارتباط کاربر، Terminal و Shell در لینوکس

اگه دقت کنی، قیافه و ساختار کلی اکثر دستورهای لینوکس این شکلیه: command [option] [argument]؛ البته این یه قانون همیشگی نیست ولی خب بیشتر دستورها همین الگو رو دارن:

کلمه اول یا Command مشخص می‌کنه که اصلاً چه کاری باید انجام بشه.
بخش Option یا همون آپشن‌ها، مدل رفتار یا نحوه نمایش خروجی دستور رو تغییر میدن.
بخش Argument هم مشخص می‌کنه که این دستور قراره روی کدوم فایل، پوشه یا مقداری اجرا بشه.

ساختار دستور لینوکس شامل Command، Option و Argument

یه نکته جالب اینه که توی لینوکس، خروجی‌های سالمِ یه دستور با پیام‌های خطاش (ارورها) از نظر فنی مسیر کاملاً جداگانه‌ای دارن و می‌تونی هر کدوم رو جداگونه مدیریت یا ذخیره کنی.
اون متنی هم که همیشه اولِ خط فرمان می‌بینی و منتظر تایپ شماست، اسمش پرامپت (Prompt) هست. این متن معمولاً آمار خوبی از وضعیت فعلی بهت میده؛ مثلاً عبارت user@server:~$ یعنی:

شما با کاربر user روی سروری به اسم server لاگین کردی و الان دقیقاً وسط پوشه خانگی (Home Directory) هستی. البته چون ظاهر این پرامپت‌ها رو میشه دستی تغییر داد، پیشنهاد می‌کنم واسه اینکه دقیقاً مطمئن بشی کی هستی و کجای سیستمی، به پرامپت اعتماد نکنی و خودت دستورهای whoami (من کی‌ام؟)، hostname (اسم سرور چیه؟) و pwd (الان کدوم پوشه‌ام؟) رو بزنی تا آمار دقیق دستت بیاد.

لیست دستورات کاربردی ترمینال در لینوکس

۱. مدیریت مسیر، فایل و پوشه

pwd — نمایش مسیر فعلی

این فرمان دایرکتوری یا همون پوشه‌ای که الان توش هستی رو بهت نشون میده و خودش هیچ تغییری توی سیستم ایجاد نمی‌کنه.
واسه وقتی خوبه که بین چندتا پوشه جابه‌جا شدی و می‌خوای مطمئن شی دقیقاً کجای سیستمی؛ مخصوصاً قبل از اینکه کارهای خطری مثل پاک کردن یا جابه‌جا کردن فایل‌ها رو انجام بدی.
تستش خیلی راحته، فقط همین سه حرف رو بزن:

pwd

آخر سر هم آدرس جایی که هستی چاپ میشه، مثلاً:

/home/user

که یعنی الان داخل پوشه user هستی.

ls — نمایش فایل‌ها و پوشه‌ها

کارش اینه که لیست تمام فایل‌ها و پوشه‌های داخل یه مسیر رو برات ردیف کنه.
وقتی می‌خوای ببینی توی یه پوشه چه چیزهایی داری به کارت میاد؛ مخصوصاً موقعی که قصد داری فایلی رو حذف کنی یا انتقال بدی ولی آمار محتویات اونجا رو نداری.
برای دیدن لیست معمولی این رو وارد کن:

ls

اگه می‌خوای فایل‌های مخفی و جزئیات کامل رو هم زیر ذره‌بین ببری، این آپشن‌ها رو اضافه کن:

ls -lah

در نهایت اسم فایل‌ها رو می‌بینی و اگه حالت پیشرفته رو زده باشی، اطلاعات دسترسی، مالک، حجم فایل و آیتم‌های مخفی هم برات رو میشن.

cd — جابه‌جایی بین مسیرها

فرمان پرکاربردی که برای رفتن از یه پوشه به یه پوشه دیگه دستت رو می‌گیره.
هر زمان که بخوای وارد یه دایرکتوری جدید بشی یا کلاً مسیرت رو عوض کنی باید صداش بزنی.
آدرس مقصد رو اینطوری جلوش بنویس:

cd /var/log

واسه اینکه یه قدم برگردی عقب هم این رو تایپ کن:

cd ..

این کار معمولاً پیغام خاصی روی صفحه نمیاره، پس واسه اینکه خیالت راحت شه جابه‌جا شدی می‌تونی بعدش یه pwd بگیری.

mkdir — ساختن پوشه

با این ابزار می‌تونی خیلی راحت یه پوشه جدید و تازه نفس بسازی.
وقتی برای فایل‌هات، پروژه‌ها یا نسخه‌های پشتیبان به یه فضای جدید نیاز داری به کارت میاد.
اسم پوشه دلخواهت رو جلوش به این صورت تنظیم کن:

mkdir backup

اگه می‌خوای یه پوشه تو در تو و چند لایه بسازی بزن:

mkdir -p /home/user/backup/daily

اگه همه‌چیز خوب پیش بره، ترمینال بدون سر و صدا پوشه رو برات می‌سازه و میره خط بعدی.

touch — ایجاد فایل

کارش اینه که یه فایل متنی یا تنظیمی کاملاً خالی و خام برات ایجاد کنه.
بیشتر واسه ساختن فایل‌های ساختاری، کانفیگ‌ها یا فایل‌های تستی استفاده میشه. یه ویژگی خوبش اینه که اگه فایلی از قبل وجود داشته باشه، محتواش رو خراب نمی‌کنه و فقط زمان آخرین دسترسی و آخرین تغییر فایل رو به‌روزرسانی می‌کنه.
اسم فایل مورد نظرت رو اینطوری بنویس:

touch test.txt

این دستور هم چراغ خاموش کار می‌کنه و خروجی نداره، ولی بعدش می‌تونی با یه ls ساده مچش رو بگیری و ببینی فایل ساخته شده یا نه.

cp — کپی فایل و پوشه

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

cp config.conf config.conf.bak

واسه کپی کردن یه پوشه کامل با تمام محتویاتش هم این فلگ رو بذار:

cp -r website /backup/

اگه کپی با موفقیت انجام بشه، ترمینال پیغام خاصی نشون نمیده.

mv — انتقال یا تغییر نام

هم واسه جابه‌جا کردن فایل و پوشه استفاده میشه و هم می‌تونی باهاش اسم اون‌ها رو عوض کنی.
اینجا هم یه نکته ظریف هست؛ اگه توی مقصد یه فایل هم‌نام وجود داشته باشه، ممکنه با توجه به شرایط سیستم بدون سوال روی قبلی بازنویسی بشه یا فایل مبدأ بره داخلش، پس همیشه قبلش مقصد رو بپای.
تغییر نام رو به این صورت جلو ببر:

mv old.txt new.txt

واسه جابه‌جا کردن و فرستادن فایل به یه مسیر دیگه هم اینطوری بنویس:

mv backup.tar /home/user/backups/

تاییدیه خاصی روی صفحه نمیاد؛ اما اگه بهت ارور داد، حتماً آدرس مبدأ و مقصد و سطح دسترسی‌ها رو دوباره بررسی کن.

rm — حذف فایل و پوشه

فایل یا پوشه‌ای که مشخص کردی رو کاملاً پاک می‌کنه و حواست باشه که اون رو به سطل آشغال هم نمی‌فرسته، پس دیگه راه برگشتی نیست! واسه همین قبل از زدن این دستور، مخصوصاً وقتی فلگ‌های خطری مثل -r و -f رو پلوش میذاری، مسیر رو دو بار چک کن.
برای حذف یه فایل معمولی این عبارت رو بنویس:

rm old.txt

برای پوشه:

rm -r old_directory

در حالت عادی بعد از پاک کردن، هیچ پیغامی روی صفحه نشون داده نمی‌شه.

مدیریت فایل و مسیر در لینوکس با دستورات pwd، ls، cd، cp و mv

۲. مشاهده و پردازش محتوا

cat — نمایش محتوای فایل

محتویات متن داخل یه فایل رو خیلی سریع و درجا وسط ترمینال برات نمایش میده. واسه فایل‌های کوتاه مثل فایل تنظیمات کوچک عالیه، ولی اگه فایلت خیلی طولانیه بهتره بری سراغ ابزار less تا محیط ترمینالت شلوغ‌پلوغ و به‌هم‌ریخته نشه.
آدرس فایل رو جلوش به این صورت بذار:

cat /etc/hostname

تمام خطوط متنی فایل روی صفحه برات نشون داده می‌شن.

less — مشاهده فایل‌های طولانی

فایل‌های متنی سنگین و بزرگ رو خیلی تمیز و صفحه‌به‌صفحه جلوت میذاره بدون اینکه تغییری توشون ایجاد کنه. پرکاربردترین جا واسه این ابزار، خوندن و بررسی لاگ‌های سیستمه.
مسیر لاگ رو جلوش اینطوری تنظیم کن:

less /var/log/syslog

توی این محیط می‌تونی با کلیدهای جهت‌نما بالا و پایین بری، با زدن علامت اسلش (/) دنبال کلمه خاصی بگردی و هر وقت هم خواستی خارج شی کافیه کلید q رو روی کیبورد بزنی.

head — نمایش ابتدای فایل

کارش اینه که چند خط اول یه فایل رو جدا کنه و بهت نشون بده. زمانی به کارت میاد که فقط می‌خوای سریع ساختار یا خطوط ابتدایی یه فایل رو نگاه بندازی.
فایل مورد نظرت رو اینطوری بنویس:

مثلاً:

head /var/log/syslog

البته یادت باشه بودن این لاگ به نوع سیستم لینوکست بستگی داره. واسه اینکه تعداد خطوط رو خودت مشخص کنی، مثلاً ۲۰ خط اول، اینطوری بنویس:

head -n 20 /var/log/syslog

اگه عدد ندی، به صورت پیش‌فرض ۱۰ خط اول فایل رو برات جدا می‌کنه.

tail — نمایش انتهای فایل

برعکس قبلی، این ابزار چند خط آخر فایل رو برات بیرون می‌کشه. واسه دیدن آخرین اتفاقات و رویدادهای لاگ سرور فوق‌العاده کاربردیه.
تستش رو با این خط شروع کن:

tail /var/log/syslog

اگه می‌خوای لاگ رو زنده دنبال کنی و هر اتفاق جدیدی افتاد همون لحظه ببینی، بزن:

tail -f /var/log/syslog

با این کار خروجی مدام با خط‌های جدید آپدیت میشه و واسه بیرون اومدن از این حالت زنده هم کافیه Ctrl+C رو بگیری.

nano — ویرایش فایل در ترمینال

یه ویرایشگر متنی خیلی ساده و بی‌دردسر واسه تغییر دادن و نوشتن داخل فایل‌هاست. بیشتر واسه ادیت کردن فایل‌های کانفیگ و تنظیمات به کار میره. فقط یه نصیحت فنی: قبل از دست زدن به فایل‌های حساس سیستم، حتماً یه بک‌آپ از نسخه قبلی داشته باش.
فایل رو با این دستور باز کن:

nano test.conf

وقتی کار ادیت تموم شد، واسه ذخیره کردن کلیدهای Ctrl+O و واسه خروج هم Ctrl+X رو بزن.

۳. جست‌وجو و پردازش متن

find — پیدا کردن فایل‌ها و پوشه‌ها

فایل‌ها و پوشه‌ها رو بر اساس فاکتورهایی مثل اسم، نوع یا زمان تغییراتشون برات پیدا می‌کنه. وقتی آدرس یه فایل رو گم کردی یا دنبال یه سری فایل با ویژگی خاص می‌گردی عالیه. فقط حواست باشه سرچ کردن کل سیستم ممکنه پردازش رو سنگین کنه، پس تا جایی که می‌تونی مسیر سرچ رو محدودتر کن.
فرمول سرچ رو اینطوری بنویس:

find /var/log -name "*.log"

لیست آدرس تمام فایل‌هایی که با الگوی تو جور دربیان روی صفحه نشون داده می‌شن.

grep — جست‌وجوی متن یا الگو

یه کلمه یا عبارت مشخص رو داخل یه فایل یا خروجی یه دستور دیگه برات سرچ می‌کنه. اگه برات فرقی نمی‌کنه حروف بزرگ باشن یا کوچک، می‌تونی از فلگ -i استفاده کنی.
کلمه هدف و آدرس فایل رو اینطوری بنویس:

grep "error" /var/log/app.log

تمام خطوطی که کلمه error توشون وجود داره برات جدا میشن و میان روی صفحه.
یادت باشه اگه هیچی نشون نداد، یعنی اون کلمه پیدا نشده؛ پس لزوماً به این معنی نیست که سیستم هیچ مشکلی نداره.

wc — شمارش خطوط، کلمات و کاراکترها

خط‌ها، کلمه‌ها یا حجم بایت‌های یه فایل رو برات حساب می‌کنه و می‌شمره.
واسه آمار گرفتن از تعداد خطوط این آپشن رو بذار:

wc -l /var/log/app.log

یه عدد بهت میده، مثلاً اگه نوشت۲۵۰ یعنی اون فایل کلاً ۲۵۰ خط متن توش داره.

sort — مرتب‌سازی خروجی

خط‌های داخل یه فایل یا خروجی یه دستور رو به ترتیب حروف الفبا یا حروف منظم می‌کنه.
فایل مورد نظرت رو اینطوری بهش بده:

sort users.txt

یه نکته کوچک: اگه محتوای فایلت عددی هست و می‌خوای اعداد رو درست مرتب کنه، حتماً باید آپشن -n رو جلوش بذاری.

uniq — مدیریت خطوط تکراری

خط‌های تکراری که پشت سر هم اومدن رو برات حذف می‌کنه یا آمار تعداد تکرارشون رو میده. حواست باشه این ابزار فقط تکرارهای چسبیده به هم رو می‌فهمه، واسه همین معمولاً اول خروجی رو با sort مرتب می‌کنن و بعد میدن به این.
دوتا دستور رو با پایپ اینطوری به هم وصل کن:

sort users.txt | uniq -c

هر خط رو همراه با تعداد دفعاتی که تکرار شده کنارش بهت نشون میده.

cut — استخراج بخش‌هایی از متن

یه بخش مشخص از هر خط، مثلاً یه ستون خاص از اطلاعات رو برات جدا می‌کنه و می‌کشه بیرون. وقتی خروجی یه فایل ساختار منظمی داره و تو فقط به یه قسمت خاص از اون دیتا نیاز داری به کارت میاد.
جداکننده و شماره ستون رو اینطوری مشخص کن:

cut -d: -f1 /etc/passwd

توی این مثال، بخش اول هر خط یعنی لیست نام کاربری کل سیستم رو برات جدا می‌کنه و نمایش میده.

مشاهده و جست‌وجوی محتوای فایل‌های لینوکس با cat، tail و grep

۴. بررسی وضعیت سیستم و منابع

uname — اطلاعات سیستم و کرنل (Kernel)

مشخصات پایه‌ای مثل نام کرنل، اسم سیستم، نسخه کرنل و معماری سخت‌افزارت رو بهت نشون میده. البته اگه می‌خوای نام دقیق توزیع لینوکست رو بفهمی ابزارهای دیگه‌ای مثل os-release دقیق‌ترن.
برای گرفتن آمار کامل این عبارت رو بزن:

uname -a

اطلاعات فنی درباره هسته سیستم و معماری سخت‌افزاری رو روی ترمینال برات نشون می‌ده.

hostname — نام سیستم

اسم یا همون هاب نامی که واسه سیستم ست شده رو نمایش میده و توی یه سری سیستم‌ها امکان تغییرش رو هم داری. توی لینوکس‌های جدید معمولاً واسه مدیریت این کار از ابزار hostnamectl استفاده میشه. وقتی چندتا سرور داری و می‌خوای مطمئن شی اشتباهی روی سیستم بغلی دستور وارد نمی‌کنی، حتماً با این کار اسم سرور رو چک کن.
کافیه بنویسی:

hostname

اسم سرور رو برات می‌نویسه، مثلاً: web-server-01.

uptime — مدت فعالیت و Load

بهت میگه سرور از کی تا حالا روشنه و اوضاع میانگین بار سیستم یا همون Load Average چطوره.
دستور رو به این صورت وارد کن:

uptime

مدت زمان روشن بودن ماشین و وضعیت لود سیستم رو در بازه‌های ۱، ۵ و ۱۵ دقیقه گذشته بهت نشون میده.
یادت باشه واسه تحلیل این عدد، حتماً باید تعداد هسته‌های سی‌پی‌یو و نوع کار سرور رو هم مد نظر داشته باشی.

free — وضعیت RAM و Swap

آمار دقیق حافظه رم و حافظه مجازی (Swap) رو میاره جلوی چشمت.
واسه اینکه اعداد رو به زبان جی‌بی و مگابایت قابل فهم نشون بده اینطوری بنویس:

free -h

میزان رم کل، مصرف شده، فضای آزاد و بافر رو برات دسته‌بندی می‌کنه.
یه نکته فنی: اگه دیدی بخش free کمه نترس؛ لینوکس بخش زیادی از رم رو واسه سرعت بیشتر سیستم به عنوان کش استفاده می‌کنه و این به معنی کمبود رم نیست.

df — فضای فایل‌سیستم

نشون میده هر کدوم از دیسک‌ها و پارتیشن‌های سرور چقدر فضای خالی و چقدر فضای پر دارن. اگه دیدی یه پارتیشن پر شده، قبل از پاک کردن هر چیزی اول باید بگردی ببینی کدوم فایل‌ها فضا رو اشغال کردن.
واسه چک کردن ظرفیت هارد این رو بزن:

df -h

حجم کل، مقدار مصرف شده، فضای آزاد باقی‌مانده و درصد استفاده از دیسک رو برات ردیف می‌کنه.

du — فضای اشغال‌شده فایل‌ها و پوشه‌ها

این ابزار مشخص می‌کنه که دقیقاً هر فایل یا پوشه چقدر از فضای دیسک رو به خودش اختصاص داده تا بتونی فایل‌های سنگین و حجیم رو پیدا کنی. واسه اینکه حجم‌ها رو به زبان مگابایت و گیگابایتِ قابل فهم ببینی، این‌طوری واردش کن:

du -sh /var/log

نتیجه نهایی: حجم کل اون پوشه و تمام فایل‌های داخلش رو خیلی تمیز برات محاسبه می‌کنه و روی صفحه نشون میده.
بهترین زمان استفاده: معمولاً بعد از df سراغش میایم؛ یعنی دقیقاً وقتی می‌دونی هارد پر شده و حالا می‌خواید مچ اون پوشه‌ای که کل فضا رو بلعیده بگیری.
حواست باشه df فضای مصرفی رو در سطح کل دیسک و فایل‌سیستم گزارش میده، اما du تک‌تک پوشه‌ها و فایل‌ها رو متراژ می‌کنه؛ واسه همین برای پیدا کردن عامل اصلی پر شدن دیسک، اول با df آمار کلی رو می‌گیرن و بعد با du جزئیات رو شخم می‌زنن.

lscpu — اطلاعات CPU

مشخصات کامل پردازنده مثل معماری ساخت، تعداد سی‌پی‌یوهای شناسایی شده، هسته‌های واقعی و ترد‌های منطقی رو برات رو می‌کنه. واسه شناخت دقیق سخت‌افزار سیستم و چک کردن ظرفیت پردازش سرور به کارت میاد.
کافیه این عبارت رو توی ترمینال اینتر کنی:

lscpu

روی صفحه چی می‌بینی؟ آمار دقیقی از مدل معماری، تعداد پردازنده‌ها، هسته‌ها و رشته‌های پردازشی سیستم جلوت ردیف میشه.

lsblk — اطلاعات دیسک‌ها و Block Deviceها

لیست دیسک‌های متصل به سرور، پارتیشن‌بندی‌ها، نوع فایل‌سیستم هر کدوم و مسیرهای اتصال یا همون Mount Pointها رو بهت نشون میده.
با این آپشن کاربردی دستورش رو جلو ببر:

lsblk -f

آخر سر چی تحویل می‌گیری؟ نام دقیق هر درایو، حجمش، نوع ساختار فایل‌سیستم و دایرکتوری که بهش وصل شده رو خیلی مرتب تماشا می‌کنی.

بررسی CPU، RAM، دیسک و Load سرور لینوکس با دستورات ترمینال

۵. پردازش‌ها و سرویس‌ها

ps — مشاهده پردازش‌ها

این دستور یه عکس فوری از کل برنامه‌های در حال اجرا رو همون لحظه برات نمایش می‌ده.

واسه وقت‌هایی به کارت میاد که دنبال یه پروسس خاص می‌گردی یا کلاً می‌خوای آمار برنامه‌های در حال اجرا رو داشته باشی.

کافیه بنویسی:

ps aux

بعد از فشرده شدن اینتر: مشخصاتی مثل شناسه پردازش یا همون PID، کاربر، میزان مصرف سی‌پی‌یو و رم و کامند پشت هر پروسس رو جلوت میذاره.
نکته: قبل از اینکه پروسس رو ببندی، حتماً چک کن ببین مال کدوم برنامه یا سرویسه تا سیستم یهو خراب نشه.

top — مانیتورینگ زنده پردازش‌ها

اوضاع سرور رو زنده و لحظه‌ای برات آپدیت می‌کنه. مثلاً وقتی سرور کند شده و می‌خوای ببینی همین الان دقیقاً کدوم برنامه داره سی‌پی‌یو یا رم رو زیادی مصرف می‌کنه، این ابزار خیلی بیشتر به کارت میاد.
وقتی مصرف منابع سرور یهو چسبیده به سقف و دنبال مقصر می‌گردی، سریع جفت پات رو بذار روی این ابزار.
فرمانش رو این‌طوری وارد کن:

top

آخر سر هم آمار منابع و پروسس‌ها مدام جلوی چشمت آپدیت می‌شن.

kill — ارسال Signal به پردازش

کارش اینه که یه پیغام یا سیگنال مشخص رو بفرسته واسه همون برنامه‌ یا پروسسی که هدف گرفتی.
از این ابزار لزوماً به نیت کشتن یا متوقف کردن اجباری یه پروسس استفاده نمی‌شه! نوع سیگناله که مشخص می‌کنه چه رفتاری باید اتفاق بیفته.
شناسه پروسس رو این‌طوری جلوش تنظیم کن:

kill -TERM 1234

این کار معمولاً پیغام خاصی روی صفحه نمیاره.

pkill — پایان‌دادن به پردازش بر اساس نام/الگو

به‌جای اینکه آی‌دی یا همون PID بدی، برنامه‌ها رو از روی اسم یا یه الگوی خاص نشونه می‌گیره.
اسم پروسس رو این‌طوری بنویس:

pkill -TERM nginx

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

systemctl — مدیریت سرویس‌های systemd

برای چک کردن اوضاع و کنترل کردن سرویس‌های پشت صحنه و سرویس‌های systemd به کار میره.
واسه دیدن اوضاع سرویس بنویس:

systemctl status nginx

جهت راه‌اندازی مجدد هم این رو وارد کن:

sudo systemctl restart nginx

نتیجه کار: وضعیت فعلی سرویس رو بهت نشون میده؛ مثلاً میگه روشنه (active)، خاموشه (inactive) یا خراب شده (failed).
اگه دیدی سرویس خراب شده یا failed بود: قدم بعدی اینه که بپری سراغ بررسی لاگ‌ها با دستور journalctl.

journalctl — مشاهده لاگ‌های systemd

گزارش‌ها و لاگ‌های مربوط به سرویس‌ها و بخش‌های مختلف systemd رو بهت نشون میده.
وقتی یه سرویس استارت نمی‌شه، ارور میده یا کارهای عجیب و غریب می‌کنه باید بری سراغش.
مثلاً برای اینکه ۵۰ رویداد آخر مربوط به سرویس Nginx رو ببینی این‌طوری واردش کن:

journalctl -u nginx -n 50

بررسی Process و سرویس‌های لینوکس با ps، top، systemctl و journalctl

۶. کاربران و مجوزها

whoami — کاربر فعلی

دقیقاً مشخص می‌کنه الان با چه کاربری وارد سیستم شدی و داری کار می‌کنی. بهتره قبل از دویدن سمت کارهای حساس، خطرناک یا اجرای دستورهای مدیریتی حتماً چکش کنی.
کافیه بنویسی:

whoami

آخر سر هم نام کاربرت رو میده، مثلاً: ubuntu.

id — اطلاعات کاربر و گروه‌ها

شناسه‌ها، گروه‌ها و تمام دسترسی‌هایی که کاربرت توش عضو هست رو نمایش می‌د‌ه. واسه این‌که مچ دسترسی‌ها و عضویت‌های گروهی یه کاربر رو روی سیستم بگیری به کارت میاد.
این عبارت رو توی ترمینال تایپ کن:

id

بعد از زدن دستور: مشخصات هویتی و گروه‌های کاربر رو روی صفحه نشون می‌ده.

who — کاربران واردشده

سشن‌ها یا همون نشست‌های فعال تمام کاربرا روی سیستم رو لیست می‌کنه. وقتی می‌خوای آمار بگیری ببینی چه کاربرهایی در حال حاضر وارد سیستم هستن و روی سرور چمبره زدن عالیه.
واسه آمار گرفتن این رو بزن:

who

همین که اینتر رو زدی معمولا: اسم کاربر، زمان دقیق لاگین و اطلاعات سشن رو بعد اجرای دستور می‌تونی ببینی.

sudo — اجرای دستور با دسترسی مدیریتی

یه دستور رو با دسترسی مدیر اصلی یا همون root اجرا می‌کنه. حواست باشه هر چی با sudo بزنی می‌تونه سیستم رو کلاً زیر و رو کنه، پس پای دستورایی که نمیشناسی اصلاً ننویسش.
دستور اصلی رو بعدش این‌طوری بنویس:

sudo systemctl restart nginx

در نهایت: خروجی کار تماماً به خود دستور بعدی بستگی داره و ممکنه واسه تایید امنیت ازت رمز بخواد.

chmod — تغییر Permission

دسترسی‌های خواندن، نوشتن و اجرای یه فایل یا پوشه رو جابه‌جا می‌کنه و تغییر میده.
کد دسترسی و اسم فایل رو این‌طوری مشخص کن:

chmod 640 config.txt

واسه چک کردنش: می‌تونی یه ls -l ساده بزنی تا دسترسی‌های جدید رو ببینی.

chown — تغییر مالکیت

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

sudo chown www-data:www-data /var/www/site

توی استفاده از این ابزار باید خیلی حواست جمع باشه چون تغییر مالکیت اشتباه ممکنه باعث بشه سرویس نتونه فایل‌های موردنیازش رو بخونه یا تغییر بده و کرش کنه.

groups — گروه‌های کاربر

تمام گروه‌هایی که کاربر داخلشون عضو هست رو برات ردیف می‌کنه. گاهاً نیاز داری کاربر عضو گروه خاصی باشه تا بتونه کاری رو جلو ببره، برای همین از این ابزار استفاده می‌کنی تا بفهمی کاربر عضو شده یا نه.
کافیه بنویسی:

groups

۷. شبکه و اتصال به سرور

ip — اطلاعات و تنظیمات شبکه

این ابزار همه کارت شبکه‌ها، آی‌پي‌ها و مسیرهای ارتباطی سیستم رو میذاره جلوت تا بتونی روشون مدیریت داشته باشی.
واسه شروع کار کافیه بنویسی:

ip addr

اگه می‌خوای مسیرها رو ببینی این رو وارد کن:

ip route

آخر سر هم یه لیست کامل از کارت‌های شبکه، آی‌پي آدرس‌ها و مسیرهای سیستم روی صفحه برات ردیف میشه.

ping — تست دسترسی شبکه

وظیفه‌ش اینه که چک کنه ببینه فلان مقصد یا سروری که می‌خوای، اصلاً به درخواست‌های تو جواب میده یا نه.
واسه فرستادن بسته‌های تستی این رو بزن:

ping example.com

همین که اینتر رو زدی: اگه ارتباط برقرار باشه، سرعت رفت و برگشت پکت‌ها و وضعیت بسته‌ها رو قشنگ می‌بینی.
اگه هیچ پیغامی نیومد: یا اون سرور کلاً خاموشه، یا فایروال مقصد درخواست‌های پینگ رو مسدود کرده.

ss — بررسی پورت‌ها و Socketها

آمار پورت‌هایی که سرویس‌ها روی آن‌ها در حال گوش‌دادن هستند؛ مثلاً واسه وقت‌هایی که می‌خوای ببینی یه برنامه روی یه پورت خاص بالا اومده و کار می‌کنه یا نه.
این عبارت رو توی ترمینال تایپ کن:

ss -tuln

چی میاد روی صفحه؟ مشخصات پورت‌ها، آدرس‌ها و وضعیت فعلی اتصال‌ها.
یه ترفند خوب: با اضافه کردن آپشن -p (مثل ss -tulnp) می‌تونی اسم برنامه‌ای که پشت هر پورت نشسته رو هم پیدا کنی، البته واسه دیدن مشخصات پردازش‌ها ممکنه دسترسی sudo ازت بخواد.

curl — ارسال درخواست و دریافت داده

یه ابزار خیلی کاربردی واسه تست کردن آدرس‌ها، وب‌سایت‌ها و اِی‌پی‌آی‌ها (API) که می‌تونی باهاش ریسپانس یا همون پاسخ اون‌ها رو بررسی کنی.

تست اولت رو با این آپشن جلو ببر:

curl -I https://example.com

یه نکته ظریف: آپشن -I بزرگ فقط اطلاعات اولیه و کد وضعیت رو می‌کشه بیرون و واسه چک کردن اوضاع HTTP خوبه، ولی کارکرد کامل صفحه رو تست نمی‌کنه.

در نهایت: هدر و کد وضعیت پاسخ HTTP رو می‌بینی. گرفتن کد 200 یعنی اصل ارتباط وصله، ولی به‌تنهایی دلیل نمیشه که کل سایتت داره بی‌نقص کار می‌کنه.
حواست باشه کارهایی مثل POST یا DELETE با curl واقعاً اطلاعات روی سرور مقصد رو تغییر میدن؛ پس قبل اجرا، مقصد رو خوب چک کن.

wget — دریافت فایل

این ابزار مثل یه دانلود منیجر خط فرمانی برات کار می‌کنه و فایل رو مستقیم از اینترنت میاره روی خود سرور.

کی به کارت میاد؟ وقتی می‌خوای یه فایل رو بدون واسطه و کاملاً مستقیم دانلود کنی.

لینک دانلود رو اینطوری جلوش قرار بده:

wget https://example.com/file.tar.gz

خروجی: وضعیت اتصال و روند دانلود نمایش داده می‌شه.

ssh — اتصال به سرور از راه دور

یه تونل امن و رمزنگاری‌شده به یه سرور دیگه در دسترست میذاره. یادت باشه وقتی وصل شدی، قبل از انجام کارهای حساس، اول چشمت رو باز کن ببین واقعاً روی سرور درستی هستی تا چیزی رو اشتباهی خراب نکنی.

مشخصات رو با این فرمت بنویس تا ارتباط برقرار بشه:

ssh [email protected]

همین که تایید شدی: اگه رمز یا کلیدت درست باشه، مستقیماً وارد محیط سرور مقصد میشی.

وقتی به مشکل خوردی: ارور Permission denied معمولاً یعنی رمز یا کلیدت اشتباست. ارور Connection refused یعنی اون‌ور سرویس SSH روشن نیست یا پورتش فرق داره و ارور Connection timed out هم یعنی شبکه بازی درآورده یا فایروال جلوت دیوار کشیده.

traceroute — بررسی مسیر شبکه

کروکی و مسیر تقریبی حرکت بسته‌های اینترنت رو تا رسیدن به مقصد برات نقاشی می‌کنه؛ واسه همین برای بررسی‌های اولیه شبکه و پیدا کردن سرنخ درباره دلیل کندی یا قطعی ارتباط خیلی به کار میاد.

آدرس سایت یا سرور رو اینطوری جلوش بنویس:

traceroute example.com

نمای آخر کار: ایستگاه‌های مسیر و سرعت پاسخ دادنشون رو بهت نشون میده.

یه یادآوری مهم: اگه بعضی جاها ستاره زد و جواب نداد اصلاً نترس؛ چون خیلی از دستگاه‌ها و روترها اصلاً به این دستور جواب نمی‌دن و بسته‌ها رو بلاک می‌کنن، پس این اتفاق لزوماً به معنی قطع بودن مسیر نیست.

بررسی شبکه و اتصال به سرور لینوکس با دستورات ip، ping، ss و ssh

۸. نصب و مدیریت نرم‌افزار

apt — مدیریت بسته‌ها (پکیج‌ها) توی دبیان و اوبونتو

برای نصب، حذف و کلاً مدیریت برنامه‌ها استفاده میشه. فقط قبل از اینکه پکیج‌های حساس رو روی سرور اصلی تغییر بدی، حتماً وابستگی‌هاش (Dependencies) رو بررسی کن تا بقیه سرویس‌ها به مشکل نخورن.
هر وقت بخوای یه نرم‌افزار جدید روی اوبونتو یا دبیان بریزی یا قبلی‌ها رو مدیریت کنی این دستور رو بزن.
مثلاً اول از همه لیست مخازن رو به‌روز می‌کنی:

sudo apt update

البته دستور بالا فقط لیست برنامه‌ها و مخازن (Repositoryها) رو آپدیت می‌کنه و خودش به تنهایی چیزی رو ارتقا نمیده.
واسه نصب یه برنامه مثل وب‌سرور Nginx هم این دستور رو می‌زنی:

sudo apt install nginx

در آخر: وضعیت مخازن، لیست پکیج‌های پیش‌نیاز، حجم دانلود و در نهایت نتیجه نصب رو روی صفحه می‌بینی.

dnf — مدیریت پکیج‌ها توی فدورا و RHEL

دقیقاً مثل apt کارش نصب و مدیریت برنامه‌هاست، اما مخصوص توزیع‌هایی مثل فدورا (Fedورا) و سیستم‌های برپایه RHEL طراحی شده.
زمان استفاده: وقتی سرورت از این سیستم‌عامل‌ها استفاده می‌کنه و ابزار dnf مدیریت پکیج اصلیته.
نحوه اجرا:
مثلاً واسه نصب Nginx این دستور رو وارد می‌کنی:

sudo dnf install nginx

خروجی نمونه:
لیست برنامه‌های مورد نیاز، وابستگی‌ها و حجم فایل‌ها رو پردازش می‌کنه و در نهایت نتیجه نصب رو روی صفحه بهت نشون میده.

یه نکته رو یادت نره: قبل از زدن دستور، حواست به سیستم‌عامل سرورت باشه؛ چون توزیع لینوکست حتماً باید از dnf پشتیبانی کنه تا این دستور کار کنه.

۹. زمان بندی و اجرای خودکار

cron — اجرای زمان‌بندی‌شده و اتوماتیک کارها (Jobها)

کرون (cron) یه سازوکار باحاله واسه اینکه یه سری دستور یا جاب رو بذاریروی حالت خودکار تا طبق یه برنامه زمانی مشخص خودشون اجرا بشن.
کی به کار میاد؟ مثلاً وقتی می‌خواید سرور خودش هر روز بکاپ بگیره، یا هر چند وقت یک‌بار فایل‌های موقتی (Temporary) رو پاک‌سازی کنه تا هارد پر نشه.
کافیه این دستور رو بزنی:

systemctl status cron

وضعیت خود سرویس کرون رو بهت نشون میده که اگه همه‌چیز ردیف باشه، مینویسه active (running).
البته حواست باشه، صرفاً فعال بودن خودِ سرویس کرون به این معنی نیست که کارهای تو هم دارن درست اجرا میشن؛ باید خودِ زمان‌بندی‌ها و لاگ‌ها رو هم چک کنی. یه نکته دیگه هم اینکه توی دبین و اوبونتو اسم این سرویس معمولاً همون cron هست، ولی توی یه سری توزیع‌های دیگه لینوکس ممکنه اسمش crond باشه.

crontab — واسه تعریف و مدیریت کارهای زمان‌بندی‌شده (Cron Jobs)

واسه اینکه یه سری جاب (Job) تعریف کنید تا طبق یه برنامه و زمان‌بندی مشخص، خودکار اجرا بشن.
واسه ادیت یا نوشتن یه کار جدید می‌زنی:

crontab -e

واسه دیدن لیست کارهای فعلیتون هم می‌زنی:

crontab -l

مثلاً این خط رو نگاه کن:

0 2 * * * /home/user/backup.sh

معنیش اینه که این جاب قرار هر روز راس ساعت ۲ شب خودکار اجرا بشه.

خروجی‌ش چیه؟ وقتی دستور crontab -l رو می‌زنی، تمام زمان‌بندی‌هایی که از قبل ثبت کردید رو روی صفحه بهت نشون میده.

at — واسه اجرای یه کار تو یه زمان مشخص (معمولاً هم فقط یک‌بار)

واسه اینکه یه دستور یا جاب (Job) رو بندازید برای یه ساعت یا زمان خاص.
وقتی قرار نیست اون کار مدام تکرار بشه و فقط می‌خوای یه بار، اونم سر یه ساعت مشخص اجرا بشه ازش استفاده کن.
مثلاً می‌زنی:

at 02:00

بعدش دستوری که می‌خوای رو وارد می‌کنید و آخرش با گرفتن دکمه‌های Ctrl+D ثبتش می‌کنی.
البته حواست باشه واسه اینکه دستور at کار کنه، باید بسته‌ش روی سیستم نصب باشه و سرویس atd هم فعال باشه.
خروجی‌ش چیه؟ معمولاً یه Job ID (شناسه کار) بهت میده و زمان دقیق اجرای اون جاب رو روی صفحه برات می‌نویسه.

مدیریت پکیج و اجرای زمان‌بندی‌شده دستورات لینوکس با apt، dnf و cron

اشتباهات رایج و نکات مهم در مدیریت سرور

کار با ترمینال فقط این نیست که چارتا دستور حفظ کنید؛ روی سرور، یه دست‌انداز یا دستور اشتباه می‌تونه کل فایل‌ها، سرویس‌ها یا حتی دسترسی خودتون به سیستم رو هوا ببره. واسه همین قبل از اینکه دست‌به‌کار بشید و دستورای حساس رو بزنید، این چندتا نکته رو حتماً گوشه ذهنتون داشته باشید:

  • دستورایی که نمی‌شناسید رو اصلاً با sudo اجرا نکنید. قبل از اینکه به یه دستور دسترسی ادمین (مدیریتی) بدید، مطمئن بشید که دقیقاً قراره چیکار کنه و کجای سیستم رو دست‌کاری می‌کنه.
  • قبل از اینکه اینترِ دستورای rm، mv و cp رو بزنید، مسیر و مقصد رو دوبار چک کنید. یه اشتباه کوچیک توی آدرس‌دهی ممکنه باعث پاک شدن، جابه‌جایی یا رو‌نویسی (اوررایت) فایل‌های حیاتی بشه.
  • دستورای حساس رو بی‌گدار به آب نزنید و روی سرور اصلی (Production) تست نکنید. تغییر دادن تنظیمات شبکه، دسترسی‌ها (Permission) یا ری‌استارت کردن یه سرویس، می‌تونه راحت سرور رو بخوابونه یا کارش رو مختل کنه. برای تغییرات بزرگ، اول عواقبش رو بسنجید و حتماً بکاپ یا یه راه برگشت واسه خودتون بذارید.
  • تا یه برنامه به مشکل خورد، فوری نرید سراغ دستور kill -9. اول ببینید اصلاً قضیه چیه و چرا اون پروسس گیر کرده؛ اگه مجبور شدید، اول با سیگنال‌های ملایم‌تر امتحان کنید، چون SIGKILL بی‌رحمه و اصلاً به برنامه فرصت نمیده کارهای پایانیش (Cleanup) رو انجام بده و یهو نصفه‌کاره قطعش می‌کنه.
  • خروجی دستورها و ارورها رو سرسری رد نکنید. خیلی وقت‌ها همین پیامایی که میان روی صفحه، دارن داد می‌زنن که مشکل از دسترسیه، مسیر رو اشتباه زدید، پورت پر شده یا تنظیمات ایراد داره و قشنگ راه رو بهتون نشون میدن.

تجربه شخصی

توی کار با ترمینال، بعضی خطاها خیلی بیشتر از بقیه تکرار می‌شن؛ مثلاً پیش اومده موقع کار با یک فایل یا مسیر با Permission denied مواجه بشیم یا به‌خاطر اشتباه در آدرس فایل، No such file or directory بگیریم. بعضی وقت‌ها هم یک دستور به‌خاطر نصب نبودن یا اشتباه وارد کردن اسمش با Command not found روبه‌رو می‌شه. وقتی هم یک سرویس بالا نمیاد، بررسی Portها با ss و Processها با ps معمولاً سرنخ خوبی برای پیدا کردن مشکل می‌ده؛ مثلاً ممکنه مشخص بشه Port قبلاً توسط یک سرویس دیگه اشغال شده.

نتیجه گیری

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

این پست را به اشتراک بگذارید
سوالات متداول

برای شروع، دستورهایی مثل pwd، ls، cd، mkdir، cp، mv، rm و cat کاربرد زیادی دارن. بعد از این‌ها می‌تونید سراغ دستورهای مربوط به Process، سرویس‌ها، شبکه و مدیریت Packageها برید.

نه. sudo به دستور دسترسی مدیریتی می‌ده و به همین دلیل بهتره فقط برای دستورهایی استفاده بشه که واقعاً به این سطح دسترسی نیاز دارن. قبل از اجرای یک دستور ناشناس با sudo، حتماً کاری که انجام می‌ده رو بررسی کنید.

اول متن خطا رو بخونید؛ خیلی وقت‌ها خود خطا سرنخ خوبی می‌ده. بعد مسیر فعلی، نام دستور، Permission و در صورت نیاز نصب بودن Package مربوط به اون رو بررسی کنید.

0

دیدگاه و پرسش