সিস্টেমড: তাত্ক্ষণিক পরিষেবাদির সমস্ত দর্শন একবারে পুনরায় চালু করুন


17

আমি সিস্টেমেড: তাত্ক্ষণিক পরিষেবাগুলির দুর্দান্ত বৈশিষ্ট্যটি ব্যবহার করি।

কোনও কল দিয়ে সমস্ত তাত্ক্ষণিক পরিষেবাদি পুনরায় লোড করার কোনও সহজ উপায় আছে?

উদাহরণ: আমি এই জাতীয় সমস্ত চালাতে চাই না:

systemctl restart autossh@foo
systemctl restart autossh@bar
systemctl restart autossh@blu

আমি এটি চেষ্টা করেছিলাম, কিন্তু এটি কাজ করে না

systemctl restart autossh@*

সম্পর্কিত: একটি সিস্টেমযুক্ত পরিষেবা ফাইল দিয়ে এন প্রক্রিয়াগুলি শুরু করুন

হালনাগাদ

প্রথমে আমি ইনস্ট্যান্টিয়েটেড সার্ভিসেস দ্বারা মুগ্ধ হয়েছি, তবে পরে বুঝতে পেরেছি যে উত্তরীয়ের মতো কনফিগারেশন ম্যানেজমেন্ট টুল চালানো আরও অর্থবোধক। আমি শিখেছি: সরঞ্জামগুলি সহজ রাখুন। অনেক সরঞ্জাম কন্ডিশন-চেকিং (যদি .. অন্যথায় ...) এবং লুপগুলি কার্যকর করতে শুরু করে। উদাহরণস্বরূপ ওয়েবসার্ভারস বা মেইল ​​সার্ভার সংযুক্তি। তবে এটি আলাদা (উচ্চ) স্তরে সমাধান করা উচিত: কনফিগারেশন পরিচালনা। দেখুন: https://github.com/guettli/programming-guidlines#dont-use-systemd-insttiated-units

উত্তর:


23

সিস্টেমড (সিস্টেমড -209 থেকে শুরু করে) ওয়াইল্ডকার্ড সমর্থন করে তবে আপনার শেল সম্ভবত এগুলি প্রসারিত করার চেষ্টা করছে। Systemctl / সার্ভিস কমান্ড ভারব্যাটিমগুলিতে ওয়াইল্ডকার্ডগুলি পাস করতে উদ্ধৃতিগুলি ব্যবহার করুন:

systemctl restart 'autossh@*'

আমার জন্য কাজ করে না: systemctl status 'autossh@*'আউটপুট: autossh@\x2a.service - ... Active: inactive (dead)সংস্করণ:systemd 195
গেটলি

2
সিস্টেমবিড ২০৯ থেকে শুরু করে গ্লোববিং উপলভ্য: তালিকা.ফ্রেডসটপ.আর.ইগ্রিভস
সিস্টেমেড-

আপনার যদি পুনঃসূচনা করার জন্য প্রচুর পরিষেবাদি থেকে থাকে তবে গেটলির উত্তরটির লুপটি আরও ভাল কাজ করবে, যেহেতু ওয়াইল্ডকার্ড মনে হয় এগুলি একবারে আবার চালু করার চেষ্টা করছে। ~ 1000 পিএইচপি-এফপিএম পরিষেবাগুলির সাথে পরীক্ষিত, লোড 400 পর্যন্ত চলে গেছে এবং আমাকে সার্ভারটি পুনরায় বুট করতে হয়েছিল।
boutch55555

1
প্রক্রিয়া ইতিমধ্যে চালু থাকলে কাজ করে তবে তাদের সক্ষম করার পরে প্রথমবারের জন্য যদি সেগুলি শুরু করতে হয় তবে তা নয়। তবে আপনি ব্যবহার করতে পারেন systemctl restart autossh@{1..2}(এর পরিবর্তে যে কোনও এন দিয়ে 2) যা কিছুটা কম সাধারণ তবে এটি যদি হয় তবে প্রক্রিয়াগুলিও শুরু করবে inactive (dead)
জিওরজিওসিরোনি

7

সুন্দর নয়, তবে এটি পুরানো সিস্টেমযুক্ত সিস্টেমগুলির জন্য কাজ করে:

