كيفية تحويل الجهد والتيار ثلاثي الأطوار، و kW، و kVA، ومعامل القدرة
تعلم صيغ التيار ثلاثي الأطوار المتوازنة وقم بتحويل جهد الخط والتيار و kW و kVA ومعامل القدرة خطوة بخطوة، مع مثال عملي وحدود للتحقق منها.
إذا تسبب أحد الأوامر في بطء سطح مكتب أوبونتو أو في نقص ذاكرة الخادم، فضع الأمر وعملياته الفرعية في مجموعة تحكم (cgroup) مُدارة بواسطة systemd مع تحديد حصة لوحدة المعالجة المركزية وسقف للذاكرة. في إصدارات أوبونتو الحالية، systemd-run --scopeيُعد هذا الحل الأسرع والأكثر عملية: حيث يبدأ الأمر في نطاق مؤقت، ويطبق systemd الحدود من خلال عناصر تحكم مجموعة التحكم.
يُحدد المثال أدناه حجم العمل بنصف سعة وحدة المعالجة المركزية و1 جيجابايت من الذاكرة. هذه حدود عامة تشمل العمليات الفرعية، ولا تضمن تشغيل البرنامج بسرعة محددة.
يمكن لعملية مشغولة أن تتنافس مع التطبيقات التفاعلية، بينما قد تدفع عملية تستهلك الكثير من الذاكرة الجهاز إلى استعادة الذاكرة أو إلى حالة نفاد الذاكرة. تقوم مجموعة التحكم (cgroup) بتجميع عملية مع عملياتها الفرعية حتى يتمكن نظام التشغيل من إدارة هذه المجموعة والتحكم بها. يوفر نظام systemd في أوبونتو واجهة سهلة الاستخدام لهذه الضوابط.
تختلف إعدادات وحدة المعالجة المركزية والذاكرة في طريقة عملها. CPUQuota=50%يحدد هذا الخيار وقت وحدة المعالجة المركزية بنصف سعة وحدة معالجة مركزية واحدة، محسوبًا كمعدل خلال فترة الجدولة. 200%تمثل القيمة 0 وقت وحدتي معالجة مركزية كحد أقصى عند توفرهما. هذا حد أقصى، وليس أولوية لوحدة المعالجة المركزية أو حجزًا لها. MemoryMax=1Gيحدد هذا الخيار حدًا أقصى ثابتًا للذاكرة المخصصة لمجموعة التحكم (cgroup)؛ إذا لم يتمكن عبء العمل من البقاء دونه، فقد تستعيد النواة الذاكرة أو تُنهي عمليةً ما في تلك المجموعة بسبب نفاد الذاكرة. اختر حدًا مع هامش كافٍ للتطبيق والعمليات الفرعية التابعة له.
تستخدم أنظمة أوبونتو التي تعتمد على systemd عادةً التسلسل الهرمي الموحد لمجموعات التحكم v2. تأكد من الإعداد النشط قبل الاعتماد على المسارات الموضحة لاحقًا.
stat -fc %T /sys/fs/cgroup
systemctl --version | head -n 1
يجب أن يُظهر الأمر الأول cgroup2fsنوع نظام الملفات. إذا أظهر نوع نظام ملفات آخر، فلن تنطبق مسارات ملفات cgroup v2 المذكورة في هذه المقالة كما هي. قد تظل خصائص systemd مدعومة بتسلسل هرمي مختلف، ولكن استخدم وثائق التوزيعة المطابقة بدلاً من نسخ مسارات v2.
تحقق أيضًا من إصدار systemd الدقيق في حال رفض إحدى الخصائص. يصف دليل نوبل الخاص بنظام أوبونتو CPUQuota=هذه MemoryMax=الخاصية كإعدادات للتحكم في الموارد؛ وقد تتضمن إصدارات أوبونتو الأقدم إصدارات مختلفة من systemd.
شغّل البرنامج باستخدام الأمر `npm run dev` systemd-run، مع استبدال الملف التنفيذي الحقيقي والوسائط. بالنسبة لأمر في المجلد الحالي، استخدم الأمر `npm run dev` ./ومرّر جميع الوسائط بعده --.
systemd-run --scope \
-p CPUQuota=50% \
-p MemoryMax=1G \
-- ./my-program --input data.csv

