TürkiyeVPS

دستورات پایه لینوکس برای تازه‌کارها (همراه با مثال)

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

10 دقیقه مطالعه

وقتی یک VPS اجاره می‌کنید، به احتمال زیاد سرور را به جای رابط گرافیکی از خط فرمان مدیریت خواهید کرد. با اینکه در نگاه اول ترسناک به نظر می‌رسد، بیشتر کارهای روزمره با بیست سی دستور انجام می‌شود. در این راهنما دستوراتی را که روی Ubuntu 24.04 بیشترین کاربرد را برایتان دارند، زمان استفاده از آن‌ها و نکاتی را که باید به آن‌ها توجه کنید توضیح می‌دهیم. اگر نمی‌دانید چگونه به سرور متصل شوید، ابتدا مقاله SSH چیست را بخوانید.

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

نگاه اول به خط فرمان

پس از اتصال، سطری شبیه به این می‌بینید:

root@sunucu:~#

در اینجا root نام کاربری، sunucu نام دستگاه، ~ پوشه‌ای که در آن هستید (پوشه خانگی شما) و # نشان می‌دهد که با دسترسی مدیر وارد شده‌اید. برای کاربران عادی این علامت $ است.

اگر نحوه استفاده از یک دستور را فراموش کردید، دو کمک‌کننده دارید:

ls --help
man ls

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

جابه‌جایی بین فایل‌ها و پوشه‌ها

pwd                 # şu an hangi klasördesiniz
ls                  # klasördeki dosyaları listeler
ls -lah             # gizli dosyalar dahil, boyutlar okunaklı biçimde
cd /var/www         # belirtilen klasöre geçer
cd ..               # bir üst klasöre çıkar
cd ~                # ev dizinine döner
cd -                # bir önceki klasöre döner
  • pwd: نشان می‌دهد الان در کدام پوشه هستید
  • ls و ls -lah: فایل‌های پوشه را فهرست می‌کند؛ نسخه دوم فایل‌های مخفی را هم با اندازه‌های خوانا نشان می‌دهد
  • cd: به پوشه مشخص‌شده، یک پوشه بالاتر (..)، پوشه خانگی (~) یا پوشه قبلی (-) می‌رود

در لینوکس مسیر فایل‌ها با / شروع می‌شود و به حروف بزرگ و کوچک حساس است: Site.txt و site.txt دو فایل جداگانه‌اند. فایل‌هایی که نامشان با نقطه شروع می‌شود (مانند .env و .bashrc) مخفی هستند و فقط با ls -a دیده می‌شوند.

پوشه‌هایی که زیاد با آن‌ها سروکار خواهید داشت:

پوشه چه چیزی در آن است؟
/etc فایل‌های تنظیمات سیستم و سرویس‌ها
/var/log فایل‌های گزارش (لاگ)
/var/www جایی که وب‌سایت‌ها معمولاً قرار دارند
/home پوشه‌های خانگی کاربران عادی
/root پوشه خانگی کاربر root
/tmp فایل‌های موقت (ممکن است با راه‌اندازی مجدد پاک شوند)

ساخت، کپی، جابه‌جایی و حذف فایل

mkdir yedekler                  # klasör oluşturur
mkdir -p proje/static/css       # iç içe klasörleri tek seferde oluşturur
touch notlar.txt                # boş dosya oluşturur
cp ayar.conf ayar.conf.yedek    # dosyayı kopyalar
cp -r site/ site-yedek/         # klasörü içindekilerle kopyalar
mv eski.txt yeni.txt            # yeniden adlandırır
mv dosya.zip /tmp/              # başka bir klasöre taşır
rm notlar.txt                   # dosyayı siler
rm -r eski-klasor/              # klasörü içindekilerle siler

به ترتیب: mkdir پوشه می‌سازد (با -p پوشه‌های تودرتو را یکجا)، touch فایل خالی می‌سازد، cp فایل را کپی می‌کند (با -r پوشه را همراه محتوایش)، mv نام را تغییر می‌دهد یا فایل را به پوشه دیگری منتقل می‌کند و rm فایل را حذف می‌کند (با -r پوشه را همراه محتوایش).

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

مشاهده و ویرایش محتوای فایل

cat dosya.txt          # tüm içeriği ekrana basar
less /var/log/syslog   # uzun dosyaları sayfa sayfa gösterir (q ile çıkış)
head -n 20 dosya.txt   # ilk 20 satır
tail -n 50 dosya.txt   # son 50 satır
tail -f /var/log/nginx/access.log   # dosyaya eklenen satırları canlı izler

cat کل محتوا را روی صفحه چاپ می‌کند، less فایل‌های طولانی را صفحه به صفحه نشان می‌دهد (خروج با q)، head و tail سطرهای ابتدا و انتهای فایل را نمایش می‌دهند و tail -f سطرهایی را که به فایل اضافه می‌شوند به صورت زنده دنبال می‌کند.

ساده‌ترین ویرایشگر برای تازه‌کارها nano است:

nano /etc/hosts

