পিড এবং লক ফাইলগুলি কীসের জন্য?


75

আমি প্রায়শই দেখতে পাই যে প্রোগ্রামগুলি পিড এবং লক ফাইলগুলি নির্দিষ্ট করে। এবং তারা কী করে তা আমি নিশ্চিত নই।

উদাহরণস্বরূপ, nginx সংকলন করার সময়:

--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \

কেউ কি এই সম্পর্কে কিছু আলোকপাত করতে পারে?

উত্তর:


86

পিডি ফাইলগুলি কিছু প্রোগ্রাম দ্বারা তাদের প্রসেস আইডি রেকর্ড করার জন্য লেখা হয় যখন তারা শুরু হয়। এর একাধিক উদ্দেশ্য রয়েছে:

  • এটি সিস্টেমের অন্যান্য প্রক্রিয়া এবং ব্যবহারকারীদের জন্য একটি সংকেত যে সেই নির্দিষ্ট প্রোগ্রামটি চলছে, বা কমপক্ষে সফলভাবে শুরু হয়েছে।
  • এটি স্ক্রিপ্ট লিখতে সত্যিই সহজে এটি চালনা করে কিনা তা পরীক্ষা করে দেখার অনুমতি দেয় এবং killযদি কেউ এটি শেষ করতে চায় তবে একটি সরল কমান্ড জারি করে।
  • এটির পূর্ববর্তী চলমান দৃষ্টান্তটি সফলভাবে বেরিয়ে আসেনি কিনা তা কোনও প্রোগ্রামের পক্ষে দেখার একটি সস্তা উপায়।

পিড ফাইলের উপস্থিতি গ্যারান্টি দেয় না যে সেই নির্দিষ্ট প্রক্রিয়া আইডি চলমান রয়েছে, অবশ্যই, সুতরাং এই পদ্ধতিটি 100% বুদ্ধিমান নয় তবে প্রচুর ক্ষেত্রে "যথেষ্ট ভাল"। প্রসেস টেবিলটিতে কোনও নির্দিষ্ট পিআইডি রয়েছে কিনা তা পরীক্ষা করা আপনি ইউনিক্স-এর মতো অপারেটিং সিস্টেমগুলিতে পুরোপুরি পোর্টেবল নয় তবে আপনি যদি psইউটিলিটির উপর নির্ভর করতে না চান , যা সমস্ত ক্ষেত্রে কল করা বাঞ্ছনীয় নয় (এবং আমি বিশ্বাস করি ইউএনআইএক্স-এর মতো কিছু অপারেটিং সিস্টেম রয়েছে) psযাইহোক ভিন্নভাবে প্রয়োগ করুন )।

লক ফাইলগুলি প্রোগ্রামের দ্বারা দুটি (ভাল আচরণের) পৃথক দৃষ্টান্তগুলি নিশ্চিত করার জন্য ব্যবহৃত হয়, যা এক সিস্টেমে একযোগে চলতে পারে, একই সাথে অন্য কোনও কিছু অ্যাক্সেস করতে পারে না। প্রোগ্রামটি এর উত্স অ্যাক্সেস করার আগে ধারণাটি হ'ল এটি একটি লক ফাইলের উপস্থিতি যাচাই করে এবং লক ফাইলটি উপস্থিত থাকলে ভুল ত্রুটি হয় বা এটি চলে যাওয়ার জন্য অপেক্ষা করে। যখন এটি অস্তিত্বহীন থাকে, উত্সটি "অর্জন" করতে ইচ্ছুক প্রোগ্রামটি ফাইলটি তৈরি করে এবং তারপরে পরবর্তী সময়ে আসতে পারে এমন অন্যান্য ঘটনাগুলি এই প্রক্রিয়াটি সম্পন্ন হওয়ার জন্য অপেক্ষা করবে। অবশ্যই এটি ধরে নিয়েছে যে প্রোগ্রামটি "অধিগ্রহণ" লকটি আসলে এটি প্রকাশ করে এবং লক ফাইলটি মুছতে ভুলায় না।

এটি কাজ করে কারণ সমস্ত ইউএনআইএক্স-এর মতো অপারেটিং সিস্টেমের অধীনে থাকা ফাইল সিস্টেম সিরিয়ালাইজেশন প্রয়োগ করে , যার অর্থ ফাইল সিস্টেমে কেবলমাত্র একটি পরিবর্তন আসলে যে কোনও সময় ঘটে happens ডাটাবেস এবং এই জাতীয় তালার মতো বাছাই করুন।


1
লক ফাইলটি ম্যানুয়ালি মোছা না করা পর্যন্ত এটি সঠিক। ভিএমওয়্যার প্লেয়ার এই আচরণটি প্রদর্শন করে, উদাহরণস্বরূপ, যদি ভিএমওয়্যার প্লেয়ার ক্রাশ হয়ে যায়, আপনাকে .lckভিএম ডিরেক্টরিতে কোনও ফাইল মুছতে হবে অন্যথায় এটি আপনাকে ব্যবহার করার সময় আপনাকে এটি শুরু করার চেষ্টা করার সময় বলবে।
লরেন্স

1
উইন্ডোজ সম্পর্কে কি? এটি লক ফাইলগুলি কীভাবে পরিচালনা করে? সর্বোপরি, এটি ইউনিক্সের মতো নয়।
সারাহফগাইয়া

2
আমি মনে করি না যে উইন্ডোজ প্রোগ্রামগুলির পক্ষে এইভাবে কাজ করা সাধারণ। এই আচরণের সাথে আমি যে প্রোগ্রামগুলি দেখেছি কেবল তা
হ'ল

