تخطَّ إلى المحتوى

🐧 شرح Linux وسطر الأوامر

المحرّرات والسجلّات

الدرس 20 من 27· ⏱ 3 دقائق قراءة· 🗓 آخر تحديث: ١٨ أكتوبر ٢٠٢٦

لماذا محرّر في الطرفية؟

على خادم عبر SSH لا توجد واجهة رسومية ولا VS Code. ستحتاج أن تعدّل ملف إعداد nginx أو .env من الطرفية مباشرة. يكفي أن تتقن محرّرًا واحدًا، والاثنان الموجودان تقريبًا على كل خادم هما nano وvim.

nano: الأسهل

nano /etc/hosts
sudo nano /etc/nginx/nginx.conf    # ملفات النظام تحتاج sudo

الاختصارات مكتوبة أسفل الشاشة (^ تعني Ctrl):

الاختصاريفعل
Ctrl+O ثم Enterحفظ
Ctrl+Xخروج (يسأل عن الحفظ إن عدّلت)
Ctrl+Wبحث
Ctrl+K وCtrl+Uقصّ سطر ولصقه
Alt+Uتراجع

ابدأ بـ nano إن كنت جديدًا: لا أوضاع ولا مفاجآت.

vim: الأقوى، بفكرة واحدة

سرّ vim الذي يربك الجميع: أوضاع. المفاتيح تعني أشياء مختلفة حسب الوضع:

  • الوضع العادي (Normal): تبدأ فيه. المفاتيح أوامر لا حروف.
  • وضع الإدراج (Insert): اضغط i لتكتب نصًّا عاديًا، وEsc للعودة.
  • وضع الأوامر: اضغط : في الوضع العادي لأوامر مثل الحفظ والخروج.
vim config.yml
في الوضع العادييفعل
iابدأ الكتابة
Escارجع للوضع العادي
:w و:qحفظ، خروج
:wqحفظ وخروج
:q!خروج بلا حفظ
/كلمة ثم nبحث
dd وpقصّ سطر، لصق
uتراجع

عالق في vim؟ اضغط Esc مرّتين، ثم اكتب :q! واضغط Enter. هذا يخرجك دائمًا دون حفظ.

السجلّات: أول مكان تبحث فيه

حين يتعطّل شيء، السبب مكتوب غالبًا في سجلّ. يوجد مكانان رئيسيان:

journalctl: سجلّات systemd

journalctl -u nginx                 # سجلّ خدمة nginx
journalctl -u nginx -f              # متابعة حيّة
journalctl -u nginx --since "1 hour ago"
journalctl -u myapp -n 50 --no-pager   # آخر 50 سطرًا
journalctl -p err -b                # الأخطاء فقط منذ آخر إقلاع
journalctl --disk-usage             # كم تأخذ السجلّات من القرص

كل خدمة تعمل عبر systemd تُجمع مخرجاتها هنا تلقائيًا، حتى console.log في تطبيق Node يعمل كخدمة.

/var/log: ملفات السجلّ التقليدية

الملفالمحتوى
/var/log/syslog (أو messages في Fedora)سجلّ النظام العام
/var/log/auth.log (أو secure)محاولات الدخول وsudo
/var/log/nginx/access.logكل طلب لخادم الويب
/var/log/nginx/error.logأخطاء nginx
sudo tail -f /var/log/nginx/error.log
sudo grep "Failed password" /var/log/auth.log | tail   # محاولات تخمين كلمات السر

سيناريو: الخدمة لا تبدأ

sudo systemctl start myapp          # Job for myapp.service failed...
systemctl status myapp              # آخر أسطر السجلّ والسبب المختصر
journalctl -u myapp -n 30 --no-pager   # التفاصيل الكاملة

اقرأ أول خطأ في السجلّ لا آخره: الأخطاء التالية غالبًا نتيجة للأول.

السجلّات تكبر: logrotate

السجلّات تكبر للأبد ما لم تُدوَّر. أداة logrotate تفعل هذا تلقائيًا لمعظم الخدمات: تعيد تسمية app.log إلى app.log.1، وتضغط القديمة (app.log.2.gz)، وتحذف الأقدم. إعداداتها في /etc/logrotate.d/. لهذا تجد ملفات مرقّمة ومضغوطة في /var/log، وتقرؤها بـ zcat أو zgrep.

أخطاء شائعة

  • عالق في vim: Esc ثم :q!.
  • تعديل ملف نظام بلا sudo: تكتشف عند الحفظ فقط أنه "read-only". في vim احفظ بـ :w !sudo tee %، أو أعد فتحه بـ sudo.
  • إعداد خاطئ يُسقط الخدمة: افحص قبل إعادة التشغيل: sudo nginx -t.
  • قراءة آخر خطأ فقط: السبب الحقيقي غالبًا في أول خطأ.
  • سجلّات تملأ القرص: راجع journalctl --disk-usage وإعدادات logrotate.

🎯 التالي: الأمان وأفضل الممارسات.

شرح المحرّرات والسجلّات — Linux وسطر الأوامر بالعربي
المحرّرات والسجلّات — Linux وسطر الأوامر بالعربي · The Code Fix

📚 لمزيد من التعمّق في Linux وسطر الأوامر، راجِع صفحات دليل Linux الرسمية.

هل كان هذا الدرس مفيدًا؟