มี daemon ต่อผู้ใช้ไหม


11

ฉันต้องเรียกใช้กระบวนการพื้นหลังบางอย่างที่มีชีวิตอยู่ตราบใดที่ฉันเข้าสู่ระบบด้วยผู้ใช้บางคน

มีบางสิ่งที่เหมือน daemon ต่อผู้ใช้หรือไม่ ฉันรู้เพียง daemons ทั่วโลกที่อยู่จากการเริ่มต้นคอมพิวเตอร์ 'จนกระทั่งปิด (หรือเริ่มต้น / ฆ่าด้วยตนเอง)

สำหรับตอนนี้ฉันได้สร้างสคริปต์ที่ตรวจสอบว่ากระบวนการนั้นมีอยู่แล้วและสร้างกระบวนการหากไม่มี สคริปต์นี้จะมีการเรียกใช้แล้วที่มีคำสั่งจากฉันnohup .profileวิธีนี้กระบวนการเปิดตัวเมื่อเริ่มต้นและจะเปิดตัวเพียงครั้งเดียว (แม้จะมีหลายrxvtคำมาและไป) กระนั้นก็ไม่เคยถูกฆ่าหลังจากฉันเข้าสู่ระบบ (ซึ่งไม่ใช่ภัยพิบัติ แต่ก็สะอาดกว่าที่จะยุติกระบวนการ)

คำตอบ:


9

systemd อนุญาตให้ผู้ใช้เรียกใช้อินสแตนซ์ systemd ของตนเองเพื่อจัดการ daemons ส่วนตัว

หากคุณมี systemd ติดตั้งทั้งหมดที่คุณต้องทำคือการเปิดตัวและจัดการบริการของคุณโดยใช้systemd --user ผู้ใช้บริการจะได้รับการค้นหาในsystemctl --user~/.config/systemd/user

โดยค่าเริ่มต้น systemd จะฆ่าบริการผู้ใช้ออกจากระบบ (ตามที่คุณร้องขอ) พฤติกรรมนี้สามารถเปลี่ยนแปลงได้โดยการเปิดใช้งานการอ้อยอิ่งสำหรับผู้ใช้ด้วยloginctl --enable-linger $USERคำสั่ง

Mor ข้อมูลที่สามารถพบได้บนหน้า ArchWiki


1
มีการตั้งค่าเพื่อเปิดใช้งาน linger จากไฟล์กำหนดค่าแทนคำสั่ง bash
CMCDragonkai

4

บริการ dbus นั้นมีความหมายว่า ... ตกลงสามารถใช้สำหรับ :-) ได้อย่างแม่นยำ dbus deamon ต่อผู้ใช้เริ่มต้นขึ้นเมื่อผู้ใช้ล็อกอินเข้าสู่ระบบเดสก์ท็อปและจะสิ้นสุดลงเมื่อผู้ใช้ออกจากระบบ (ดูหน้าหลักdbus-launchและตัวเลือก--exit-with-session) สามารถเริ่มบริการ dbus พร้อมกับอินสแตนซ์ dbus หรือเมื่อส่วนต่อประสานของบริการถูกเรียกครั้งแรกผ่าน dbus ผู้ใช้แต่ละคนสามารถมีข้อมูลจำเพาะบริการ dbus ของตัวเองกำหนดไว้ในไดเรกทอรีที่ซ่อนอยู่ในบ้านของผู้ใช้หรือทั่วโลก/etcมา ดูโฮมเพจของ dbus บน freedesktopเพื่อดูเอกสารจำนวนมากและการใช้งานอ้างอิง

ฉันใช้ distros ที่เป็นพื้นฐานของ Debian ในปัจจุบันเท่านั้น ทั้งหมดนั้นมีสคริปต์/etc/X11/Xsession.dซึ่งมักจะแก้ไขสตริงซึ่งส่วนท้ายสุดจะถูกประเมินเป็นคำสั่งที่เริ่มสภาพแวดล้อมเดสก์ท็อปที่เลือก มีอยู่คนหนึ่งสคริปต์ดังกล่าวสำหรับ dbus ซึ่ง prepends dbus-launchคำสั่งด้วยเสื้อคลุม เสื้อคลุมนี้เปิดตัว dbus เซิร์ฟเวอร์และอย่างน้อยในวานิลลาเดเบียน (และฉันยินดีที่จะพูดว่า "ในทุก distros Debian ตาม") จะได้รับตัวเลือกdbus-launch--exit-with-session

คุณควรจะสามารถห่อกระบวนการที่คุณต้องการเรียกใช้ในขณะที่ผู้ใช้เข้าสู่บริการ dbus และ IIRC dbus ดูแลโดยอัตโนมัติในการยกเลิกบริการของตนก่อนที่จะออก


2

หากคุณใช้ BASH เป็นเชลล์คุณอาจลองตรวจจับใน ~ / .bash_logout และปิดกระบวนการทำงาน

สิ่งที่คุณอาจมองหาในระยะยาวจะมีปฏิสัมพันธ์ (เช่นผ่านทาง D-Bus) กับสิ่งที่ต้องการConsoleKitหรือ systemd ของlogind

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.