সিস্টেমড - কীভাবে পরিষেবা পুনরায় চালু হতে প্রথম রান নির্ধারণ করতে পারে?


2

আমি একটি পরিষেবা চাই যা প্রথম রান এবং পরিষেবা পুনরায় চালু করার সময়ে আলাদা আচরণ করে। সিস্টেমড দিয়ে কি এটা সম্ভব? (আমি আমার এমবেডড ওএসে সিস্টেমড ব্যবহার করি)।

আমি এক্সিকিউরেলোড এবং এক্সিকিস্টার্ট দিয়ে চেষ্টা করেছি, তবে এক্সিকিউরেলোড কেবল তখনই চালিত হয় যখন আমি "সিস্টেমটেক্টল পুনরায় চালু" কমান্ডটি ব্যবহার করি। অন্যদিকে এক্সস্টার্টটি সার্ভিস রিস্টার্টের পরে চালিত হয় (আমার পুনরায় চালু আছে = অন-ব্যর্থতা এবং পুনঃসূচনা = 5)।

উত্তর:


6

আপনি systemctl set-environmentপরিষেবাটির ভবিষ্যতের রানগুলিতে কিছু মানকে ঠেলে দিতে ব্যবহার করতে পারেন । উদাহরণস্বরূপ, একটি ইউনিট সহ:

[Unit]
Description=testing
[Service]
Type=oneshot
ExecStart=/my/command myarg1 ${MYDONE}
ExecStart=/usr/bin/systemctl set-environment MYDONE=1
[Install]

প্রথমটিতে systemctl start <unit>শেষ আর্গটি পাস করা /my/commandহবে ''এবং MYDONEপরিবেশে থাকবে না। পরে শুরুতে, শেষ আরগটি পরিবেশে থাকবে 1এবং MYDONE=1থাকবে।


এটা ভাল. :) উপায় দ্বারা আমি জানতাম না যে আমি একটি। সার্ভিস ফাইলে একাধিক এক্সিকিস্টার্ট নির্দিষ্ট করতে পারি।
s.paszko

1
আপনি কেবল ExecStartযদি একাধিক অনুমোদিত হয় Type=oneshot। তবে যে কোনও ধরণের জন্য ExecStartPreএবং আছে ExecStartPost
meuh

1

আপনি প্রথম রানটিকে আলাদা আলাদা রক্ষণাবেক্ষণ ফাইলটিতে সংজ্ঞায়িত করতে পারেন using

[Service]
Type=oneshot

তারপরে অন্য একটি। ফাইল ফাইল তৈরি করুন যা সেইটির উপর নির্ভর করে, যা নিয়মিতভাবে চলে runs

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