تظهر نسخة OpenVPN عند الإقلاع باسم لا تعرفه، ويعمل إيقافها حتى إعادة التشغيل التالية. يعني هذا النمط أنك أزلت العملية لكن ليس التنشيط. هما كائنان مختلفان، وواحد فقط منهما مرئي في شاشة الحالة. يتطلب العثور على التنشيط أربعة أوامر للقراءة فقط وقرارًا واحدًا.

سمِّ الوحدة الدقيقة أولًا

ابدأ من اسم الوحدة في سجل journal بدلًا من اسم ملف التعريف. قد تكون النسخة باسم openvpn@ أو openvpn-client@ أو openvpn-server@ أو شيء خاص بالتوزيعة، وتخمين الاسم يقودك إلى القالب الخطأ. يذكر مخرجات الحالة الوحدة التي عملت فعلًا، وهذا هو الاسم الوحيد المهم هنا. انسخه بدقة، بما في ذلك أي لاحقة.

تصف الأوامر التالية تلك الوحدة دون تغيير أي شيء. يبلّغ systemctl show عن مسار المقطع ومسار المصدر وحالة ملف الوحدة وأي drop-in وما فعّلها. يعرض list-dependencies --reverse أي الوحدات المحمّلة تشير إليها. كلاهما للقراءة فقط، لذا شغّلهما قبل تكوين نظرية.

استبدل الاسم المرصود في كل مكان. الاسم المثال المنسوخ هو الطريقة الأكثر شيوعًا للتحقيق في الخدمة الخطأ، وهو يعطي إجابات واثقة عن وحدة لم تعمل قط.

اقرأ القالب لتعرف اسم الملف

وحدة النسخة هي توسيع لقالب، والقالب يحدد أي ملف تهيئة تقرأ. سطر أوامر ينتهي بعنصر نائب خاص بالنسخة يُحل إلى اسم النسخة مع اللاحقة. إذا كانت اللاحقة .conf وكانت النسخة تسمى old، فالملف هو old.conf. إذا سمّيت النسخة old.conf، فسيطلب القالب نفسه old.conf.conf.

هذه التفصيلة تفسر فئة من التكرارات. يضيف أحدهم نسخة ثانية باسم خطأ، فتبقى الأولى تعمل، وينتهي المضيف بنفقين وسجل واحد مربك.

اقرأ القالب الفعّال بدلًا من الملف الذي تتذكر أنك حررته. يمكن لـ drop-in أن يستبدل سطر الأوامر، والاستبدال هو ما يعمل عند الإقلاع.

تتبّع كيف يدخل في معاملة الإقلاع

ثلاثة مسارات شائعة: رابط wants من هدف، أو متطلب من وحدة أخرى، أو وحدة مولّدة من مولّد حزمة. تغطي قائمة التبعيات العكسية الأولين كمدخلات محمّلة في الرسم. لا تغطي مؤقتًا أو خُطافًا أو طلبًا خارجيًا، ولهذا تكون القائمة دليلًا لا تدقيقًا كاملًا.

المخرجات المولّدة تحت /run/systemd/generator منتج وليست مصدرًا. تحريرها يبقى حتى التوليد التالي فقط، ولهذا يبدو إصلاح مطبَّق هناك ناجحًا ثم يرتد.

تحقق من المدخل الموثق للحزمة قبل افتراض مصدر قراءة المولّد. فحص دليل غير موثق هو السبب المعتاد لظهور وحدة دون رابط تنشيط.

أزل التنشيط، لا العملية فقط

إذا كانت النسخة ممكنة مباشرة وقديمة فعلًا، فإن systemctl disable --now يوقفها ويزيل رابط الإقلاع في خطوة واحدة. تحقق أولًا من أن هذا النفق ليس مسارك الإداري الوحيد إلى المضيف. الأمر مثال على دورة الحياة، وليس اقتراحًا لإيقاف كل VPN على الجهاز. نفّذ التحقق قبل الأمر، لا بعده.

النصفان قابلان للفصل وغالبًا ما يُخلطان. التعطيل لا يوقف خدمة قيد التشغيل، والإيقاف لا يزيل التنشيط، لذا يفسر أمر جزئي مشكلة تعود عند الإقلاع.

يمكن لوحدة معطّلة أن تبدأ بوحدة أخرى أو بطلب صريح. عندما يملك المولّد التنشيط، صحح مدخل المولّد بدلًا من تعطيل مخرجاته. الحجب يغلق مسارات أكثر لكنه قد يكسر التبعيات، لذا ليس بديلًا عن الفهم.

تحقق بإعادة تشغيل، لا بشاشة حالة

أعد تحميل systemd إذا تغيرت تعريفات الوحدات أو مدخلات المولّد، ثم افحص الحالة الناتجة. إعادة تحميل الخدمة الخفية لا تدفع ملف تعريف جديدًا إلى نفق قيد التشغيل، لذا الفحصان منفصلان. جدول إعادة تشغيل وأكّد بقاء النسخة غائبة بينما لا يزال النفق المقصود يعمل.

احتفظ بملف التعريف القديم حتى تُفهم ملكيته، ثم اسحبه عبر العملية المقصودة. النجاح هو وحدة غائبة ومسار وصول عامل، لا وحدة فاشلة مفقودة من شاشة واحدة.

مقالات ذات صلة