সিস্টেমড ইউজার ইউনিট যা সিস্টেম ইউনিটের উপর নির্ভর করে (ঘুম.টারাগেট)


16

আমি ডকটি পড়ছিলাম এবং এটি এখনও আমার পক্ষে অস্পষ্ট, নিম্নলিখিতটি সম্পাদন করা সম্ভব কিনা:

এতে সংজ্ঞায়িত পরিষেবাটি ~/.config/systemd/user/task.serviceসিস্টেমের উপর নির্ভর করে sleep.target( ~/.config/systemd/user/sleep.target.wants/task.service)।

এখন আমি task.serviceদৌড়ানোর সময় শুরু করার প্রত্যাশা করি $ systemctl suspendতবে task.serviceশুরু হয় না।

আর্ক উইকিতেsystemd --user বর্ণিত হিসাবে কম-বেশি কনফিগার করা হয়েছে, সিস্টেমযুক্ত সংস্করণ 208 সহ আমি ডেবিয়ান চালাচ্ছি

আমি ভাবছি কিনা আমার দৃশ্যকল্প সব সময়ে systemd হল সঙ্গে বাস্তবায়িত করা যেতে পারে, বা হয় --systemএবং --userসম্পূর্ণরূপে নকশা বিচ্ছিন্ন যাতে --userইউনিট একটি একটি নির্ভরতা নাও হতে পারে --systemইউনিট।

যদি এটি সম্ভব হয় তবে আমার ক্ষেত্রে সমস্যাটি কী হতে পারে?


উত্তর:


8

থেকে systemd হল / ব্যবহারকারী - Archwiki

systemd --userপ্রক্রিয়া থেকে পৃথক প্রক্রিয়া হিসাবে চালিত systemd --system। ব্যবহারকারী ইউনিটগুলি সিস্টেম ইউনিটের উপর নির্ভর করতে বা নির্ভর করতে পারে না।


4
এই স্তন্যপান। ওটা খুব খারাপ.
রল্ফ

5

systemdব্যবহারকারীর সেশন পরিষেবাগুলি সম্পূর্ণ পৃথক দৃষ্টান্তে চলে systemdএবং সরাসরি সিস্টেম পরিষেবায় নির্ভর করার কোনও উপায় নেই have

আপনি যা চান তা পূরণ করার অন্যান্য উপায় রয়েছে। সবচেয়ে পরিষ্কার আপনি সম্ভবত যা চালাতে চান তা তৈরি করা যখন সিস্টেমের logindইনহিবিটারগুলিতে স্লিপ হুক হয়ে যাচ্ছে এবং তারপরে এটি ব্যাকগ্রাউন্ড ডেমন হিসাবে চালানো হবে।

আরও সাধারণ সমাধান হ'ল logindইনহিবিটারগুলিতে একটি ডিমন হুক রাখা উচিত ( সিস্টেমড-লক-হ্যান্ডলার এবং এক্সএস-লক দেখুন ) এবং তারপরে সিস্টেমটি যখন ঘুমাতে চলেছে তখন এটি ব্যবহারকারীর সেশন টার্গেটটি সক্রিয় করবে যে আপনি আপনার পরিষেবাগুলি অর্ডার করতে পারবেন অধীনে।


2

@ কায়রিয়াসের প্রতিক্রিয়ায় যুক্ত করা, এখানে আপনার নিজের ব্যবহারকারী স্তরের স্লিপ তৈরি করার একটি উপায় রয়েছে tar

~ / .Local / শেয়ার / systemd হল / ব্যবহারকারী / sleep.target

[Unit]
Description=User level sleep target
StopWhenUnneeded=yes

~ / .Local / বিন / watch_sleep

#!/bin/bash

dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Manager',member=PrepareForSleep" | while read x; do
    case "$x" in
        *"boolean false"*) systemctl --user --no-block stop sleep.target;;
        *"boolean true"*) systemctl --user --no-block start sleep.target;;
    esac
done

~ / .Local / শেয়ার / systemd হল / ব্যবহারকারী / watch_sleep.service

[Unit]
Description=watch for sleep signal to start sleep.target

[Service]
ExecStart=%h/.local/bin/watch_sleep
Restart=on-failure

[Install]
WantedBy=default.target

আমার ব্লগ পোস্টটি দেখুন https://medium.com/@aiguofer/systemd-s ંઘ-target- for- user-level- 10eb003b3bfd

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.