أتمتة الأقراص وأنظمة الملفات والضمّ
افحص الأجهزة الكتلية وأدر إدخالات fstab وبرمج عمليات LVM والضمّ بأمان
أتمتة الأقراص وأنظمة الملفات والضمّ درس مجاني في Linux Command Line & Bash Scripting Mastery على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Command Line & Bash Scripting Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
فهم أجهزة الكتل باستخدام lsblk وfdisk
قبل أتمتة عمليات الأقراص، يجب أن تتمكنوا من فحص أجهزة الكتل الموجودة على النظام. ومن الأداتين الأساسيتين لذلك lsblk وfdisk -l.
lsblk— يسرد أجهزة الكتل بتنسيق شجري، موضحًا أسماء الأجهزة وأحجامها ونقاط تحميلها وأنواعها (disk وpart وlvm)fdisk -l— يعرض جداول الأقسام وتفاصيل القطاعات (ويتطلب صلاحيات root)blkid— يطبع UUID وأنواع أنظمة الملفات لكل جهاز كتل
في البرامج النصية، ستحتاجون غالبًا إلى تحليل هذه المخرجات لاكتشاف الأقراص المتاحة، أو التحقق مما إذا كان القسم مهيأً، أو تحديد UUID الخاص به قبل تحميله.
#!/usr/bin/env bash
# Inspect all block devices and their UUIDs
set -euo pipefail
echo '=== Block Device Tree ==='
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID
echo ''
echo '=== Partition Table Details ==='
sudo fdisk -l 2>/dev/null | grep -E '^Disk |^/dev/'
echo ''
echo '=== UUID Lookup via blkid ==='
sudo blkid | awk -F: '{print $1}' | while read -r dev; do
uuid=$(sudo blkid -s UUID -o value "$dev" 2>/dev/null || echo 'N/A')
fstype=$(sudo blkid -s TYPE -o value "$dev" 2>/dev/null || echo 'unknown')
printf '%-20s UUID=%-38s TYPE=%s\n' "$dev" "$uuid" "$fstype"
doneالتحقق من مساحة القرص باستخدام df وdu
تُعد df وdu الأداتين الأساسيتين لإعداد تقارير عن استخدام نظام الملفات والأدلة. وتستخدمونهما في البرامج النصية لإدارة النظام لإطلاق التنبيهات، أو فرض الحصص، أو تحديد وقت توفير مساحة إضافية.
df -h— عرض استخدام أنظمة الملفات بصيغة سهلة القراءة عبر جميع أنظمة الملفات المحمّلةdf -BG— إخراج النتائج بالغيغابايت لتحليل رقمي متسقdu -sh /path— عرض الحجم الإجمالي لدليل محددdu -d 1 /var— تفصيل بمستوى عمق واحد (مفيد لمعرفة الدليل الفرعي الكبير)
يُحلَّل عمود النسبة المئوية المستخدمة من df عادةً لإطلاق تنبيهات امتلاء القرص في برامج المراقبة النصية.
#!/usr/bin/env bash
# Alert if any mounted filesystem exceeds a usage threshold
set -euo pipefail
THRESHOLD=80 # percent
echo 'Checking filesystem usage...'
df -h --output=source,pcent,target | tail -n +2 | while IFS= read -r line; do
device=$(awk '{print $1}' <<< "$line")
pct=$(awk '{print $2}' <<< "$line" | tr -d '%')
mount=$(awk '{print $3}' <<< "$line")
# Skip pseudo filesystems
[[ "$device" == tmpfs* || "$device" == devtmpfs* ]] && continue
if (( pct >= THRESHOLD )); then
echo "WARNING: $device mounted at $mount is ${pct}% full" >&2
else
echo "OK: $device at $mount is ${pct}% used"
fi
doneقراءة وتحليل /etc/fstab
يمثل /etc/fstab جدول أنظمة الملفات الثابت — فهو يحدد الأجهزة التي تُحمّل عند الإقلاع، والمسار الذي تُحمّل إليه، والخيارات المستخدمة. ويتكون كل سطر من ستة حقول:
- الجهاز — UUID=... أو LABEL=... أو /dev/sdX
- نقطة التحميل — مسار الدليل
- نوع نظام الملفات — ext4 وxfs وnfs وtmpfs وغيرها
- الخيارات — defaults وro وnoexec وnofail وغيرها
- Dump — القيمة 0 أو 1 (علامة النسخ الاحتياطي)
- Pass — القيمة 0 أو 1 أو 2 (ترتيب fsck)
يجب أن تتعامل البرامج النصية التي تضيف إدخالات fstab أو تتحقق منها بسلاسة مع التعليقات (الأسطر التي تبدأ بـ #) والأسطر الفارغة. احرصوا دائمًا على تفضيل UUID على أسماء الأجهزة لتفادي مشكلات إعادة الإقلاع التي قد يتغير فيها ترتيب الأجهزة.
#!/usr/bin/env bash
# Parse /etc/fstab and display non-comment entries in a readable table
set -euo pipefail
FSTAB=/etc/fstab
printf '%-40s %-20s %-10s %s\n' 'DEVICE' 'MOUNTPOINT' 'FSTYPE' 'OPTIONS'
printf '%s\n' '-------------------------------------------------------------------------------------'
while IFS= read -r line; do
# Skip blank lines and comments
[[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue
read -r device mountpt fstype options _dump _pass <<< "$line"
printf '%-40s %-20s %-10s %s\n' "$device" "$mountpt" "$fstype" "$options"
done < "$FSTAB"إضافة إدخال إلى fstab بأمان
يُعدّ تحرير /etc/fstab يدويًا عرضةً للأخطاء. فقد يؤدي إدخال غير صحيح إلى منع النظام من الإقلاع. يجب أن يراعي نص الأتمتة الآمن ما يلي:
- التحقق من وجود الإدخال مسبقًا قبل إلحاقه (قابلية التكرار)
- إنشاء نسخة احتياطية من الملف الأصلي قبل إجراء أي تعديل
- استخدام UUID بدلًا من مسار الجهاز
- إضافة
nofailإلى خيارات التحميل حتى لا يؤدي قرص مفقود إلى إيقاف الإقلاع - تشغيل
mount -aفي وضع المحاكاة أو إجراء اختبار تحميل للتحقق قبل إعادة التشغيل
بعد كتابة الإدخال، تحقّق دائمًا باستخدام findmnt --verify (المتاح في توزيعات systemd الحديثة) لاكتشاف أخطاء الصياغة فورًا.
#!/usr/bin/env bash
# Safely append a new entry to /etc/fstab (idempotent)
set -euo pipefail
DEVICE_PATH='/dev/sdb1'
MOUNTPOINT='/mnt/data'
FSTYPE='ext4'
OPTIONS='defaults,nofail'
FSTAB='/etc/fstab'
# Resolve UUID for stable identification
UUID=$(sudo blkid -s UUID -o value "$DEVICE_PATH")
if [[ -z "$UUID" ]]; then
echo "ERROR: Could not resolve UUID for $DEVICE_PATH" >&2
exit 1
fi
ENTRY="UUID=$UUID $MOUNTPOINT $FSTYPE $OPTIONS 0 2"
# Idempotency: skip if UUID already referenced in fstab
if grep -qsF "UUID=$UUID" "$FSTAB"; then
echo "INFO: fstab already contains UUID=$UUID — skipping."
exit 0
fi
# Backup
cp -p "$FSTAB" "${FSTAB}.bak.$(date +%Y%m%d%H%M%S)"
# Create mountpoint if needed
sudo mkdir -p "$MOUNTPOINT"
# Append entry
echo "$ENTRY" | sudo tee -a "$FSTAB" > /dev/null
echo "INFO: Added: $ENTRY"
# Validate
sudo findmnt --verify --verbose || echo 'WARNING: findmnt verify reported issues'تحميل أنظمة الملفات وإلغاء تحميلها في النصوص البرمجية
تُعدّ أوامر mount وumount مباشرةً، لكن يجب أن تتعامل النصوص البرمجية مع الحالات الاستثنائية:
- قد يكون الجهاز محمّلًا بالفعل — يفشل تحميله مرة أخرى؛ تحقّق باستخدام
findmntأوmountpoint - قد تكون نقطة التحميل مشغولة (بسبب ملفات مفتوحة) — يفشل
umount؛ استخدمlsof +D /mnt/targetللعثور على العمليات المتسببة في ذلك - استخدم
mount -o remount,ro /mnt/dataللتحويل إلى وضع القراءة فقط دون إلغاء التحميل - استخدم
umount -l /mnt/data(التحميل الكسول) كحل أخير — إذ يفصل مساحة الأسماء، لكنه ينتظر إغلاق المراجع
في الأتمتة، تحقّق دائمًا من رمز الخروج للأمر mount وسجّل حالات الفشل في syslog باستخدام logger.
#!/usr/bin/env bash
# Mount a device only if not already mounted; log outcome
set -euo pipefail
DEVICE='/dev/sdb1'
MOUNTPOINT='/mnt/data'
log() { logger -t disk-mount "$*"; echo "[$(date '+%F %T')] $*"; }
# Check if already mounted
if mountpoint -q "$MOUNTPOINT"; then
log "INFO: $MOUNTPOINT is already mounted — nothing to do."
exit 0
fi
# Ensure mountpoint directory exists
sudo mkdir -p "$MOUNTPOINT"
# Attempt mount
if sudo mount "$DEVICE" "$MOUNTPOINT"; then
log "OK: Mounted $DEVICE at $MOUNTPOINT"
else
log "ERROR: Failed to mount $DEVICE at $MOUNTPOINT"
exit 1
fi
# Show what is now mounted there
df -h "$MOUNTPOINT"مقدمة إلى LVM: وحدات التخزين الفعلية ومجموعات وحدات التخزين ووحدات التخزين المنطقية
يضيف LVM (Logical Volume Manager) طبقة تجريد مرنة بين أجهزة الكتل الأولية وأنظمة الملفات. ويتكون التسلسل الهرمي من ثلاث طبقات:
- Physical Volume (PV) — قرص أولي أو قسم جرى تهيئته باستخدام
pvcreate - Volume Group (VG) — تجميع وحدة PV واحدة أو أكثر باستخدام
vgcreate - Logical Volume (LV) — قسم افتراضي يُنشأ من VG باستخدام
lvcreate؛ وهو ما تقوم بتهيئته وتحميله
الميزة الأساسية هي إمكانية توسيع LV أثناء التشغيل دون إلغاء تحميله، وإضافة أقراص جديدة إلى VG دون إعادة التهيئة. وهذا يجعل LVM ضروريًا لأتمتة التخزين في بيئات الإنتاج.
أوامر الفحص: pvs وvgs وlvs، ونظيراتها التفصيلية pvdisplay وvgdisplay وlvdisplay.
كتابة نصوص لإنشاء وحدات تخزين LVM
يتبع إعداد LVM آليًا تسلسلًا صارمًا: pvcreate → vgcreate → lvcreate → mkfs → mount. يجب أن تنجح كل خطوة قبل تشغيل الخطوة التالية — استخدم set -euo pipefail وتحقّق من مخرجات كل أمر.
- تحقّق دائمًا من أن القرص المستهدف لا يحتوي على جدول أقسام موجود قبل استدعاء
pvcreate - استخدم الخيار
-yلتعطيل المطالبات التفاعلية في النصوص البرمجية غير التفاعلية - حدّد
-L(حجمًا ثابتًا) أو-l 100%FREEلاستخدام كل المساحة المتبقية - بعد
mkfs، استخدم مسار جهاز LV:/dev/<vgname>/<lvname>
#!/usr/bin/env bash
# Automate LVM setup: PV -> VG -> LV -> mkfs -> mount
set -euo pipefail
DISK='/dev/sdc' # raw disk, no existing partitions
VG_NAME='vg_appdata'
LV_NAME='lv_appdata'
LV_SIZE='10G'
MOUNTPOINT='/mnt/appdata'
FSTYPE='xfs'
echo "[1/6] Initializing Physical Volume on $DISK"
sudo pvcreate -y "$DISK"
echo "[2/6] Creating Volume Group: $VG_NAME"
sudo vgcreate "$VG_NAME" "$DISK"
echo "[3/6] Creating Logical Volume: $LV_NAME (${LV_SIZE})"
sudo lvcreate -y -L "$LV_SIZE" -n "$LV_NAME" "$VG_NAME"
echo "[4/6] Formatting as $FSTYPE"
sudo mkfs."$FSTYPE" "/dev/$VG_NAME/$LV_NAME"
echo "[5/6] Mounting at $MOUNTPOINT"
sudo mkdir -p "$MOUNTPOINT"
sudo mount "/dev/$VG_NAME/$LV_NAME" "$MOUNTPOINT"
echo "[6/6] Done. Disk usage:"
df -h "$MOUNTPOINT"
# Show LVM summary
vgs && lvsتوسيع وحدة تخزين منطقية أثناء التشغيل
من أقوى ميزات LVM تغيير الحجم أثناء التشغيل — أي توسيع وحدة تخزين منطقية ونظام ملفاتها أثناء تحميلهما واستخدامهما. وتتم العملية كما يلي:
- وسّع LV باستخدام
lvextend(يعيد الخيار-rتحجيم نظام الملفات في الخطوة نفسها) - إذا لم تستخدم
-r، فأعد تحجيم نظام الملفات بشكل منفصل: استخدمresize2fsمع ext4، وxfs_growfsمع xfs
قيود مهمة:
- يمكن لـ xfs التوسع فقط ولا يمكن تقليصه أبدًا — لذلك خطّط للسعة بعناية
- يمكن تقليص ext4، ولكن فقط أثناء إلغاء تحميله
- تحقّق دائمًا من توفر مساحة خالية في VG باستخدام
vgdisplay -sقبل التوسيع
#!/usr/bin/env bash
# Extend an LV and its xfs filesystem online
set -euo pipefail
VG_NAME='vg_appdata'
LV_NAME='lv_appdata'
EXTEND_BY='5G'
LV_DEV="/dev/$VG_NAME/$LV_NAME"
# Confirm VG has enough free space
FREE_GB=$(vgs --noheadings --units g -o vg_free "$VG_NAME" | tr -d ' g')
echo "VG free space: ${FREE_GB}G"
if (( $(echo "$FREE_GB < 5" | bc -l) )); then
echo 'ERROR: Not enough free space in VG' >&2
exit 1
fi
echo "Extending LV by $EXTEND_BY..."
sudo lvextend -L "+${EXTEND_BY}" "$LV_DEV"
echo 'Growing xfs filesystem online...'
sudo xfs_growfs "$LV_DEV"
echo 'New size:'
df -h "$LV_DEV"
lvs "$LV_DEV"إنشاء أنظمة الملفات وتهيئتها
بعد إعداد الأقسام أو LVM، تحتاج إلى تهيئة جهاز الكتل بنظام ملفات. ومن الخيارات الشائعة في إدارة Linux:
- ext4 — ناضج ومدعوم بالتسجيل، ويدعم التقليص؛ وهو الإعداد الافتراضي في العديد من التوزيعات (
mkfs.ext4) - xfs — عالي الأداء، ومفضّل للملفات الكبيرة وعمليات الإدخال والإخراج المتوازية؛ وهو الإعداد الافتراضي في RHEL/CentOS (
mkfs.xfs) - btrfs — يعتمد النسخ عند الكتابة، ويدعم اللقطات المضمنة (
mkfs.btrfs) - tmpfs — يعتمد على ذاكرة RAM، ويُحدّد في fstab دون استخدام mkfs
اضبط دائمًا تسمية ذات معنى لنظام الملفات (باستخدام الخيار -L) حتى يمكن الإشارة إلى الجهاز باستخدام LABEL= في fstab كبديل احتياطي لـ UUID.
#!/usr/bin/env bash
# Format a partition and assign a label; print resulting UUID
set -euo pipefail
PARTITION='/dev/sdb1'
FSTYPE='ext4'
LABEL='appdata'
# Safety check: refuse to format a currently mounted device
if findmnt --source "$PARTITION" > /dev/null 2>&1; then
echo "ERROR: $PARTITION is currently mounted. Unmount first." >&2
exit 1
fi
echo "Formatting $PARTITION as $FSTYPE with label '$LABEL'..."
sudo mkfs."$FSTYPE" -L "$LABEL" -F "$PARTITION"
# Retrieve and display the new UUID
NEW_UUID=$(sudo blkid -s UUID -o value "$PARTITION")
echo "Formatted successfully."
echo "Label : $LABEL"
echo "UUID : $NEW_UUID"
echo "Use this in fstab: UUID=$NEW_UUID /mnt/$LABEL $FSTYPE defaults,nofail 0 2"أتمتة تحميل NFS باستخدام autofs
بالنسبة إلى أنظمة ملفات الشبكة، قد يؤدي التحميل عند الإقلاع باستخدام fstab إلى تأخيرات أو حالات فشل إذا تعذر الوصول مؤقتًا إلى خادم NFS. يحلّ autofs هذه المشكلة بالتحميل عند الطلب وإلغاء التحميل بعد انتهاء مهلة زمنية.
- الخريطة الرئيسية:
/etc/auto.master— تحدد دليل نقطة التحميل وملف خريطته - الخريطة المباشرة:
/etc/auto.nfs— تحدد الخيارات ومسار خادم NFS لكل دليل فرعي - أعد التحميل باستخدام
systemctl reload autofsبعد إجراء التغييرات - تظهر نقاط التحميل تلقائيًا ضمن الدليل المُعدّ عند الوصول إليها
في النصوص البرمجية، يمكنك إنشاء ملف الخريطة ديناميكيًا من قائمة بمشاركات NFS ثم إعادة تحميل autofs — وهذا مفيد لتوفير التخزين المشترك عبر العديد من المضيفات.
#!/usr/bin/env bash
# Generate an autofs NFS map file from a share list and reload autofs
set -euo pipefail
NFS_SERVER='192.168.1.50'
AUTO_MAP='/etc/auto.nfs'
AUTO_MASTER='/etc/auto.master'
MOUNT_BASE='/nfs'
# Define shares: localname:remote_path
declare -A SHARES=(
[homes]='/export/homes'
[media]='/export/media'
[backups]='/export/backups'
)
# Write map file
{
echo '# Generated by disk-automation script'
for localname in "${!SHARES[@]}"; do
remote="${SHARES[$localname]}"
echo "$localname -rw,soft,timeo=30 ${NFS_SERVER}:${remote}"
done
} | sudo tee "$AUTO_MAP" > /dev/null
echo "Wrote $AUTO_MAP"
# Ensure master map references this file
if ! grep -qF "$AUTO_MAP" "$AUTO_MASTER"; then
echo "$MOUNT_BASE $AUTO_MAP" | sudo tee -a "$AUTO_MASTER" > /dev/null
echo "Updated $AUTO_MASTER"
fi
sudo systemctl reload autofs && echo 'autofs reloaded'لقطة LVM للنسخ الاحتياطية الآمنة
توفر لقطات LVM نسخةً لنقطة زمنية محددة من وحدة تخزين منطقية، مما يتيح إنشاء نسخ احتياطية متسقة لأنظمة الملفات قيد التشغيل دون إلغاء تحميلها. وتلتقط اللقطة الحالة وقت إنشائها باستخدام النسخ عند الكتابة.
- الإنشاء:
lvcreate -s -n lv_snap -L 2G /dev/vg_data/lv_data - حمّل اللقطة في وضع القراءة فقط لإجراء نسخ احتياطي لها:
mount -o ro /dev/vg_data/lv_snap /mnt/snap - شغّل
rsyncأوtarعلى نقطة تحميل اللقطة - أزل اللقطة بعد النسخ الاحتياطي:
umount /mnt/snap && lvremove -f /dev/vg_data/lv_snap
اجعل حجم اللقطة 10-20% من وحدة LV الأصلية. فإذا امتلأت اللقطة، تصبح غير صالحة — راقبها باستخدام lvs -o lv_name,snap_percent.
#!/usr/bin/env bash
# Create an LVM snapshot, back up via tar, then remove snapshot
set -euo pipefail
VG='vg_appdata'
ORIGIN_LV='lv_appdata'
SNAP_LV='lv_appdata_snap'
SNAP_SIZE='2G'
SNAP_MOUNT='/mnt/snap_backup'
BACKUP_DEST='/var/backups/appdata'
DATESTAMP=$(date +%Y%m%d_%H%M%S)
trap 'sudo umount "$SNAP_MOUNT" 2>/dev/null; sudo lvremove -f "/dev/$VG/$SNAP_LV" 2>/dev/null' ERR EXIT
echo '[1] Creating snapshot...'
sudo lvcreate -s -n "$SNAP_LV" -L "$SNAP_SIZE" "/dev/$VG/$ORIGIN_LV"
echo '[2] Mounting snapshot read-only...'
sudo mkdir -p "$SNAP_MOUNT"
sudo mount -o ro "/dev/$VG/$SNAP_LV" "$SNAP_MOUNT"
echo '[3] Archiving to backup destination...'
sudo mkdir -p "$BACKUP_DEST"
sudo tar -czf "$BACKUP_DEST/appdata_${DATESTAMP}.tar.gz" -C "$SNAP_MOUNT" .
echo '[4] Cleaning up snapshot...'
sudo umount "$SNAP_MOUNT"
sudo lvremove -f "/dev/$VG/$SNAP_LV"
echo "Backup complete: $BACKUP_DEST/appdata_${DATESTAMP}.tar.gz"اختبار المعرفة: أتمتة fstab والتحميل بأمان
اختبر فهمك لممارسات أتمتة الأقراص وأنظمة الملفات والتحميل بأمان التي تناولها هذا الدرس.
مراجعة الدرس: أتمتة الأقراص وأنظمة الملفات والتحميل
في هذا الدرس أنشأت مجموعة أدوات متكاملة من أجل إدارة الأقراص والتخزين بأمان وقابلية للبرمجة النصية على أنظمة Linux. وأهم النقاط:
- الفحص أولًا: توفر لك
lsblkوblkidوdfوduالمعلومات اللازمة قبل إجراء أي تغيير. - الانضباط عند استخدام fstab: استخدم UUID دائمًا، وأدرج
nofailدائمًا، وأنشئ نسخة احتياطية قبل التحرير، وتحقّق باستخدامfindmnt --verify. - أمان التحميل: تحقّق من
mountpoint -qقبل التحميل، وسجّل باستخدامlogger، وتعامل مع أخطاء انشغال الجهاز باستخدامlsof. - قوة LVM: يتيح تسلسل PV → VG → LV التوسيع أثناء التشغيل والنسخ الاحتياطية المعتمدة على اللقطات دون توقف.
- اختيار نظام الملفات مهم: xfs للأداء (قابل للتوسيع فقط)، وext4 للمرونة (يمكن تقليصه دون تحميل)، وbtrfs لأحمال العمل الأصلية المعتمدة على اللقطات.
- NFS عند الطلب: يتجنب autofs تأخيرات الإقلاع بتحميل المشاركات الشبكية عند الوصول إليها فقط.
- النسخ الاحتياطية باللقطات: توفر لقطات LVM نسخًا احتياطية متسقة أثناء التشغيل — لكن راقب دائمًا
snap_percentوأزل اللقطات فورًا بعد النسخ الاحتياطي.
بدمج هذه الأنماط، يمكنك أتمتة دورة حياة التخزين بأكملها بشكل موثوق: الاكتشاف والتوفير والتحميل وتغيير الحجم والنسخ الاحتياطي.
الأسئلة الشائعة
هل درس «أتمتة الأقراص وأنظمة الملفات والضمّ» مجاني؟
نعم — نص درس «أتمتة الأقراص وأنظمة الملفات والضمّ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Command Line & Bash Scripting Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
ماذا ستتعلم في «أتمتة الأقراص وأنظمة الملفات والضمّ»؟
افحص الأجهزة الكتلية وأدر إدخالات fstab وبرمج عمليات LVM والضمّ بأمان تتمرن على Linux Command Line & Bash Scripting Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Linux Command Line & Bash Scripting Mastery؟
لا تُشترط خبرة سابقة. Linux Command Line & Bash Scripting Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «أتمتة الأقراص وأنظمة الملفات والضمّ»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Linux Command Line & Bash Scripting Mastery هذا؟
نعم. كل درس في Linux Command Line & Bash Scripting Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أتمتة إنشاء المستخدمين والمجموعات
- التحكّم في خدمات systemd وكتابة ملفات الوحدات
- أتمتة الأقراص وأنظمة الملفات والضمّ
- إنشاء سكربتات فحص صحة النظام والتنبيه