সিস্টেমড ড্রপ-ইন পিআইডি ফাইল তৈরি করতে ব্যর্থ


11

আমার পথে পথে সিস্টেমড-মেশিনের জন্য একটি ড্রপ-ইন রয়েছে /etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf। আমি যখন দৌড়ে systemctl status systemd-machinedযাই তখন আমি লাইনগুলি দেখতে পাই

Drop-In: /etc/systemd/system/systemd-machined.service.d
       └─10-machined-pid-file.conf

তবে, আমি / var / রান / তে একটি পিআইডি ফাইল দেখতে পাচ্ছি না। যা আমার ড্রপ-ইন এর উপর ভিত্তি করে:

[Serivce]
PIDFile=/var/run/machined.pid

আমি বিশ্বাস করি যে পিআইডি ফাইল তৈরি করতে কোনও সমস্যা হওয়া উচিত নয়। আমি কি অনুপস্থিত কিছু আছে?

উত্তর:


18

PIDFile=সেটিং নেই তৈরি একটি PID ফাইল। এটি এখনও 40 বছর ধরে যা করা হয়েছে ঠিক তেমনই পরিষেবাটি। পরিবর্তে, এই বিকল্পটি সিস্টেমডকে বলে যে কোনও বিদ্যমান পিআইডি ফাইল কোথায় পাওয়া যাবে (যদি থাকে)। বেশিরভাগ ক্ষেত্রে এটি মোটেই প্রয়োজন হয় না, কারণ সিস্টেমড তাদের নিজস্ব সিগ্রুপগুলিতে পরিষেবাগুলি রাখবে এবং সেগুলি ট্র্যাক রাখতে পিআইডি ফাইলের প্রয়োজন নেই। যাইহোক, পরিষেবাটি প্রস্থান করার পরে সিস্টেমে একটি পিআইডি ফাইল মুছে ফেলবে , যদি পরিষেবাটি নিজের পরে পরিস্কার করতে ব্যর্থ হয়।

ডকুমেন্টেশন থেকে :

এই ডেমনটির পিআইডি ফাইলকে নির্দেশ করে একটি নিখুঁত ফাইলের নাম নেয়। যেখানে Type=সেট করা আছে সেগুলির জন্য এই বিকল্পটির ব্যবহারের পরামর্শ দেওয়া হচ্ছে forking। সিস্টেমড সার্ভিসটি শুরুর পরে ডেমনের মূল প্রক্রিয়ার পিআইডি পড়বে। systemd এখানে কনফিগার করা ফাইলটিতে লিখবে না, যদিও পরিষেবাটি বন্ধ থাকার পরে এটি উপস্থিত থাকলে এটি ফাইলটি সরিয়ে ফেলবে।


বিবৃতির জন্য ধন্যবাদ. আমার ক্ষেত্রে প্লেফ্রেমওয়ার্ক প্রজেক্টের মূল ফোল্ডারে পিড ফাইল তৈরি করেছে, কিন্তু এই প্রক্রিয়া / পরিষেবাটি বন্ধ করা বা হত্যা করা "পিড" ফাইলটিকে মুছেনি। সুতরাং "পিড" ফাইলের কারণে আমি আমার প্রকল্প পরিষেবাটি আরম্ভ করতে পারিনি। আমার সিস্টেমেড সার্ভিস ফাইলে এই "PIDFile = / path / to / pid" লাইন যুক্ত করা ভাল কাজ করেছে। এটি পরিষেবা বন্ধ বা হত্যা করা হলে
পিড

10

আফসোসজনকভাবে, সিস্টেমড কোনও অ-কাঁটাচালনের জন্য পিআইডি ফাইল তৈরি করবে না এমনকি আপনি যদি PIDFile=পরিষেবার ইউনিট ফাইলে একটি লাইন নির্দিষ্ট করেন । তবে আপনি কোনও ExecStartPost=লাইন দিয়ে প্রতারণা করতে সক্ষম হতে পারেন যেমন:

ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.