systemctl list-units -t service --full| cut -d' ' -f1| grep mypattern | while read s; do systemctl restart $s; done

অবশ্যই উপরের উত্তর ( systemctl restart 'autossh@*') থেকে সমাধানটি আরও ভাল।


সাবধানতা: cutতালিকা-ইউনিট আউটপুটে ব্যর্থ পরিষেবাগুলি ক্ষেত্রে ভুল ক্ষেত্রটি পার্স করতে পারে।
জুসো ওহটনেন

5

@ ওয়েয়ারদান উত্তর সঠিক, তবে নির্দিষ্ট বিতরণের জন্য কিছু অনুপস্থিত।

Centos 7 এবং অনুরূপগুলির জন্য , আপনি এটি করতে পারেন:

systemctl (start|stop|restart|status) my-service@*

বাট, (শুরু) কেবলমাত্র কাজ করবে, যদি আপনি "- সমস্ত" পতাকাটি নির্দিষ্ট করেন:

systemctl (start) my-service@* --all

অন্যথায়, এটি পরিষেবাগুলি পাবেন না, যেহেতু তাদের অস্তিত্ব নেই। এটি সিস্টেমযুক্ত উদ্দিষ্ট বৈশিষ্ট্য।

জন্য উবুন্টু ভিত্তিক সিস্টেম, এটা প্রশংসনীয় একই ভাবে কাজ করে, কিন্তু পার্থক্য যে, "--all" ফ্ল্যাগ systemctl আর্গুমেন্ট সব জন্য উল্লেখ করা আবশ্যক হয়, অন্যথায় এটি কিছু করতে হবে না।

systemctl (start|stop|restart|status) 'my-service@*' --all

2

আমি জানি না এটি সিস্টেমডের জন্য টার্মিনালে কোনও ওয়াইল্ডকার্ডের জন্য কোনও বিকল্প আছে কিনা। আপনি যা করতে পারেন তা হ'ল আপনার সিস্টেমযুক্ত স্ক্রিপ্টগুলিতে একটি যোগ করা।

আমি মনে করি সেই কৌশলটি আমি করব% কিন্তু আপনি তত্ক্ষণিত পরিষেবাদিগুলি যেভাবে স্ক্রিপ্ট করেছেন তার সাথে সম্পর্কিত।

আপনি এখানে একটি ব্যাখ্যা সুনির্দিষ্ট হিসাবে উল্লেখ করতে পারেন

যা দেখায় যে:

% N

পুরো ইউনিটের নাম

% পি

তাত্ক্ষণিক ইউনিটগুলির জন্য, এটি ইউনিটের নামের "@" অক্ষরের আগে স্ট্রিংকে বোঝায়। তাত্ক্ষণিক এককগুলির জন্য, এটি প্রত্যয় সরানো টাইপ সহ ইউনিটের নাম বোঝায়।

% i টি

তাত্ক্ষণিক ইউনিটগুলির জন্য: এটি "@" অক্ষর এবং ইউনিটের নামটির নাম প্রত্যয়গুলির মধ্যে স্ট্রিং।

আমি সরাসরি আপনার প্রশ্নের উত্তর দিচ্ছি না, তবে আমার অনুমান যে আপনি অর্জন করার চেষ্টা করছেন। আপনি যদি ভাবেন যে এই সমাধানটি অনুসরণ করে আপনার সমাধানটি পাওয়া যেতে পারে, দয়া করে আপনার সিস্টেমড স্ক্রিপ্টটি ভাগ করুন, যাতে আমরা শেষ পর্যন্ত উদাহরণ দিয়ে চিত্রিত করতে পারি এবং সম্ভবত আপনাকে চূড়ান্ত স্ক্রিপ্ট সরবরাহ করতে পারি।

যদি আপনি নিজের স্ক্রিপ্টটি কোনও সমাধানে পৌঁছানোর জন্য সম্পাদনা করতে আত্মবিশ্বাসী বোধ করেন তবে এখানে আপনার একটি উদাহরণ রয়েছে (আমি এটিকে উদ্ধৃত করব না কারণ আমি জানি না যে এটি সমাধানের জন্য প্রাসঙ্গিক কিনা এবং আমি কী তার সাথে খুব নির্দিষ্ট) ' আমি প্রস্তাব করছি)

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