2
লরেন্সসি, পুনরায় " যখন এটি বিদ্যমান না থাকে, প্রোগ্রামটি" অর্জন "করতে চায় প্রোগ্রামটি ফাইলটি তৈরি করে "; তবে বিশেষত এ জাতীয় সিঙ্ক্রোনাইজেশন করার জন্য উপযুক্ত ফাংশন রয়েছে । "ফাইল হ্যাক" ব্যবহার না করে এই ফাংশনগুলির উপর নির্ভর করবেন না কেন?
পেসারিয়ার

1
@ পেসারিয়র - এই ফ্যাশনে লক ফাইলগুলি প্রায়শই শেল স্ক্রিপ্টগুলির মতো জিনিস বা শেল স্ক্রিপ্টগুলির সাথে ইন্টারেক্ট হতে পারে এমন প্রোগ্রামগুলি দ্বারা ব্যবহৃত হয়, যেহেতু ইউনিক্স / লিনাক্স শেলগুলি খুব সহজেই ফাইল সিস্টেমের সাথে ইন্টারঅ্যাক্ট করে অন্যান্য সিঙ্ক্রোনাইজেশন আদিমগুলির তুলনায়। ফাইলগুলি সহজেই পৃথক পৃথক প্রক্রিয়া জুড়ে থাকে। একটি উচ্চ কার্যকারিতা প্রোগ্রাম সম্ভবত সম্ভবত অভ্যন্তরীণভাবে সিঙ্ক্রোনাইজ করতে বা এমনকি শেল নয় এমন অন্যান্য প্রক্রিয়াগুলির তুলনায় ফাইলগুলি বনাম স্থানীয় ওএস আদিমকে পারফর্ম করবে।
LawrenceC

14

এই ফাইলগুলি প্রায়শই ডেমন দ্বারা ব্যবহৃত হয় যা কেবল একবার সিস্টেমে চালানো উচিত। পিআইডি ফাইলটিতে সাধারণত ইতিমধ্যে চালু হওয়া এবং চলমান প্রোগ্রামের প্রসেস আইডি নম্বর থাকে যদি এটি উপস্থিত থাকে। এছাড়াও, যখন এটি শুরু হয়, এটি লক ফাইল তৈরি করে। লক ফাইলটি যতক্ষণ না বিদ্যমান থাকে ততক্ষণ এটি ব্যবহারকারীর হস্তক্ষেপ ব্যতীত অন্য কোনওটি শুরু করবে না। যদি লক ফাইলটি বিদ্যমান থাকে এবং পিড ফাইলটিতে উল্লিখিত প্রক্রিয়া আইডি চলমান না থাকে তবে ডিমনটিকে "মৃত" অবস্থায় মনে করা হয়, যার অর্থ এটি চলমান বলে মনে হচ্ছে তবে সম্ভবত ক্র্যাশ বা অনুপযুক্ত শাটডাউনের কারণে নয় isn't । এটি কিছু প্রোগ্রামের জন্য একটি বিশেষ সূচনা / পুনঃসূচনা দৃশ্যের সূচনা করতে পারে। এটি যথাযথভাবে বন্ধ করা লক ফাইলটি সরিয়ে ফেলবে।


+1 লক ফাইল এবং পিড ফাইল উভয় ব্যবহারের ব্যাখ্যা।
কাইল ক্রল

@ কালেব - দয়া করে ব্যাখ্যা করুন কেন একটি পিআইডি ফাইল এবং লক ফাইল উভয়ই ব্যবহৃত হবে। মনে হচ্ছে একটি পিআইডি ফাইল যথেষ্ট হবে। যদি পিআইডি ফাইলটি বিদ্যমান থাকে, প্রক্রিয়াটি চলছে কিনা তা দেখার জন্য পিআইডি চেক করা যেতে পারে, লকফাইলে যাচাই করা, পিআইডি ফাইল চেক করা এবং তারপরে প্রক্রিয়াটির অস্তিত্ব যাচাইয়ের চেয়ে কম পদক্ষেপ নেয়।
এমভোগান

@ এমভিউহান অন্য কিছু না থাকলে রেস শর্ত এড়াতে কিছু অ্যাপ্লিকেশন এমন সময়গুলির জন্য ব্যবহার করে যখন এখনও পিআইডি প্রয়োজন হয় তবে লকটি ত্যাগ করতে পারে। তবে আরও মৌলিক স্তরে যদি আপনি উভয় ক্রিয়াকলাপের জন্য একটি ফাইল ওভারলোড করেন তবে সিস্টেমে কোনও অসঙ্গতিপূর্ণ অবস্থা ছেড়ে যাওয়ার মতো ক্রাশের মতো ব্যর্থতার দরজা আপনি খুলে দেন।
কালেব

8

একটি পিআইডি ফাইল চলমান প্রক্রিয়াটির প্রসেস আইডি ধারণ করে। এর বিভিন্ন ব্যবহার রয়েছে; আপনি এটি পড়তে পারেন এবং প্রক্রিয়াটি এখনও চলছে কিনা তা পরীক্ষা করতে পারেন এবং যথাযথ ব্যবস্থা গ্রহণ করতে পারেন বা এটি পড়তে পারেন এবং প্রক্রিয়াটি মেরে ফেলতে পারেন।

একটি লক ফাইল সম্ভবত অ্যাপ্লিকেশন নির্দিষ্ট। লক ফাইলগুলি ব্যবহার করা হয় তা বোঝাতে ব্যবহৃত হয় যে কিছু সংস্থান ব্যবহৃত হয়েছে এবং অ্যাক্সেসের প্রক্রিয়াটি প্রক্রিয়াটি চালিয়ে যাওয়ার আগে রিসোর্সটি মুক্ত না হওয়া পর্যন্ত অপেক্ষা করা উচিত।

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