خصم ٥٠٪ جميع الخطط، لفترة محدودة. تبدأ من $2.48/mo
7 دقائق متبقية
الخوادم وأنظمة التشغيل

كيفية إصلاح خطأ systemctl: الأمر غير موجود على Ubuntu

Nick Silver By Nick Silver قراءة 7 دقائق محدّث في 20 فبراير 2025
كيفية إصلاح الخطأ: systemctl: command not found

من أكثر الأدوات فائدة لمستخدمي Linux، ولا سيما التوزيعات الحديثة مثل Ubuntu، هو أمر systemctl. هذه الأداة في سطر الأوامر مخصصة للتفاعل مع systemd، وهو مدير النظام والخدمات.

من خلال هذا الأمر، يمكنك إدارة خدمات النظام، ومراقبة حالتها، وتشغيلها أو إيقافها، وتفعيلها أو تعطيلها عند بدء تشغيل النظام. أداة مفيدة بحق. لكن إن لم يُتعرَّف على الأمر systemctl أو لم يُعثر عليه، فستواجه الخطأ "sudo:systemctl: command not found" .

إذاً، دعنا نتحدث عن معنى خطأ "systemctl: command not found"، والأسباب المختلفة التي قد تكون وراءه، وكيفية إصلاحه.

ماذا يعني خطأ systemctl: Command Not Found؟

ببساطة، خطأ "systemctl: command not found" يعني أن أداة سطر الأوامر systemctl غير متوفرة أو غير قابلة للوصول في البيئة الحالية. قد يرجع ذلك إلى أسباب عدة، تعود في مجملها إما إلى كون البيئة ليست بيئة نظام حقيقية، أو إلى عدم تثبيت حزمة systemd على النظام.

في الأساس، إما أن حزمة systemd غير مثبتة، أو أن توزيعة Linux أو إصدارها لا يستخدم systemd، بل يعتمد على أنظمة أقدم لإدارة الخدمات كـ init.d. احتمال آخر هو أن متغير البيئة PATH لا يتضمن المسار الذي يوجد فيه systemctl، مما يعني أن الـ shell لا يستطيع العثور عليه.

الآن بعد أن أصبح لديك تصور عما قد يسبب خطأ "systemctl: command not found" في نظامك، دعنا نستعرض كيفية تحديد موضع المشكلة وإصلاحها.

إصلاح خطأ systemctl: Command Not Found

في الخطوات التالية، سنتحقق مما إذا كان نظامك يحتوي على systemd مثبتاً ويستخدم systemctl أم لا، وسنتحقق أيضاً من مسار systemctl. بعد تحديد المشكلة، سنتخذ الخطوات اللازمة لإصلاح الخطأ.

١. التحقق مما إذا كان نظامك يستخدم systemd

بما أن systemctl لا يمكن استخدامه إلا إذا كانت حزمة systemd مثبتة، سنبدأ بالتحقق مما إذا كان نظامك من المفترض أن يستخدم systemd، وذلك بتشغيل الأمر التالي:

ps -p 1 -o comm=

أو يمكنك التحقق من إصدار systemd بالأمر التالي:

systemd --version

إذا كان الناتج هو systemd، فهذا يعني أن systemd هو نظام الـ init لديك وينبغي أن يكون Ubuntu systemctl مثبتاً. أما إذا كان الناتج هو init أو أي مدير عمليات آخر، فهذا يعني أن نظامك يستخدم نظام تهيئة بديلاً، ولن يعمل systemctl ما لم تنتقل إلى systemd.

إذا رأيت أنظمة تهيئة قديمة كـ Upstart أو SysVinit وتريد التبديل إلى systemd لاستخدام systemctl، اتبع الخطوات التالية:

١. ثبّت systemctl عن طريق تثبيت systemd باستخدام الأمر التالي:

sudo apt install systemd-sysv

٢. أعد تشغيل النظام بتشغيل هذا الأمر:

sudo reboot

٣. تحقق من أن نظامك يستخدم systemd الآن:

ps -p 1 -o comm=

يجب أن يكون الناتج الآن هو systemd.

٢. التأكد من تثبيت systemd بشكل صحيح

في الحالات الاعتيادية، حين يكون systemd مثبتاً ويعمل كنظام init، يجب أن يعمل أمر systemctl بشكل صحيح. إن لم يكن كذلك، فهذا يعني أن حزمة systemd إما مفقودة أو مثبتة بشكل غير صحيح.

تجدر الإشارة إلى أنك إذا كنت تستخدم إصداراً مخففاً من Ubuntu، كحاوية Docker أو نسخة سحابية، فقد لا يكون systemd مثبتاً بشكل افتراضي. لتثبيت systemctl عن طريق تثبيت systemd، شغّل الأوامر التالية:

