اگر مدیر سایت هستید و سرور شما روی لینوکس اجرا میشود، احتمالاً بارها پیش آمده که برای رفع یک مشکل ساده مجبور شدهاید به پنل مدیریت هاست مراجعه کنید یا حتی با پشتیبانی تماس بگیرید. اما حقیقت این است که تسلط بر دستورات لینوکس نهتنها سرعت کار شما را چند برابر میکند، بلکه در مواقع بحرانی — مثل حمله DDoS یا پر شدن دیسک — تنها راه نجات شماست. در این مقاله ۲۵ دستور کاربردی را با مثالهای واقعی مرور میکنیم که هر مدیر سایتی باید بلد باشد.
۱. مدیریت فایل و دایرکتوری
شروع کار با فایلها ساده است، اما ترکیب درست این دستورات میتواند زمان شما را بهشدت کاهش دهد.
ls و ll — مشاهده فایلها
دستور ls ابتداییترین ابزار است، اما با فلگهای مناسب میتوانید اطلاعات دقیقتری بگیرید:
ls -lah /var/www/html
این دستور همه فایلها را با حجم انسانی (مثل 4.2K) و تاریخ تغییر نشان میدهد. گزینه -t را اضافه کنید تا جدیدترین فایلها اول بیایند: ls -lt.
find — جستجوی پیشرفته
فرض کنید یک فایل لاگ بزرگ پیدا کردهاید که دیسک را پر کرده است:
find /var/log -type f -size +100M -exec ls -lh {} \;
این دستور همه فایلهای بالای ۱۰۰ مگابایت در /var/log را با حجمشان لیست میکند. برای حذف فایلهای قدیمیتر از ۳۰ روز در یک دایرکتوری موقت:
find /tmp -type f -mtime +30 -delete
tar — بکاپ و فشردهسازی
برای بکاپ گرفتن از کل دایرکتوری سایت:
tar -czvf backup.tar.gz /var/www/html
و برای استخراج در مقصد جدید:
tar -xzvf backup.tar.gz -C /home/user/restore
اشتباه رایج: فراموش کردن فلگ -C باعث میشود فایلها در دایرکتوری فعلی استخراج شوند و ساختار پوشهها به هم بریزد.
۲. مدیریت فرایندها
وقتی سایت شما کند است، اولین قدم بررسی فرایندهای در حال اجراست.
ps و top — مشاهده فرایندها
برای دیدن همه فرایندهای یک کاربر خاص:
ps -u www-data -o pid,%cpu,%mem,cmd
دستور top نمای زنده میدهد. اما برای خروجی یکباره که قابل اسکریپتنویسی باشد، از top -bn1 استفاده کنید. اگر میخواهید فقط ۵ فرایند پرمصرف را ببینید:
top -bn1 | head -20 | tail -10
kill و killall — پایان دادن به فرایند
اگر یک فرایند PHP-FPM قفل شده است، ابتدا PID را پیدا کنید:
pgrep -f "php-fpm: pool"
سپس با سیگنال نرم (SIGTERM) بکشید:
kill -15 12345
اگر کشته نشد، سیگنال سخت (SIGKILL) را امتحان کنید:
kill -9 12345
نکته مهم: همیشه اول با -15 شروع کنید تا فرایند فرصت پاکسازی داشته باشد. استفاده بیرویه از -9 میتواند به دیتابیس آسیب بزند.
systemctl — مدیریت سرویسها
در توزیعهای مدرن (Ubuntu 16.04+، CentOS 7+) برای مدیریت سرویسها:
systemctl restart nginx
systemctl status mysql
برای فعال کردن سرویس در بوت:
systemctl enable --now redis-server
۳. مدیریت شبکه
مشکلات شبکه شایعترین دلیل از کار افتادن سایتهاست. این دستورات را حتماً بلد باشید.
ss — بررسی پورتها و اتصالات
برای دیدن اینکه چه کسی به پورت ۸۰ (HTTP) متصل است:
ss -tunap | grep :80
برای شمارش تعداد اتصالات فعال به پورت ۴۴۳ (HTTPS):
ss -tn state established '( dport = :443 )' | wc -l
این دستور در تشخیص حملات SYN flood بسیار کاربردی است.
curl — تست HTTP
برای بررسی هدرهای پاسخ سرور:
curl -I https://example.com
برای اندازهگیری زمان پاسخ کامل:
curl -o /dev/null -s -w "time_total: %{time_total}s\n" https://example.com
اگر میخواهید ببینید درخواست از کدام IP ارسال شده است:
curl -v https://example.com 2>&1 | grep "Connected"
ping و traceroute — عیبیابی اتصال
برای تست اتصال به سرور:
ping -c 4 8.8.8.8
و برای پیدا کردن نقطه قطعی در مسیر:
traceroute -n example.com
اشتباه رایج: اگر ping جواب نداد، بلافاصله نتیجه نگیرید که سرور down است. بسیاری از سرورها ICMP را فیلتر میکنند. اول با curl یا nc تست کنید.
۴. مدیریت دیسک و فایلسیستم
پر شدن دیسک یکی از رایجترین دلایل از کار افتادن سایتهاست. این دستورات نجاتبخش شما هستند.
df و du — بررسی فضای دیسک
برای دیدن فضای کلی:
df -h
برای پیدا کردن بزرگترین دایرکتوریها در ریشه سایت:
du -sh /var/www/html/* | sort -rh | head -10
این دستور ترکیبی، ۱۰ پوشه بزرگ را بهترتیب حجم نشان میدهد.
lsof — فایلهای باز
اگر فایلی را حذف کردهاید اما دیسک همچنان پر است، احتمالاً یک فرایند آن را در حافظه نگه داشته است:
lsof +L1
این دستور فایلهای حذفشدهای که هنوز باز هستند را نشان میدهد. سپس میتوانید فرایند مربوطه را با kill متوقف کنید.
rsync — همگامسازی و انتقال
برای انتقال فایلها بین سرورها با حفظ مجوزها:
rsync -avz --progress /var/www/html/ user@backup-server:/backup/html/
فلگ -a (archive) مجوزها و زمانها را حفظ میکند، -z فشردهسازی میکند و --progress پیشرفت را نشان میدهد.
۵. مدیریت کاربران و مجوزها
امنیت سرور شما به مدیریت صحیح کاربران وابسته است.
useradd و usermod — مدیریت کاربران
برای ایجاد کاربر جدید با پوسته محدود:
useradd -m -s /bin/bash deploy
برای افزودن کاربر به گروه sudo:
usermod -aG sudo deploy
نکته مهم: همیشه از فلگ -a (append) استفاده کنید. بدون آن، کاربر از گروههای قبلی حذف میشود.
chmod و chown — مجوزها
برای تغییر مالکیت فایلهای سایت به کاربر وبسرور:
chown -R www-data:www-data /var/www/html
برای تنظیم مجوز صحیح دایرکتوریها (۷۵۵) و فایلها (۶۴۴):
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
۶. مشاهده لاگها
لاگها اولین جایی هستند که باید در زمان بروز خطا نگاه کنید.
tail و grep — مشاهده و فیلتر لاگ
برای دنبال کردن زنده لاگ خطای Nginx:
tail -f /var/log/nginx/error.log
برای پیدا کردن خطاهای 500 در یک بازه زمانی:
grep " 500 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn
این دستور IPهایی که بیشترین خطای 500 را داشتهاند بههمراه تعدادشان نشان میدهد.
journalctl — لاگهای systemd
برای دیدن لاگهای سرویس MySQL از ابتدای امروز:
journalctl -u mysql --since today
برای دنبال کردن زنده:
journalctl -u nginx -f
۷. دستورات ترکیبی و پیشرفته
این دستورات ترکیبی، کارهای پیچیده را در یک خط انجام میدهند.
grep و awk — پردازش متن
برای استخراج کدهای وضعیت HTTP از لاگ و شمارش آنها:
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
برای پیدا کردن آهستهترین درخواستها (بر اساس زمان پاسخ):
awk '{if ($NF > 5) print $0}' /var/log/nginx/access.log | tail -20
watch — اجرای دورهای
برای مشاهده زنده مصرف حافظه هر ۲ ثانیه:
watch -n 2 free -h
برای مانیتور کردن اتصالات شبکه:
watch -n 1 'ss -s'
۸. عیبیابی و اشتباهات رایج
در این بخش به چند اشتباه پرتکرار اشاره میکنیم که مدیران تازهکار مرتکب میشوند.
استفاده از sudo بیمورد
همیشه با کاربر معمولی وارد شوید و فقط برای دستورات خاص از sudo استفاده کنید. اجرای دستورات با root میتواند بهطور ناخواسته فایلهای سیستمی را خراب کند.
فراموش کردن فلگ -a در usermod
همانطور که اشاره شد، بدون -a کاربر از گروههای قبلی حذف میشود. این اشتباه میتواند دسترسی SSH کاربر را قطع کند.
نادیده گرفتن خروجی دستورات
قبل از اجرای دستورات مخرب مثل rm یا dd، حتماً خروجی را با ls یا df بررسی کنید. یک اشتباه تایپی در مسیر میتواند فاجعه ایجاد کند.
جمعبندی
تسلط بر این ۲۵ دستورات لینوکس به شما کمک میکند تا بسیاری از مشکلات رایج سرور را بدون نیاز به پشتیبانی حل کنید. پیشنهاد میکنم این دستورات را در یک محیط آزمایشی (مثل VirtualBox یا یک VPS ارزان) تمرین کنید تا در شرایط واقعی با اطمینان عمل کنید. اگر سرور شما روی زیرساخت ابری اجرا میشود، ServerNet امکان دسترسی کامل SSH به سرور را فراهم میکند که میتوانید این دستورات را مستقیماً روی آن تمرین کنید. به یاد داشته باشید که مستندات هر دستور را با man مطالعه کنید — بهترین معلم، خود لینوکس است.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!