मैंने अपने आर्क-लाइनक्स सिस्टम (2012.09.07) पर सिस्टमड की स्थापना और सेटअप प्रक्रिया को समाप्त कर दिया है। मैंने अनइंस्टॉल किया initscripts
(और कॉन्फ़िगरेशन फ़ाइलों को हटा दिया)।
मैं जो करना चाहता हूं वह एक ऐसी सेवा बनाना है जिसे गैर-रूट उपयोगकर्ता द्वारा शुरू और बंद किया जा सकता है। सेवा शुरू करने के लिए एक अलग स्क्रीन सत्र शुरू करना है। हालाँकि मैं चाहता हूं कि हर उपयोगकर्ता उस सिस्टम पर आए जिसने विशेष रूप से उनके लिए एक विशेष उदाहरण शुरू करने के लिए (सक्षम) इस सेवा को शुरू करने के लिए निर्धारित किया है। ऐसा करने के बारे में कोई कैसे जाएगा?
मुझे याद है कि systemd सेवाओं के उपयोगकर्ता उदाहरणों का समर्थन करता है, हालाँकि मैं इस बारे में कोई जानकारी नहीं पा रहा हूँ कि इसे कैसे स्थापित किया जाए, या क्या यह उस चीज़ से संबंधित है जिसे मैं खोज रहा हूँ।
सेवा फ़ाइल जो मैंने सिस्टम के लिए उपयोग की है:
[Unit]
Description=rTorrent
[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
अद्यतन # 1 :
मैन पेजों के माध्यम से यहां और यहां पढ़ने के बाद , मैं समझता हूं कि सिस्टमड कैसे बेहतर तरीके से काम करता है। विशेष रूप से कि User=
और WorkingDirectory=
विकल्पों का उपयोग करके सेवा को उपयोगकर्ता के सत्र में शुरू किया जा सकता है। हालांकि समस्या अभी भी है कि उपयोगकर्ता के लिए खुद को नहीं कर सकते हैं रहता है start
, stop
, enable
, या disable
सेवा। एक पहुंच से इनकार किया जाता है त्रुटि द्वारा दी गई है systemctl
।
अद्यतन # 2 :
सबसे पहले, सरलीकरण के लिए और सिस्टमड के उपयोगकर्ता सत्र के बेहतर उपयोग के लिए (अभी भी कुछ अधूरा है) सुविधा, मैंने सोफ़र के उपयोगकर्ता-सत्र-इकाइयों का उपयोग किया और उसकी कॉन्फ़िगरेशन सलाह का पालन किया।
ऐसा लगता है कि DBus (1.6.4-1) के वर्तमान संस्करण में एक बग है जिसमें यह कमांड वेरिएबल DBUS_SESSION_BUS_ADDRESS
का उपयोग करके पर्यावरण चर का अर्थ निर्धारित नहीं करता है systemctl --user
:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
चर इस तरह दिखना चाहिए:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
जहां USERUID दिए गए उपयोगकर्ता के यूआईडी की जरूरत है।
sudo
उपयोगकर्ताओं के लिए सरल सेटअप कर सकता था और उन्हें, जैसा कि ऊपर मेरी टिप्पणी में बताया गया है, अपनी स्वयं की सेवा फ़ाइल को नियंत्रित करते हैं। हालांकि यह समाधान उपयोगकर्ता को अधिकांश अन्य सेवाओं को भी नियंत्रित करने की अनुमति देगा ...
sudo
दस्तावेज़ को पढ़ा था - sudoers (5) में कमांड के तर्कों को प्रतिबंधित करने के कई उदाहरण हैं।