sudo apt update
sudo apt install systemd

بعد التثبيت، تحقق مما إذا كان أمر systemctl متاحاً.

٣. التحقق من PATH الخاص بـ systemctl

من المشكلات الشائعة المتعلقة بخطأ systemctl not found أن systemctl قد يكون مثبتاً لكنه غير موجود في PATH الخاص بنظامك. للتحقق من وجود ملفات systemd الثنائية في المسارات المعتادة كـ /bin أو /usr/bin أو /usr/local/bin، يمكنك استخدام الأمر التالي:

which systemctl

إذا عُثر على systemctl في أحد المسارات المدرجة في PATH، ستحصل على ناتج كالتالي:

/usr/bin/systemctl

إذا لم يُعثر على systemctl في أيٍّ من المسارات الموجودة في PATH، فلن يُعيد أمر which أي نتيجة.

غير أن systemctl قد لا يعمل في بعض الأحيان حتى لو عُثر عليه في مساراتك. سبب ذلك أن systemctl قد يكون موجوداً في مسار غير مدرج في PATH. في هذه الحالة، ستحتاج إلى التحقق مما إذا كان المسار الذي يوجد فيه systemctl مضمّناً في نظامك، باستخدام الأمر التالي:

echo $PATH

يجب أن يبدو الناتج كما يلي:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

الآن، كل ما عليك فعله هو التحقق مما إذا كان المجلد الذي يوجد فيه systemctl (والذي حصلت عليه من أمر which) مُدرجاً ضمن المجلدات الظاهرة في ناتج الأمر echo $PATH.

إذا لم يكن مجلد systemctl مُدرجاً في ناتج echo $PATH، فستحتاج إلى إضافته إلى متغير PATH. للقيام بذلك، نفّذ الأمر التالي:

لـ مستخدمو Bash shell، افتح ملف ~/.bashrc في محرر نصوص:

nano ~/.bashrc

أضف السطر التالي في نهاية الملف:

export PATH=$PATH:/usr/bin

‏/usr/bin هو الدليل النموذجي الذي يوجد فيه systemctl في هذا المثال.

الآن، احفظ الملف وأغلقه بالضغط على CTRL + X ثم Y للتأكيد ثم Enter للحفظ.

لـ مستخدمو Zsh، افتح ملف ~/.zshrc في محرر نصوص:

nano ~/.zshrc

أضف السطر التالي في نهاية الملف:

export PATH=$PATH:/usr/bin

‏/usr/bin هو الدليل النموذجي الذي يوجد فيه systemctl في هذا المثال.

الآن، احفظ الملف وأغلقه بالضغط على CTRL + X ثم Y للتأكيد ثم Enter للحفظ.

بعد إتمام الخطوات أعلاه، استخدم الأمر echo $PATH للتحقق من أن مجلد systemctl قد أُضيف إلى PATH. ينبغي الآن أن تتمكن من تشغيل systemctl دون مواجهة خطأ "systemctl: command not found".

4. إعادة تثبيت systemd

إذا لم تُجدِ الحلول السابقة نفعاً ولا تزال تواجه خطأ "command not found"، فقد يحل إعادة تثبيت systemd بالكامل المشكلةَ. للقيام بذلك، نفّذ الأوامر التالية:

sudo apt purge systemd
sudo apt install systemd

ثم أعد تشغيل النظام بهذا الأمر:

sudo reboot

تحقق مما إذا كان systemctl يعمل بشكل صحيح.

5. التحقق من صحة إعداد systemd

أحياناً، قد تكون المشكلة بسيطة كتثبيت systemd بإعدادات خاطئة، مما يؤدي إلى ظهور خطأ "systemctl: command not found". كل ما عليك فعله لحل هذه المشكلة هو تنفيذ الأمر التالي، وستنتهي المسألة:

sudo dpkg-reconfigure systemd

6. إصدار قديم من Windows Subsystem for Linux (WSL)

في حال كنت تستخدم Ubuntu على WSL (نظام Windows الفرعي لـ Linux) تجدر الإشارة إلى أن الإصدارات القديمة من WSL، كـ WSL 1، لا تدعم systemctl بشكل أصلي، لذا بصرف النظر عن أيٍّ من الحلول السابقة التي تستخدمها، لن تتمكن من تشغيل systemctl.

إذا أردت استخدام وظائف systemctl، فستحتاج إلى الترقية إلى WSL 2 الذي يوفر دعماً أفضل لـ systemd. إذا لم تكن متأكداً مما إذا كنت تستخدم WSL أم لا، يمكنك التحقق من ذلك بتنفيذ الأمر التالي:

uname -a