پس از تغییر، با Ctrl+O و Enter ذخیره و با Ctrl+X خارج می‌شوید. یادگیری vim در آینده هم مفید است، اما برای روز اول nano کافی است.

جستجو: find و grep

find /var/www -name "*.php"           # adı .php ile biten dosyaları bulur
find /var/log -size +100M             # 100 MB'tan büyük dosyaları bulur
grep "error" /var/log/nginx/error.log # dosyada "error" geçen satırları gösterir
grep -ri "veritabani" /etc/myapp/     # klasörde büyük-küçük harf duyarsız arar

find فایل‌ها را بر اساس نام یا اندازه پیدا می‌کند (مثلاً فایل‌هایی که به .php ختم می‌شوند یا بزرگ‌تر از ۱۰۰ مگابایت هستند) و grep سطرهایی را نشان می‌دهد که عبارت موردنظر در آن‌ها آمده است؛ با -ri در کل پوشه و بدون حساسیت به حروف بزرگ و کوچک جستجو می‌کند.

می‌توانید دستورات را با پایپ (|) به هم وصل کنید. خروجی یک دستور ورودی دستور دیگر می‌شود:

ps aux | grep nginx
cat access.log | grep "404" | wc -l

مثال دوم تعداد خطاهای 404 را در گزارش دسترسی می‌شمارد.

کاربران، sudo و مجوزهای فایل

به جای انجام همه کارها با root، ساختن یک کاربر با دسترسی مدیریتی برای خودتان امن‌تر است:

adduser ahmet
usermod -aG sudo ahmet

این کاربر ابتدای دستوراتی که به دسترسی مدیر نیاز دارند sudo اضافه می‌کند: sudo apt update.

عبارت‌هایی مانند -rwxr-xr-- در خروجی ls -l مجوزهای فایل را نشان می‌دهند. گروه‌های سه‌تایی به ترتیب برای مالک، گروه و دیگران هستند؛ r یعنی خواندن، w نوشتن و x اجرا.

chmod 644 index.html          # sahibi okur/yazar, diğerleri yalnızca okur
chmod 755 betik.sh            # sahibi her şeyi yapar, diğerleri okur ve çalıştırır
chmod +x betik.sh             # dosyayı çalıştırılabilir yapar
chown www-data:www-data -R /var/www/site   # sahipliği web sunucusu kullanıcısına verir
  • chmod 644: مالک می‌خواند و می‌نویسد، دیگران فقط می‌خوانند
  • chmod 755: مالک همه کار می‌کند، دیگران می‌خوانند و اجرا می‌کنند
  • chmod +x: فایل را اجرایی می‌کند
  • chown: مالکیت را به کاربر وب‌سرور می‌دهد

ممکن است دادن chmod 777 برای حل یک مشکل وسوسه‌انگیز باشد، اما این کار فایل را برای همه قابل نوشتن می‌کند و حفره امنیتی ایجاد می‌کند. راه‌حل درست معمولاً اصلاح مالکیت (chown) است.

مدیریت بسته‌ها (apt)

در Ubuntu و Debian نرم‌افزارها با apt نصب می‌شوند:

sudo apt update                 # paket listelerini yeniler
sudo apt upgrade -y             # kurulu paketleri günceller
sudo apt install nginx          # paket kurar
sudo apt remove nginx           # paketi kaldırır
apt search htop                 # depoda paket arar

apt update فهرست بسته‌ها را تازه می‌کند، apt upgrade بسته‌های نصب‌شده را به‌روز می‌کند، install و remove بسته را نصب و حذف می‌کنند و search در مخزن جستجو می‌کند. پیش از نصب همیشه apt update را اجرا کنید؛ در غیر این صورت ممکن است به خاطر فهرست قدیمی بسته‌ها خطای «پیدا نشد» بگیرید.

سرویس‌ها و فرایندها

برنامه‌هایی که در پس‌زمینه اجرا می‌شوند، مانند وب‌سرور و پایگاه داده، با systemctl مدیریت می‌شوند:

systemctl status nginx      # servis çalışıyor mu?
sudo systemctl restart nginx
sudo systemctl enable nginx # açılışta otomatik başlasın

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

برای دیدن فرایندهای در حال اجرا و در صورت نیاز متوقف کردن آن‌ها:

ps aux | grep python
kill 12345          # PID'i 12345 olan süreci kibarca durdurur
kill -9 12345       # yanıt vermiyorsa zorla durdurur

kill فرایندی را که PID آن 12345 است به‌آرامی متوقف می‌کند و kill -9 اگر پاسخ ندهد آن را به اجبار می‌بندد.

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

اطلاعات سیستم

uname -a          # çekirdek sürümü
lsb_release -a    # dağıtım sürümü (ör. Ubuntu 24.04 LTS)
uptime            # sunucu ne zamandır açık, yük ortalaması
free -h           # RAM kullanımı
df -h             # disk kullanımı
ip a              # ağ arayüzleri ve IP adresleri

