أوامر Linux الأساسية لـ DevOps (الجزء الأول)
أوامر Linux التي يستخدمها مهندسو DevOps يومياً: الملفات، البحث، الصلاحيات و systemd، بالإضافة إلى أدوات حديثة مثل eza و bat و fd و ripgrep.
جدول المحتويات
أعيد إنشاؤه: ٢٧ مارس ٢٠٢٦ · آخر تحقق: ٣ نوفمبر ٢٠٢٦.
ملخص
أتقن أوامر ملفات ومجلدات Linux الأساسية (ls, cd, mkdir, cp, rm, chmod) بالإضافة إلى البدائل الحديثة مثل eza و bat, و systemd/journalctl لإدارة الخدمات، والأدوات المتوافقة مع الحاويات (containers) لسير عمل DevOps فعال.
سواء كنت تدير خوادم bare-metal، أو مجموعات Kubernetes، أو بنية تحتية سحابية، فإن إتقان سطر أوامر Linux أمر غير قابل للتفاوض لمهندسي DevOps في عام ٢٠٢٦. الأوامر التي ستتعلمها هنا تشكل الأساس للعمل اليومي في البنية التحتية — من التنقل في أنظمة الملفات إلى إدارة الأذونات وبيئات الحاويات.
بينما تظل أوامر 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 لا غنى عنها لقراءة ملفات الإعدادات ومقتطفات الأكواد مع تمييز صحيح للصيغة. أما الأمر 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 شبكة الأمان الخاصة بك — استخدمه دائمًا عند نقل ملفات إعدادات بيئة الإنتاج (production).
البحث عن الملفات وإيجادها
الأمر 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
لإجراء عمليات بحث سريعة عن الملفات في أشجار المصادر الكبيرة (مثل ملفات تعريف Kubernetes أو مستودعات البنية التحتية ككود infrastructure-as-code)، فإن 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 — مما يجعلها مثالية للبحث في مستودعات البنية التحتية ككود (infrastructure-as-code) دون الدخول في الملفات التي يتم إنشاؤها تلقائيًا.
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> للتصفية حسب اسم الوحدة أكثر كفاءة بكثير من استخدام grep للبحث في /var/log/.
الأوامر المتوافقة مع الحاويات (Container-Aware)
يعمل مهندسو DevOps بشكل متكرر داخل الحاويات و Kubernetes pods. لذا فإن فهم فحص مساحات الأسماء (namespace inspection) أمر ضروري:
# 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. هذا يلغي الحاجة إلى الأجهزة الافتراضية (virtual machines) ويوفر بيئة تطوير 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 في عام ٢٠٢٦، حيث توفر أداءً قريبًا من الأداء الأصلي لعمليات البناء (builds) والاختبارات والتطوير المحلي.
ورقة مرجعية سريعة (Cheat Sheet)
| الأمر | الغرض | البديل الحديث |
|---|---|---|
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 | مراقبة السجلات (logs) | (لا يوجد بديل مطلوب) |
systemctl restart svc | إعادة تشغيل الخدمة | (لا يوجد بديل مطلوب) |
الخلاصة
تشكل هذه الأوامر الأساسية العمود الفقري لعمل DevOps القائم على Linux. وبينما تعمل الأدوات الحديثة مثل eza و bat و ripgrep على تحسين الأوامر التقليدية من خلال تنسيق مخرجات وأداء أفضل، إلا أن المفاهيم الأساسية تظل دون تغيير. أتقن هذه الأوامر من خلال الاستخدام المنتظم، وستتمكن من التعامل مع أنظمة Linux بثقة. في الجزء الثاني، سنبني على هذا الأساس من خلال الشبكات، وإدارة العمليات، وأوامر تصحيح الأخطاء الخاصة بالحاويات.
قراءات ذات صلة
للوكلاء الآليين:get_post/posts/index.json/ar/essential-linux-commands-every-devops-engineer-should-know-part-1.md
نشرة مجانية
ابقَ على مسار النيرد
رسالة واحدة كلّ أسبوع: عدد الخميس يضمّ شرحًا لمنظومة واحدة، وثلاث إشارات، وتمرينًا واحدًا، ووظيفة واحدة، وخلاصة بالعربية.