إذا ذكر الناتج WSL، فهذا هو سبب ظهور خطأ "systemctl: command not found".

7. استخدام sudo service بديلاً عن systemctl

إذا كنت تواجه خطأ "systemctl: command not found" لأن نظامك لا يستخدم systemd، يمكنك استخدام الأمر sudo service لإدارة الخدمات. يعمل هذا الأمر مع أنظمة init القديمة مثل SysVinit أو Upstart. وهو مفيد لأنظمة Ubuntu التي تعتمد على سكريبتات init بدلاً من systemd.

على سبيل المثال، لتشغيل خدمة ما، نفّذ الأمر التالي:

sudo service <service_name> start

أفكار ختامية

حلّ systemd وأداة سطر الأوامر systemctl محلّ معظم أنظمة init القديمة، كـ SysVinit وUpstart. وعلى الرغم من أن systemd لا يحظى بقبول الجميع بسبب تصميمه الأحادي وابتعاده عن فلسفة Unix، إلا أنه لا يزال الخيار السائد في معظم الأنظمة. نأمل أن تكون قد تمكّنت من حلّ خطأ عدم إتاحة أمر systemctl، إذ إن تعذّر استخدام أداة سطر الأوامر الخاصة بـ systemd يُقيّد قدراته تقييدًا شديدًا.

الأسئلة الشائعة

ما هو systemctl وماذا تعني systemctl: Command Not Found؟

systemctl هي أداة سطر أوامر تُستخدم لإدارة الخدمات في أنظمة Linux التي تعمل بـ systemd، مثل Ubuntu. يظهر خطأ "systemctl: command not found" حين لا تكون الأداة متاحة أو يتعذّر الوصول إليها، وغالبًا ما يكون ذلك لأن النظام لا يستخدم systemd أو لأن حزمة systemd غير مثبّتة.

هل systemctl متاح في جميع إصدارات Ubuntu؟

لا، systemctl غير متاح في جميع إصدارات Ubuntu. فـ systemctl جزء من نظام init المسمى systemd، وهو النظام الافتراضي في معظم إصدارات Ubuntu الحديثة (اعتبارًا من الإصدار 15.04). أما الإصدارات الأقدم أو بعض عمليات التثبيت الدنيا، فقد تستخدم أنظمة init بديلة كـ SysVinit أو Upstart.

مشاركة

المزيد من المدونة

تابع القراءة.

صورة غلاف لأفضل التطبيقات ذاتية الاستضافة التي يمكنك تشغيلها مع Cosmos Cloud مع لوحات تطبيقات حول لوحة معلومات Cosmos.
الخوادم وأنظمة التشغيل

أفضل التطبيقات ذاتية الاستضافة التي يمكنك تشغيلها مع Cosmos Cloud: الملفات والوسائط وكلمات المرور والأتمتة والمزيد!

ربما أعددت Cosmos Cloud وتريد الآن معرفة التطبيقات التي تناسبه، أو ربما لم تقرر بعد بشأن Cosmos وتريد فقط معرفة مدى ملاءمته لسير عملك

Nick SilverNick Silver قراءة 16 دقيقة
غلاف Portainer مقابل Cosmos Cloud لإدارة تطبيقات Docker مع رسم تخطيطي لإعداد هجين وكتل تشغيل ووصول نيون.
الخوادم وأنظمة التشغيل

Portainer مقابل Cosmos Cloud: الأنسب لإدارة تطبيقات Docker

إن كنت تعرف Docker وتريد الطريقة الأنظف لتشغيل حزمة تطبيقات متنامية، فإليك الإجابة المختصرة لـ Portainer مقابل Cosmos Cloud. Portainer هو الخيار الأقوى للتحكم المباشر

Nick SilverNick Silver قراءة 14 دقيقة
رسم توضيحي لـ Cosmos Cloud مقابل CasaOS مقابل Umbrel يُظهر ثلاثة مسارات استضافة ذاتية داخل عالم شبكة سحابية مجرد.
الخوادم وأنظمة التشغيل

Cosmos Cloud مقابل CasaOS مقابل Umbrel: أي منصة استضافة ذاتية تناسب إعدادك؟

الإجابة المختصرة هي أن CasaOS لا يزال أسهل نقطة للبدء، وUmbrel يقدم أنظف تجربة مُنسَّقة، وCosmos Cloud يصبح أكثر منطقية عندما تريد تحكمًا أدق في النطاقات

Nick SilverNick Silver قراءة 11 دقيقة

جاهز للنشر؟ تبدأ من 2.48 $/شهر.

سحابة مستقلة منذ 2008. AMD EPYC، NVMe، 40 Gbps. استرداد خلال 14 يومًا.