واحدة من أقوى الأدوات المفيدة لمستخدمي Linux، وخاصة التوزيعات الحديثة مثل Ubuntu، هي أمر سيستيمكتل. عادةً ما يتم استخدام الأداة المساعدة لسطر الأوامر هذه للتفاعل مع systemd والنظام ومدير الخدمة.
من خلال الأمر، يمكنك إدارة خدمات النظام وعرض حالتها وتشغيلها أو إيقافها وتمكينها وتعطيلها عند بدء تشغيل النظام. مفيد جدا، أليس كذلك؟ ولكن إذا لم يتم العثور على أمر systemctl أو التعرف عليه، فسوف تواجه مشكلة "سودو: systemctl: لم يتم العثور على الأمر" خطأ.
لذلك، دعونا نتحدث عن معنى الخطأ "لم يتم العثور على الأمر systemctl: لم يتم العثور على الأمر"، والأسباب المختلفة التي تجعلك تواجه هذا الخطأ، وكيفية إصلاح هذا الخطأ.
ماذا يعني systemctl: لم يتم العثور على الأمر؟
ببساطة، الخطأ "systemctl: لم يتم العثور على الأمر" يعني أن الأداة المساعدة لسطر الأوامر systemctl غير متاحة أو يمكن الوصول إليها في البيئة الحالية. يمكن أن يرجع ذلك إلى مجموعة من الأسباب، والتي تعود جميعها إما إلى كون البيئة بيئة غير نظامية أو عدم تثبيت حزمة systemd على النظام.
في الأساس، لم يتم تثبيت حزمة systemd، أو أن توزيعة Linux أو الإصدار الخاص بك لا يستخدم systemd؛ بل يستخدم أنظمة إدارة الخدمات الأقدم مثل init.d. أحد الاحتمالات الأخرى هو أن متغير البيئة PATH لا يتضمن الدليل الذي يوجد به systemctl، مما يعني أن الصدفة الخاصة بك لا يمكنها العثور عليه.
الآن بعد أن أصبحت لديك فكرة عما يمكن أن يكون به خطأ في نظامك، مما يؤدي إلى الخطأ "لم يتم العثور على الأمر systemctl: لم يتم العثور على الأمر"، دعنا نلقي نظرة على كيفية التحقق من مكان وجود مشكلتك وكيفية إصلاحها.
إصلاح systemctl: خطأ لم يتم العثور على الأمر
في الخطوات التالية، سنتحقق مما إذا كان نظامك قد تم تثبيت systemd عليه ويستخدم systemctl أم لا، بالإضافة إلى التحقق من مسار systemctl. بمجرد التحقق من المشكلة، سنتخذ الخطوات اللازمة لإصلاح الخطأ.
1. التحقق مما إذا كان نظامك يستخدم systemd
نظرًا لأنه لا يمكن استخدام Ubuntu systemctl إلا إذا كانت حزمة systemd مثبتة لديك، فسنتحقق أولاً مما إذا كان من المفترض أن يستخدم نظامك systemd عن طريق تشغيل الأمر التالي:
ps -p 1 -o comm=
أو يمكنك التحقق من إصدار systemd باستخدام الأمر التالي:
systemd --version
إذا كان الإخراج هو systemd، فإن systemd هو نظام init الخاص بك ويجب أن يكون Ubuntu systemctl مثبتًا عليه. ومع ذلك، إذا كان الإخراج هو init أو مدير عمليات آخر، فهذا يعني أن نظامك يستخدم نظام تهيئة بديل، ولن يعمل systemctl إلا إذا قمت بالترحيل إلى systemd.
إذا رأيت أنظمة تهيئة قديمة مثل Upstart أو SysVinit وتريد التبديل إلى systemd لاستخدام systemctl، فاتبع الخطوات التالية:
1. قم بتثبيت systemctl عن طريق تثبيت systemd باستخدام الأمر التالي:
sudo apt install systemd-sysv
2. أعد تشغيل نظامك عن طريق تشغيل هذا الأمر:
sudo reboot
3. تأكد من أن نظامك يستخدم systemd الآن:
ps -p 1 -o comm=
يجب أن يكون الإخراج systemd الآن.
2. التأكد من تثبيت systemd بشكل صحيح
في الظروف العادية، عندما يتم تثبيت systemd وتشغيله كنظام init الخاص بك، يجب أن يعمل الأمر systemctl بشكل صحيح. إذا لم يكن الأمر كذلك، فهذا يعني أن حزمة systemd إما مفقودة أو مثبتة بشكل غير صحيح.
لاحظ أنه إذا كنت تستخدم إصدارًا بسيطًا من Ubuntu، مثل حاوية Docker أو مثيل سحابي، فربما لم يتم تثبيت systemd افتراضيًا. لتثبيت systemctl من خلال تثبيت systemd، قم بتشغيل الأوامر التالية:
sudo apt update sudo apt install systemd
بمجرد التثبيت، تحقق لمعرفة ما إذا كان الأمر systemctl متاحًا أم لا.
3. التحقق من المسار الخاص بـ systemctl
إحدى المشكلات الشائعة المتعلقة بخطأ لم يتم العثور على systemctl هي إمكانية تثبيت systemctl، ولكنه ليس موجودًا في PATH الخاص بنظامك. للتحقق مما إذا كانت ثنائيات systemd موجودة أم لا في الأدلة النموذجية حيث توجد، مثل /bin، أو /usr/bin، أو /usr/local/bin، يمكنك استخدام الأمر التالي:
which systemctl
إذا تم العثور على systemctl في أي من أدلةك المدرجة في PATH، فيجب أن تحصل على نتيجة مثل هذا:
/usr/bin/systemctl
إذا لم يتم العثور على systemctl في أي من الأدلة في PATH، فلن يُرجع الأمر أي شيء.
ومع ذلك، قد لا يعمل systemctl على الرغم من وجوده في الأدلة الخاصة بك. وذلك لأن systemctl قد يكون موجودًا في دليل غير مضمن في PATH. في هذه الحالة، سيتعين عليك التحقق مما إذا كان الدليل الذي يوجد به systemctl جزءًا من نظامك باستخدام الأمر التالي:
echo $PATH
يجب أن يكون الإخراج شيء من هذا القبيل:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
الآن، كل ما عليك فعله هو التحقق مما إذا كان الدليل الموجود فيه systemctl (الذي حصلت عليه من أي أمر) مدرجًا في الدلائل المدرجة في الإخراج من أمر echo $PATH.
إذا لم يتم تضمين دليل systemctl في مخرجات echo $PATH، فسيتعين عليك إضافته إلى متغير PATH الخاص بك. للقيام بذلك، سيكون عليك تشغيل الأمر التالي:
ل مستخدمي باش شل، افتح الملف ~/.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: لم يتم العثور على الأمر".
4. إعادة تثبيت النظام
إذا لم تنجح الإصلاحات السابقة وما زلت تواجه خطأ الأمر لم يتم العثور على الأمر، فقد تؤدي إعادة تثبيت systemd بالكامل إلى حل المشكلة. للقيام بذلك، قم بتشغيل الأوامر التالية:
sudo apt purge systemd sudo apt install systemd
ثم أعد تشغيل نظامك باستخدام هذا الأمر:
sudo reboot
تحقق لمعرفة ما إذا كان Systemctl يعمل.
5. التحقق من تكوين systemd بشكل صحيح
في بعض الأحيان، يمكن أن تكون المشكلة بسيطة مثل تثبيت Systemd بشكل خاطئ، مما يؤدي إلى ظهور خطأ "systemctl: لم يتم العثور على الأمر". كل ما عليك فعله لإصلاح هذه المشكلة هو تشغيل الأمر التالي، وبذلك تكون قد انتهيت:
sudo dpkg-reconfigure systemd
6. نظام Windows الفرعي القديم لنظام Linux (WSL)
إذا كنت تستخدم Ubuntu أدناه WSL (نظام Windows الفرعي لنظام Linux) يجب أن تعلم أن الإصدارات الأقدم من WSL، مثل WSL 1، لا تدعم systemctl أصلاً، لذا بغض النظر عن الإصلاحات السابقة التي تستخدمها، فلن تتمكن من تشغيل systemctl.
إذا كنت تريد الاستفادة من وظائف systemctl، فسيتعين عليك الترقية إلى WSL 2، الذي يتمتع بدعم أفضل لـ systemd. إذا لم تكن متأكدًا مما إذا كنت تستخدم WSL أم لا، فيمكنك التحقق باستخدام الأمر التالي:
uname -a
إذا كان الإخراج يشير إلى WSL، فهذا هو سبب ظهور الخطأ "لم يتم العثور على الأمر systemctl: لم يتم العثور على الأمر".
7. استخدام خدمة sudo كبديل لـ systemctl
إذا كنت تواجه الخطأ "systemctl: لم يتم العثور على الأمر" لأن نظامك لا يستخدم systemd، فيمكنك استخدام أمر خدمة Sudo لإدارة الخدمات. يعمل هذا الأمر مع أنظمة init الأقدم مثل SysVinit أو Upstart. يعد هذا مفيدًا لأنظمة Ubuntu التي تعتمد على البرامج النصية init بدلاً من systemd.
على سبيل المثال، لبدء خدمة ما، يمكنك تشغيل:
sudo service <service_name> start
الأفكار النهائية
حلت systemd وأداة سطر الأوامر systemctl الخاصة بها محل معظم أنظمة init الأقدم الأخرى مثل SysVinit وUpstart. على الرغم من أن systemd قد لا يكون بمثابة كوب الشاي المفضل للجميع بسبب تصميمه المتجانس وفلسفته غير التابعة لنظام Unix، إلا أن systemd لا يزال يعتبر بشكل عام الخيار السائد. لذا، نأمل أن تكون قادرًا على حل خطأ أمر systemctl غير متاح، حيث أن عدم القدرة على استخدام أداة سطر الأوامر المساعدة في systemd يحد بشدة من قدراتها.
التعليمات
ما هو systemctl وماذا يعني systemctl: لم يتم العثور على الأمر؟
systemctl هي أداة سطر أوامر تستخدم لإدارة الخدمات في أنظمة Linux التي تعمل بنظام systemd، مثل Ubuntu. يحدث الخطأ "systemctl: لم يتم العثور على الأمر" عندما لا تكون الأداة متاحة أو يمكن الوصول إليها، عادةً لأن النظام لا يستخدم systemd أو لم يتم تثبيت حزمة systemd.
هل systemctl متاح على جميع إصدارات Ubuntu؟
لا، systemctl غير متوفر في كافة إصدارات Ubuntu. يعد systemctl جزءًا من نظام systemd init، وهو النظام الافتراضي في معظم إصدارات Ubuntu الحديثة (من 15.04 فصاعدًا). قد تستخدم الإصدارات الأقدم أو بعض عمليات التثبيت البسيطة أنظمة init بديلة مثل SysVinit أو Upstart بدلاً من ذلك.