ব্যবহারকারী লগইন করার পরে কীভাবে একটি সিস্টেমড পরিষেবা চালু করা যায় এবং ব্যবহারকারীর লগআউটের আগে এটি বন্ধ করে দেওয়া যায়


10

আমার কাছে ফেডোরা 23 মেশিন রয়েছে।

আমার কাছে একটি ডিরেক্টরি / ফাইল সিঙ্ক্রোনাইজিং বাশ স্ক্রিপ্ট রয়েছে যা আমার স্থানীয় / হোম ডিরেক্টরিকে একটি দূরবর্তী ডিরেক্টরিতে (এনএএস মেশিনে) সিঙ্ক্রোনাইজ করে। আমি এটি ম্যানুয়ালি চালিত করি তবে আমি একটি সিস্টেমড পরিষেবা তৈরি করতে এবং এটিকে আরও নমনীয় করে তুলতে চাই, যেহেতু অন্যান্য লোকেরা নিজের পিসিটি তাদের নিজস্ব ব্যবহারকারীর শংসাপত্র দিয়ে ব্যবহার করে, তাই আমি জানতে চাই যে কোনও ব্যবহারকারী কখন লগ ইন রয়েছে এবং তারপরে আমার পরিষেবাটি শুরু করে।

আমার পরিষেবাটির সিস্টেমেড ফাইল থেকে আমি কিছু করতে পারি বা আমাকে স্ক্রিপ্টে আমার কোড থেকে এটি পরীক্ষা করতে হবে?

আমার কেবল পরিবেশের ভেরিয়েবলগুলিতে ($ USER এর মতো) অ্যাক্সেস রয়েছে এবং এটি পরিষেবা হিসাবে চালাতে হবে তা নিশ্চিত করতে হবে।

আমার ডকুমেন্টেশনের মূল উত্স হ'ল এই লিঙ্কটি https://access.redhat.com/docamentation/en-US/Red_Hat_Enterprise_Linux/7/html/Sstm_Ad प्रशास ক_গুইড / সেটিং- পরিচালন_সার্ভিসেস_উইথ_সিস্টেমডি- ইউনিট_ফাইলেস html


কি systemctl --userF23 উপর কাজ করে?
user1686

আমার ধারণা তাই, এটি একটি তালিকা এবং একটি বার্তা দেয় 76 loaded units listed
জর্জকাফ

এখানে অন্য পদ্ধতির যা আপনার পক্ষে কার্যকর হতে পারে: unix.stackexchange.com/a/109270/111707 আপনি .bashrcলগইন থেকে একটি ছোট পাইথন স্ক্রিপ্ট লিখুন যা জিনোম লগআউট সংকেতের জন্য শোনেন এবং নিজেই বন্ধ হয়ে যায়।
আইয়ানবি

@ আইএনবি আপনাকে ধন্যবাদ, আমি এটি পরীক্ষা করব। আশেপাশে এমন কিছু পাওয়া কখনও কষ্ট দেয় না।
জর্জকাফ

উত্তর:


15

সিস্টেমড ব্যবহার করুন এটি ইতিমধ্যে ব্যবহারকারীর সেশনগুলির জন্য সমর্থন অন্তর্ভুক্ত করে, বাস্তবে আপনার ইতিমধ্যে এটির উপর নির্ভর করা উচিত (অজান্তেই)।

পরিষেবা ডিরেক্টরি তৈরি করুন

mkdir -p $HOME/.local/share/systemd/user

একটি পরিষেবা ফাইল সম্পাদনা তৈরি করুন (vim, gedit, geany - আপনি যা চান)

vim $HOME/.local/share/systemd/user/my.service

এটি স্থায়ী পরিষেবা হলে মোটামুটি এটির মতো দেখতে হবে।

[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target

তবে এটির মতো মনে হচ্ছে আপনি একবার এটি ট্রিগার করতে চান, তবে এটির সাথে ভাল থাকুন, বরং এটির মতো অনশট কনফিগারেশনটি ব্যবহার করুন:

[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target

এটি অবশ্যই ধরে নিয়েছে যে আপনার স্ক্রিপ্ট কার্যকর হয়, যেমন:

chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script

অন্যথায় আপনাকে সংশ্লিষ্ট দোভাষীর পথটি আগেই চাপিয়ে দিতে হবে:

ExecStart=/bin/bash /path/to/start/script arguments

এখন সিস্টেমেড পুনরায় লোড করুন (এবং পরীক্ষার স্বার্থে পুনরায় লগইন করুন)

systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log

আপনার যদি আরও তথ্যের প্রয়োজন হয় তবে উদাহরণস্বরূপ আর্চ-উইকি দেখুনএই অ্যাসুবুন্টু থ্রেডে ঘটনাক্রমে আমার সহ বিভিন্ন ধারণা রয়েছে।

আপনি বিশ্বব্যাপী পরিষেবাটি সংজ্ঞায়িত করে ব্যবহারকারীর কাছে আচরণটি (যদি আপনি মূল হন) প্রসারিত করতে পারেন। এটি করার জন্য আপনাকে / usr / share / systemd / user / / HOM / .local / share / systemd / ব্যবহারকারীর মধ্যে না করে সার্ভিস ফাইল তৈরি করতে হবে ।


1
হাই, উত্তর ভাল ছিল। তবে এটি কেবল তখনই কাজ করবে যদি পরিষেবাটি প্রথম লগইনে শুরু করা উচিত এবং শেষ ব্যবহারকারী সেশনে বন্ধ করা উচিত ।
আনোয়ার

4
পরিষেবাটি সক্ষম করার সময় আপনার ব্যবহারকারীর পতাকা প্রয়োজন। "systemctl
ব্যবহারকারীর

0

আমি এটি কয়েক বছরের পুরানো জানি, কিন্তু উদ্বেগের উত্তর আমাকে কেবল সাহায্য করেছিল। সুতরাং, আমি অনুমান করি যে এটি এখনও সুগঠিত। এছাড়াও, এটি একটি মন্তব্য বেশি, তবে আমার কাছে সেই প্রাইভেসি নেই তাই আমি এটিকে একটি "উত্তর" হিসাবে পোস্ট করছি। যে কোন মূল্যে...

লিনাক্স মিন্ট 19 চালাচ্ছি, যখন স্ক্রিপ্টটি 'OME HOME / .Local / share / systemd / user' তে অবস্থিত ছিলাম তখন আমি পরিষেবাটি "সক্ষম" করতে পারি না। সর্বদা এটি করার চেষ্টা করার ফলে একটি ত্রুটি হয়। তবে আমি এটিকে '$ হোম / .লোকাল / শেয়ার / সিস্টেমড / ব্যবহারকারী' ডিরেক্টরি থেকে ঠিক সূচনা করতে পারি। স্ক্রিপ্টটি '/ usr / share / systemd / user /' এ সরানোর পরে, সিস্টেমডি আমাকে ইস্যু ছাড়াই এটি সক্ষম করার অনুমতি দেয়।

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