بالنسبة للأوامر التي يملكها المستخدم، جرّب تشغيلها بدون صلاحيات المستخدم sudoأولاً. إذا أبلغ نظام systemd بأن وحدة التحكم أو الخاصية المطلوبة غير متوفرة، فقد لا يملك مدير المستخدمين صلاحية تفويضها؛ قد يكون إعادة المحاولة بصلاحيات المستخدم الجذر مناسبًا لأحمال العمل على مستوى النظام، ولكنه يُغيّر سياق أمان الأمر. لا تُشغّل برنامجًا غير موثوق به بصلاحيات المستخدم الجذر بشكل عشوائي. إذا كان استخدام مدير النظام بصلاحيات المستخدم الجذر ضروريًا، فاستخدمه sudo systemd-run --scope ...فقط بعد مراعاة هذا التغيير.
تبقى نافذة الطرفية متصلة بالنطاق أثناء تنفيذ الأمر. Ctrl+Cيؤدي الضغط على زر معين إلى مقاطعة العملية الأمامية. النطاق مؤقت ويختفي عادةً بعد انتهاء العمليات. تُعد هذه طريقة ملائمة لبدء أمر ضمن حدود معينة، بدلاً من اعتمادها كسياسة دائمة لعمليات التشغيل اللاحقة.
systemd-runيطبع اسم الوحدة التي ينشئها، وعادةً ما يكون شيئًا مثل run-….scope. أثناء تشغيل الأمر، اعرض شجرة cgroup:
systemd-cgls
حدد نطاق التحكم المؤقت وتأكد من ظهور البرنامج المستهدف والبرامج الفرعية التابعة له ضمنه. هذا مهم لأن البرنامج الفرعي الذي يعمل خارج النطاق لن يكون مشمولاً بنفس حد التحكم (cgroup).

استخدم اسم النطاق المطبوع في الأمر التالي. استبدله run-abc.scopeبالاسم الفعلي:
systemctl show run-abc.scope \
-p ControlGroup -p CPUQuotaPerSecUSec -p MemoryMax
CPUQuotaPerSecUSec=50000يتوافق هذا مع حصة 50% عندما تكون فترة حصة systemd هي 100 مللي ثانية؛ MemoryMax=1073741824أي ما يعادل 1 جيجابايت بالبايت. تُعدّ القيم الفعلية أكثر فائدة من افتراض أن كل مضيف سيقبل كل طلب دون تغيير، لأن مجموعات التحكم الرئيسية ووحدات التحكم المتاحة قد تُقيّد النتيجة الفعلية.

تُحدد هذه ControlGroupالخاصية مسار مجموعة التحكم (cgroup) بالنسبة إلى /sys/fs/cgroup. قم بتخزينها في متغير shell حتى تتبع الأوامر المسار المُعين فعليًا على جهازك:
UNIT=run-abc.scope
CG=$(systemctl show "$UNIT" -p ControlGroup --value)
printf 'Group: %s\n' "$CG"
cat "/sys/fs/cgroup$CG/cpu.max"
cat "/sys/fs/cgroup$CG/memory.max"
في الإصدار الثاني من cgroup، cpu.maxيحتوي على حصة وفترة زمنية بالمايكروثانية. على سبيل المثال، 50000 100000يعني ذلك 50 مللي ثانية من وقت وحدة المعالجة المركزية في كل فترة 100 مللي ثانية. memory.maxيُظهر الحد الأقصى للذاكرة بالبايت. إذا كانت الملفات مفقودة، فتأكد من أن النطاق لا يزال نشطًا وأن النواة تستخدم الإصدار الثاني من cgroup.