این دستورات به ترتیب نسخه کرنل، نسخه توزیع (مثلاً Ubuntu 24.04 LTS)، مدت روشن بودن سرور و میانگین بار، مصرف RAM، مصرف دیسک و رابط‌های شبکه و آدرس‌های IP را نشان می‌دهند.

آرشیو و فشرده‌سازی: tar و zip

برای پشتیبان‌گیری از یک پوشه یا انتقال آن به سرور دیگر، جمع کردن آن در یک فایل کار را آسان می‌کند. رایج‌ترین قالب در لینوکس .tar.gz است:

tar -czf site-yedek.tar.gz /var/www/site   # klasörü sıkıştırarak arşivler
tar -tzf site-yedek.tar.gz                 # arşivin içeriğini listeler
tar -xzf site-yedek.tar.gz -C /tmp/        # arşivi /tmp klasörüne açar

معنای حروف: c ساختن (create)، x استخراج (extract)، t فهرست کردن، z فشرده‌سازی با gzip و f نام فایل. اگر قرار است فایل را با کاربران ویندوز به اشتراک بگذارید، zip مناسب‌تر است:

sudo apt install -y zip unzip
zip -r site.zip /var/www/site
unzip site.zip -d /tmp/site

دستورات شبکه و دانلود

برای اینکه ببینید سرور به اینترنت دسترسی دارد یا نه، یک سایت پاسخ می‌دهد یا نه، یا برای دانلود یک فایل، از این‌ها استفاده می‌کنید:

ping -c 4 google.com                    # bağlantıyı test eder, 4 paket gönderir
curl -I https://ornek.com               # sitenin yalnızca HTTP başlıklarını getirir
wget https://ornek.com/dosya.tar.gz     # dosyayı bulunduğunuz klasöre indirir
ss -tulpn                               # hangi portları hangi programlar dinliyor

ping اتصال را با ارسال ۴ بسته آزمایش می‌کند، curl -I فقط سربرگ‌های HTTP سایت را می‌آورد، wget فایل را در پوشه فعلی دانلود می‌کند و ss -tulpn نشان می‌دهد کدام برنامه‌ها به کدام پورت‌ها گوش می‌دهند.

ss -tulpn اهمیت ویژه‌ای دارد: اگر وب‌سروری کار نمی‌کند، از اینجا می‌بینید که آیا پورت واقعاً در حال شنود است یا برنامه دیگری آن پورت را اشغال کرده است. برای اینکه بدانید یک دامنه به کدام IP اشاره می‌کند، دستور dig ornek.com +short هم به کار می‌آید؛ این موضوع را در مقاله DNS چیست به تفصیل توضیح داده‌ایم.

عادت‌های کوچکی که در وقت صرفه‌جویی می‌کنند

  • history دستورات قبلی شما را با شماره فهرست می‌کند. با نوشتن !42 می‌توانید دستور شماره ۴۲ را دوباره اجرا کنید.
  • با Ctrl+R در تاریخچه جستجو می‌کنید: چند حرف بنویسید تا آخرین دستور منطبق ظاهر شود.
  • Ctrl+C دستور در حال اجرا را متوقف می‌کند و Ctrl+L صفحه را پاک می‌کند.
  • برای ادامه یک کار طولانی حتی در صورت قطع اتصال، از tmux استفاده کنید: با tmux یک نشست باز کنید و اگر اتصال قطع شد، دوباره متصل شوید و tmux attach را بنویسید.
  • می‌توانید دستورات را با && زنجیر کنید: sudo apt update && sudo apt upgrade -y اگر دستور اول موفق باشد، دومی را اجرا می‌کند.

قدم بعدی چیست؟

وقتی با این دستورات راحت شدید، روی محافظت از سرورتان تمرکز کنید: برای کلید SSH، فایروال و به‌روزرسانی‌های خودکار، راهنمای امنیت سرور لینوکس ما را بخوانید. اگر به دنبال سروری برای تمرین هستید، پکیج‌های VPS در TürkiyeVPS با دسترسی root ارائه می‌شوند. بدون نصب هیچ چیزی روی رایانه‌تان، می‌توانید با دکمه کنسول در پنل مشتری از طریق مرورگر متصل شوید و همین حالا این دستورات را امتحان کنید.

سوالات متداول

آیا باید دستورات لینوکس را حفظ کنم؟

خیر. دستوراتی که زیاد استفاده می‌کنید به مرور خودبه‌خود در ذهنتان می‌مانند. برای بقیه، --help، man و تکمیل خودکار با Tab کافی است. نگه داشتن یک فایل یادداشت شخصی هم مفید است.

تفاوت sudo و root چیست؟

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

آیا می‌توانم فایلی را که اشتباهی حذف کرده‌ام برگردانم؟

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

آیا این دستورات در همه توزیع‌های لینوکس کار می‌کنند؟

دستورات مربوط به فایل، جستجو، مجوزها و فرایندها تقریباً در همه توزیع‌ها یکسان هستند. مدیر بسته متفاوت است: در Ubuntu/Debian از apt و در AlmaLinux/Rocky Linux از dnf استفاده می‌شود.