أوامر Linux الأساسية التي يجب على كل مهندس DEVOPS معرفتها - الجزء الأول
تم التحديث: ٢٧ مارس ٢٠٢٦
ملخص
أتقن أوامر Linux الأساسية للملفات والمجلدات (ls، cd، mkdir، cp، rm، chmod) بالإضافة إلى البدائل الحديثة مثل eza و bat، و systemd/journalctl لإدارة الخدمات، والأدوات المتوافقة مع الحاويات (containers) لسير عمل DevOps فعال.
سواء كنت تدير خوادم حقيقية (bare-metal)، أو مجموعات Kubernetes، أو بنية تحتية سحابية، فإن إتقان سطر أوامر Linux أمر غير قابل للتفاوض لمهندسي DevOps في عام 2026. الأوامر التي ستتعلمها هنا تشكل الأساس للعمل اليومي في البنية التحتية - من التنقل في أنظمة الملفات إلى إدارة الأذونات وبيئات الحاويات.
بينما تظل أوامر Linux التقليدية ذات صلة، توفر البدائل الحديثة مثل eza (بديل ls) و bat (بديل cat) تمييزاً أفضل للأكواد (syntax highlighting)، ومخرجات ملونة، وقابلية قراءة محسنة. جنباً إلى جنب مع إتقان systemd و Windows Subsystem for Linux 2 (WSL2) لمطوري Windows، تشكل هذه الأدوات مجموعة أدوات DevOps كاملة.
أوامر التنقل في الملفات والمجلدات
تتضمن العمليات الأكثر أساسية في Linux التنقل عبر نظام الملفات وفهم مكان كل شيء. لم تتغير هذه الأوامر كثيراً، لكن بدائلها الحديثة جعلتها أكثر كفاءة.
الأساليب التقليدية والحديثة:
# Old way: ls (lists directory contents)
ls -la # List all files, detailed format
# Modern replacement: eza (faster, colored, Git-aware)
eza -la # Same output, with better colors
eza -la --tree # Directory tree view
eza -la --git # Shows Git status alongside files
تتعامل أداة eza مع المجلدات الكبيرة بشكل أسرع وتلون المخرجات تلقائياً للأذونات وأنواع الملفات وحالة Git - وهو أمر مفيد عند التنقل في مستودع ضخم (monorepo) يحتوي على مئات الملفات.
التنقل:
pwd # Print working directory (where are you?)
cd /path/to/dir # Change directory
cd ~ # Go to home directory
cd - # Go to previous directory
cd .. # Go to parent directory
cd ../.. # Go up two levels
فحص وقراءة الملفات
يقوم cat بعرض محتويات الملف، ولكن بالنسبة للملفات الكبيرة أو قراءة الأكواد، فإن البدائل الحديثة متفوقة:
# Old way: cat
cat /var/log/syslog # Print entire file to terminal (Debian/Ubuntu)
cat /var/log/messages # Same, on RHEL/CentOS/Fedora-based systems
# Better alternatives:
bat /var/log/syslog # Syntax highlighting + line numbers
bat -p /var/log/syslog # Plain mode (no decorations: no header, grid, or line numbers)
tail -f /var/log/syslog # Follow log file in real-time
head -20 /var/log/syslog # First 20 lines only
بالنسبة لعمل DevOps، لا غنى عن bat لقراءة ملفات التكوين (configuration) وقصاصات الأكواد مع تمييز لوني صحيح. أمر tail -f ضروري لمراقبة السجلات (logs) في الوقت الفعلي أثناء عمليات النشر أو الحوادث. لاحظ أنه في الأنظمة التي تستخدم systemd-journald حصرياً (مثل Fedora الحديثة و CoreOS)، قد لا تكون ملفات /var/log/syslog أو /var/log/messages التقليدية موجودة - استخدم journalctl بدلاً من ذلك (موضح أدناه).
عمليات الملفات والمجلدات
إنشاء وحذف الملفات/المجلدات:
touch filename # Create empty file or update timestamp
mkdir -p /path/to/dir # Create directory (and parent dirs if needed)
rm filename # Delete file (DANGER: permanent!)
rm -r dirname # Delete directory and contents
rmdir dirname # Remove empty directory only
النسخ والنقل:
cp source.txt destination.txt # Copy file
cp -r source_dir dest_dir # Copy directory recursively
mv old_name new_name # Move or rename
mv -i old_name new_name # Interactive (asks before overwriting)
علامة -i هي شبكة الأمان الخاصة بك - استخدمها دائماً عند نقل ملفات التكوين في بيئة الإنتاج.
البحث عن الملفات وإيجادها
أمر find قوي ولكنه مطول. البدائل الحديثة مثل fd أسرع وأكثر سهولة في الاستخدام:
# Old way: find
find /path -name "*.log" # Find all .log files
find /path -type f -size +100M # Find files larger than 100MB
# Modern replacement: fd (faster, colored, regex by default)
fd -e log /path # Find .log files (extension match, idiomatic fd)
fd "\.log$" /path # Same, using regex
fd --size +100M /path # Files larger than 100 megabytes
fd --follow # Follow symlinks
للبحث السريع عن الملفات في أشجار المصادر الكبيرة (مثل ملفات manifest الخاصة بـ Kubernetes أو مستودعات البنية التحتية ككود)، فإن fd أسرع بكثير من find.
الأذونات والملكية
فهم أذونات الملفات أمر ضروري للأمان واستقرار النظام:
chmod 755 script.sh # Owner: rwx, Group: r-x, Others: r-x
chmod 644 config.yaml # Owner: rw-, Group: r--, Others: r--
chmod u+x script.sh # Add execute permission for owner
chown user:group filename # Change owner and group
chown -R user:group dirname # Recursive ownership change
تستخدم الأذونات ثلاث مجموعات من ثلاث بتات:
- المالك (u): أذونات المستخدم
- المجموعة (g): أذونات المجموعة
- الآخرون (o): أذونات أي شخص آخر
قيم DevOps الشائعة: 755 (للملفات القابلة للتنفيذ)، 644 (لملفات التكوين)، 600 (للأسرار/secrets).
البحث داخل الملفات
عندما تحتاج إلى العثور على محتوى محدد داخل الملفات، فإن grep و ripgrep (البديل الحديث) ضروريان:
# Old way: grep
grep "error" /var/log/app.log # Find lines containing "error"
grep -r "TODO" . # Recursively search all files
grep -i "Error" file.txt # Case-insensitive search
# Modern replacement: ripgrep (rg)
rg "error" /var/log/ # Faster recursive search
rg -g "*.yaml" "apiVersion" # Search only in YAML files
rg --type rust "TODO" # Search only in Rust files
أداة Ripgrep (rg) أسرع بشكل كبير من grep في قواعد الأكواد الكبيرة وتحترم تلقائياً أنماط .gitignore - وهي مثالية للبحث في مستودعات البنية التحتية ككود دون الاصطدام بالملفات التي يتم إنشاؤها تلقائياً.
systemd وإدارة الخدمات
في توزيعات Linux الحديثة، يقوم systemd بإدارة الخدمات، وفهم systemctl و journalctl أمر بالغ الأهمية لـ DevOps:
systemctl status nginx # Check if nginx is running
systemctl start nginx # Start service
systemctl stop nginx # Stop service
systemctl restart nginx # Restart service
systemctl enable nginx # Auto-start on boot
systemctl disable nginx # Don't auto-start on boot
systemctl list-units --type=service # List all services
journalctl -u nginx # Logs for nginx service only
journalctl -u nginx -f # Follow nginx logs
journalctl -u nginx --since "10 minutes ago" # Recent logs
journalctl -n 50 -u nginx # Last 50 lines
حل أمر journalctl محل syslog التقليدي في العديد من الأنظمة. استخدام -u <service> للتصفية حسب اسم الوحدة (unit) أكثر كفاءة بكثير من البحث باستخدام grep في /var/log/.
الأوامر المتوافقة مع الحاويات
يعمل مهندسو DevOps بشكل متكرر داخل الحاويات (containers) وكبسولات (pods) Kubernetes. فهم فحص مساحات الأسماء (namespaces) أمر بالغ الأهمية:
# List all namespaces on system
lsns
# Inspect cgroups (Linux container boundaries)
cat /proc/cgroups # Lists registered cgroup controllers (cgroup v1 view)
cat /sys/fs/cgroup/cgroup.controllers # Available controllers (cgroup v2; default on most modern distros)
ps aux | grep <container-id> # Find processes belonging to a container
# Mount inspection (important for volume debugging)
mount | grep -i Docker # Show Docker-related mounts
df -h # Disk usage by mount point
تستخدم معظم التوزيعات الحديثة (Ubuntu 22.04+، Fedora 31+، Debian 11+) الإصدار cgroup v2 بشكل افتراضي. لا يزال ملف /proc/cgroups يعمل ولكنه يعكس عرض التسلسل الهرمي لـ v1؛ للفحص الأصلي لـ v2 استخدم /sys/fs/cgroup/.
لاستكشاف أخطاء Linux وإصلاحها الخاصة بـ Kubernetes، راجع الجزء الثاني (kubectl exec، Docker exec، crictl).
WSL2 لمهندسي DevOps على Windows
إذا كنت تقوم بالتطوير على Windows، فإن WSL2 (Windows Subsystem for Linux 2) يوفر نواة Linux كاملة داخل Windows. هذا يلغي الحاجة إلى الأجهزة الافتراضية (VMs) ويوفر بيئة تطوير Linux أصلية:
# On Windows PowerShell:
wsl --install # Install WSL2
wsl --list --verbose # List installed distributions
wsl -d Ubuntu # Run specific distribution
# From within WSL2:
/mnt/c/ # Access Windows C: drive
/mnt/d/ # Access Windows D: drive
WSL2 هو بيئة Linux الموصى بها لمهندسي DevOps الذين يستخدمون Windows في عام 2026، حيث يوفر أداءً قريباً من الأداء الأصلي لعمليات البناء والاختبار والتطوير المحلي.
ورقة مرجعية سريعة
| الأمر | الغرض | البديل الحديث |
|---|---|---|
ls -la | عرض الملفات مع الأذونات | eza -la |
cat file | عرض محتويات الملف | bat file |
find . -name | البحث حسب اسم الملف | fd <pattern> |
grep -r pattern | البحث في محتويات الملف | rg pattern |
cd /path | تغيير المجلد | (لا يوجد بديل مطلوب) |
chmod 755 file | تغيير الأذونات | (لا يوجد بديل مطلوب) |
tail -f logfile | مراقبة السجلات | (لا يوجد بديل مطلوب) |
systemctl restart svc | إعادة تشغيل الخدمة | (لا يوجد بديل مطلوب) |
الخلاصة
تشكل هذه الأوامر التأسيسية العمود الفقري لعمل DevOps القائم على Linux. بينما تعمل الأدوات الحديثة مثل eza و bat و ripgrep على تحسين الأوامر التقليدية بتنسيق مخرجات وأداء أفضل، تظل المفاهيم الأساسية دون تغيير. أتقن هذه الأوامر من خلال الاستخدام المنتظم، وستتمكن من التعامل مع أنظمة Linux بثقة. في الجزء الثاني، سنبني على هذا الأساس مع أوامر الشبكات، وإدارة العمليات، وأوامر تصحيح الأخطاء الخاصة بالحاويات.