سؤال هل من الممكن وضع X للنوم ، تاركًا بقية النظام مستيقظًا؟


تخيل جهاز كمبيوتر وظيفتين:

  1. A fileserver وخادم ويب محلي ، مطلوب 24/7.
  2. خادم رسومية لمركز وسائط ، مطلوب فقط عندما يقوم شخص ما باستخدامه.

أنا أفكر في بناء آلة كهذه ، لذا اسمحوا لي أن أركل بعض الأقراص من سطح مكتبي المتعطش للسلطة واستبدل مركز الوسائط اتوم الثاني البطيء.

المشكلة مع هذا البناء هو XBMC هو الوحش أكل الطاقة. عند تركها للأجهزة الخاصة بها ، لن تقوم وحدة المعالجة المركزية أبداً بإدخال أي شيء حتى قريبة من حالة السكون. لقد تحسنت الأمور ولكن الطريقة الوحيدة لتكون فعالة هي وضعها في النوم S3. من الواضح أن هذا يغلق أي شيء يجري. نستيقظ حاليًا عبر USB (مستقبل الأشعة تحت الحمراء).

لن يكون S3 Sleep ممكنًا على الجهاز الجديد لأنني أريد تشغيله على الخادم ، لكنني أرغب في وضع خادم X (وجميع عملائه) في وضع السكون. إذا كان هذا ممكنًا. فعلا؟

إذا فشلت في ذلك ، يمكنني دائمًا إنهاء X ولكن ذلك سيخسر حالة XBMC وأتفادى ذلك. إذا كانت هذه هي الطريقة الوحيدة ، هل يمكنك اقتراح طريقة لإعادة تهيئة X من أمر IR؟ (وبطريقة لا تتعارض مع تعامل XBMC مع الأشعة تحت الحمراء).

ملحوظة: أنا مرن تماما مع كومة رسومية. انها حاليا فقط X و nodm تحميل إصدار مستقل من XBMC ولكن إذا احتجت ما تحتاجه إلى شيء آخر ، فلا بأس بذلك. أنا أيضا قادرة على اختبار هذا قبل بناء آلة جديدة (على الجهاز الحالي).


4
2018-05-24 09:55


الأصل


kill -[STOP|CONT] <PID> تبدو وكأنها قد تكون مفيدة المنتدى يمكنهم العمل على شجرة عملية و يمكنني تشغيل CONT إشارة من الأشعة تحت الحمراء. - Oli♦


الأجوبة:


الإيقاف المؤقت لشجرة عملية

أنا في منتصف الطريق هناك. وجدت kill -STOP <PID> الذي يجمد العملية. هناك CONT الإصدار أيضا الذي يوقظه. لذلك أستطيع أن أجد و STOP ال nodm شجرة عملية مع هذا الأمر مثير:

pstree -p $(ps ux | awk '/nodm$/ {print $2}') | grep -oP '\d+' | xargs kill -STOP

ويمكننا توقظ جميع العمليات المتوقفة (للمستخدم الحالي) مع:

ps ux | awk '$8 ~ /^T/ {print $2}' | xargs kill -CONT

هذا في الواقع يبدو أن العمل. لقد قمت باختبارها للتو وأنا مندهش من أن X أو XBMC أو الملف الذي يتم تشغيله على NFS (نعم هذا يعمل في منتصف الفيديو) يبدو أنه تم إيقافه مؤقتًا لمدة خمس دقائق.

استئناف من الأشعة تحت الحمراء

كان هذا هو التحدي التالي - كيف يمكنني إعادة تشغيل هذه العمليات من الأشعة تحت الحمراء؟ لهذا نحن بحاجة irexec التي يمكن تشغيل أمر تعسفي لأي زر ، بغض النظر عن ما هو الاستماع إلى lirc.

نحن بحاجة إلى بعض النصوص في مكانها لتحقيق ذلك. أول ~/.lircrc

begin
prog = irexec
button = *
config = ~/.resume &
end

و ~/.resume (هذا سوف يحتاج chmod +x ~/.resume يعمل بعد إنشائه)

#!/bin/sh
ps ux | awk '$8 ~ /^T/ {print $2}' | xargs kill -CONT

ثم كل ما يتعين علينا القيام به هو الحمل irexec. للاحتفاظ بها من zombified عندما يتم تشغيل أمر STOP ، يجب علينا تحويلة العملية من الشجرة الحالية التي تكون بسيطة مع setsid. في حالتي ، أقوم بإضافة ما يلي قبل مشغل xbmc ~/.xsession:

setsid irexec

اللغز النهائي: كيف يمكنني الحصول على XBMC لتشغيل البرنامج النصي STOP بدلاً من النوم؟

الجزء الوحيد الذي لم أحل الآن هو الحصول على XBMC لتشغيل أمر بدلاً من إيقاف التشغيل. أعمال جارية. الخيار الوحيد الذي يمكنني العثور عليه في الوقت الحالي هو إنشاء شاشة توقف بايثون مخصصة لـ XBMC والتي تبدو هل حقاباهتة (وأنا لا أستطيع الحصول عليها تعمل).


3
2018-05-24 10:30





لست متخصصًا في xbmc ، ولكن إذا استخدمت Lirc للرسائل IR التي يمكن أن تضيف شيئًا مثل هذا إلى ملفات ~ / .licrc أو / etc / lirc / lircrc لتشغيل البرامج النصية.

  begin wakeupwait
       button = OK (of course you may prefer to use another button for that purpose) 
       prog = irexec
       config = <your wake-up script path>
       quit
  end wakeupwait

  begin
       button = OK (same button) 
       prog = irexec
       config = <your pause script path>
       mode = wakeupwait
  end

بعض الوثائق:

irexec http://www.lirc.org/html/irexec.html

.lircrc http://www.lirc.org/html/configure.html (خيار الوضع يستحق القراءة)

ايمانويل


1
2018-05-24 11:57



نعم ، وجدت هذا بشكل منفصل. يبدو أنه يقوم بالعمل ولكن يجب أن يتم تحميله خارج الحلقة X (في هذه الحالة) أو سيتم تعليقه أيضًا. - Oli♦
طريقة واحدة للقيام بذلك هي استخدام دفعة القيادة: صدى القيادة | دفعة - Emmanuel