إذا قمت بتشغيل وحدة طويلة الأمد مُسماة وتحتاج إلى تعديل حدودها، فإن systemd يدعم تغيير خصائص الموارد على وحدة نشطة، على سبيل المثال sudo systemctl set-property --runtime my-worker.service CPUQuota=50% MemoryMax=1G. ينطبق هذا على مجموعة التحكم (cgroup) الخاصة بتلك الخدمة ويتطلب امتيازات مناسبة. لا يقوم النظام بربط أي عملية قيد التشغيل لمجرد معرفة مُعرّف العملية (PID)؛ بالنسبة للعمليات التي تُنفذ لمرة واحدة، أوقفها بشكل صحيح وأعد تشغيلها من خلال النطاق المحدود. أما بالنسبة للخدمات المستمرة، فقم بتكوين الخصائص في وحدة الخدمة أو في إضافة systemd، ثم أعد تشغيلها خلال فترة صيانة مناسبة.
أبقِ عبء العمل نشطًا أثناء فحصه. تأكد من أن systemd-cglsالعملية وفروعها تقع ضمن النطاق المقصود، وأن systemctl showالبرنامج يُبلغ عن الخصائص المطلوبة، وأن الملفات المقابلة cpu.maxموجودة memory.maxبقيم محددة. عند انتهاء العملية، يُزال النطاق المؤقت، لذا قد تختفي ملفات مجموعة التحكم الخاصة بها.
يُحدد نظام الحصص وقت استخدام وحدة المعالجة المركزية، ولكنه لا يضمن نسبة ثابتة على شاشة سطح المكتب، وقد يتسبب حد الذاكرة الأقصى في حدوث أعطال إذا احتاج التطبيق إلى أكثر من هذا الحد. في حال أصبح عبء العمل غير مستقر، أوقفه وارفع الحد إلى قيمة آمنة مُقاسة، أو استخدم MemoryHigh=عتبة ضغط أقل مع حد أعلى MemoryMax=. للاطلاع على السلوك الدقيق، راجع وثائق systemd ونواة النظام المُثبتة لديك؛ المراجع الموثوقة هي دليل تشغيل systemd في أوبونتو ، ودليل التحكم في موارد systemd في أوبونتو ، ووثائق cgroup v2 لنواة لينكس .
تعلم صيغ التيار ثلاثي الأطوار المتوازنة وقم بتحويل جهد الخط والتيار و kW و kVA ومعامل القدرة خطوة بخطوة، مع مثال عملي وحدود للتحقق منها.
قم بتشغيل حمل عمل داخل نطاق systemd مع CPUQuota و MemoryMax، ثم تحقق من الحدود من خلال cgroup v2.
قم بإعداد dnscrypt-proxy كجسر DoH محلي لـ Pi-hole على Ubuntu 24.04، مع مستمع محلي فقط، واختيار محلل، وعمليات فحص قبل تبديل DNS.
تحقق من إعدادات لوحة اللمس في أوبونتو، وتأكد من تثبيت Wayland، واختبر خاصية التمرير المدمجة في GNOME قبل استكشاف أخطاء التطبيقات أو الأجهزة وإصلاحها.
قم بإنشاء مصفوفة بيانات Debian 12 RAID 1 ثنائية الأقراص والتحقق منها، وقم بتهيئتها بأمان، وقم بتكوينها للتجميع والتركيب بعد إعادة التشغيل.
قم بإعداد تشفير المفتاح العشوائي لقسم التبديل الحالي في Debian 12، وتحقق من تعيين dm-crypt النشط، وافهم المفاضلة المتعلقة بالسبات.
تقييد حسابات SSH في Ubuntu 24.04 إلى مجلدات SFTP المحددة باستخدام chroot والأذونات المناسبة وقواعد المطابقة والاختبارات الآمنة - دون منح الوصول إلى shell.
ابحث عن العملية التي تمتلك قفل واجهة dpkg الأمامية في Ubuntu، ودع عمل الحزمة يكتمل، وقم بإصلاح عمليات التثبيت المتقطعة دون حذف ملفات القفل.
قم بإعداد لقطات نظام Btrfs المجدولة على سطح مكتب Ubuntu باستخدام Timeshift، وتحقق من تخطيط وحدة التخزين الفرعية في Ubuntu، واختر فترة الاحتفاظ، وافهم ما لا يمكن للقطات حمايته.
خطط لعملية ترحيل أكثر أمانًا من Debian 12 إلى Testing: قم بالترقية من خلال Stable، وقم بعمل نسخة احتياطية، ونظف مصادر APT، وقم بمحاكاة تغييرات التبعية، وتحقق مما تغير.