ডেবিয়ান সিস্টেমগুলিতে ফাইল ভিত্তিক সকেটের জন্য আইডোমেটিক অবস্থান


13

আমি একটি ডেবিয়ান সিস্টেমের জন্য একটি ডেমন প্রক্রিয়া লিখছি Cযাতে একটি ইউনিক্স ডোমেন সকেট ব্যবহার করা হয়

যদি ডেমন প্রসেসের ওয়ার্কিং ডিরেক্টরিটি মূল ডিরেক্টরি হয় তবে ফাইল সিস্টেমে সকেট স্থাপনের জন্য কোনও আইডিয়োম্যাটিক ডিরেক্টরি রয়েছে?


আপনি কেন এটি কনফিগারযোগ্য হতে দিচ্ছেন না?
BatchyX

3
@ ব্যাচএইক্স ওয়েল, কিছু ধরণের ডিফল্ট মান (প্রতিটি প্রশাসককে তাদের নিজেরাই সিদ্ধান্ত নিতে বাধ্য করার পরিবর্তে) অবশ্যই দুর্দান্ত হতে পারে। :)
একটি সিভিএন

উত্তর:


17

এগুলি সাধারণত এর /tmpএকটি উপ-ডিরেক্টরিতে পাওয়া যায় । নোট করুন যে /tmpশাটডাউন করার সময় সমস্ত কিছু মুছে ফেলা সাপেক্ষে - এটি অগত্যা মুছে ফেলা হয় না, কেবল সাবধান হন যে এটি হতে পারে , তাই আপনি যদি এটি ব্যবহার করেন তবে প্রতিবার আপনার উপ-ডিরেক্টরি তৈরি করতে হবে কিনা তা পরীক্ষা করে দেখুন। /tmpবিশ্ব পাঠযোগ্য , যেহেতু অনুমতিগুলির মাধ্যমে অ্যাক্সেসকে সীমাবদ্ধ রাখতে চাইলে আপনি একটি সাব-ডিরেক্টরি ব্যবহার করতে চাইবেন ।

/runএবং /var/run(যা একসাথে প্রতিযোগিতায় থাকতে পারে) একইভাবে ব্যবহৃত হয়, তবে এগুলি সাধারণত tmpfs ফাইল সিস্টেম হিসাবে মাউন্ট করা হয় - যার অর্থ এগুলি বুটে তৈরি হয়েছিল এবং মেমরিতে থাকে , ডিস্কে নয় (সুতরাং এটি ডাম্প করার জায়গা হিসাবে ব্যবহার করবেন না) প্রচুর পরিমাণে ডেটা)। রানটাইম সকেটের জন্য, এটি সম্ভবত একটি ভাল পছন্দ।

মনে রাখবেন যে, /run, এবং অন্যান্য ডিরেক্টরি সব এখানে উল্লেখ ছাড়া /tmp , শুধুমাত্র শিকড় দ্বারা লিখনযোগ্য হয়। একটি সিস্টেম প্রক্রিয়াটির জন্য, এটি ঠিক আছে, তবে যদি অ্যাপ্লিকেশনটি কোনও সুবিধামুক্ত ব্যবহারকারী দ্বারা চালিত করা হয় তবে আপনি হয় /tmpকোথাও একটি স্থায়ী ডিরেক্টরি ব্যবহার করতে বা সেটির জন্য অনুমতি সেট করতে চান বা ব্যবহারকারীর OME হোমমে কোনও অবস্থান ব্যবহার করতে চান।

ইনস্টলেশন চলাকালীন /usr/share(বা /usr/local/share) একটি ডিরেক্টরি তৈরি করা সম্ভব । সেখানে থাকা ডিরেক্টরিগুলি এবং সামগ্রীগুলি বুটগুলিতে সম্ভাব্যভাবে কাটা হয় না কারণ সেগুলি হবে /tmpবা /run। যাইহোক, জর্ডানম মন্তব্যগুলিতে উল্লেখ করে, /usrকেবল পঠনযোগ্যভাবে মাউন্ট করা যেতে পারে এবং লিনাক্স ফাইল সিস্টেমের ক্রমবিন্যাসের নির্দেশিকা এটি প্রতিফলিত করে । অবশ্যই, কেবলমাত্র আপনার অ্যাপ্লিকেশনটি ইনস্টল হওয়ার পরে এটি কেবল পঠনযোগ্য নয়, সুতরাং আপনি যদি সেখানে সেখানে সকেট তৈরি করতে স্বাচ্ছন্দ্য বোধ করেন তবে আপনি এটি রেখে দিতে পারেন এবং পরে এটি ব্যবহার করতে পারেন (আপনি এখনও সকেটে লিখতে সক্ষম হবেন যদিও ফাইলটি কেবল পঠনযোগ্য)।

আপনি যদি বুটগুলি জুড়ে কোথাও অবিচল থাকতে চান যা কেবল পঠনযোগ্য মাউন্ট হবে না, তবে /etcএটি মোটামুটি নিরাপদ বাজি, কারণ এটি প্রায়শই সিস্টেম-ব্যাপী কনফিগারেশন এবং পুনরায় কনফিগারেশনের জন্য ব্যবহৃত হয়। OTOH, এমন সিস্টেমগুলি পাওয়া সম্ভব যেখানে সম্পূর্ণ রুট ফাইল সিস্টেমের অন্তর্ভুক্ত ডিভাইসটি কেবল পঠনযোগ্য (যেমন, এম্বেড করা সিস্টেম) থাকে / টিএমপি সহ / অন্য ডিভাইসে চালিত হয় (সম্ভবত: মেমরির tmpfs)। সুতরাং দুটি শক্তিশালী কৌশল বলে মনে হবে:

  • অ্যাপ্লিকেশন ইনস্টল হওয়ার পরে সকেটটিকে স্থায়ী স্থানে ইনস্টল করুন।

  • রানটাইম /runবা /var/runএ সময়ে একটি ডিরেক্টরি তৈরি করুন এবং সকেটটি সেখানে রাখুন।

  • কেবল একই কাজটি করুন /tmp

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

অবশেষে, ব্যাচইএক্স-এর হিসাবে , আপনার ডিফল্ট পছন্দটিকে পিছনে রেখে কমপক্ষে আপনার জন্য এটির জন্য একটি কনফিগারেশন বিকল্প সরবরাহ করা উচিত।


2
/runবা /var/runপ্রায়শই মূল প্রক্রিয়াগুলির জন্য ব্যবহৃত হয়।
BatchyX

ঠিক। এগুলি তার চেয়েও বেশি tmp /tmp। আমি এটিকে সম্পাদনা করব
স্বর্ণলোকগুলি

/usrকেবল পঠন হিসাবে মাউন্ট করা যেতে পারে। রানটাইমের সময় ফাইলগুলি কখনই তৈরি করা উচিত নয়। অন্যান্য পরামর্শ ভাল।
জর্ডানম

1
আপনার ইনপুট জন্য আপনাকে ধন্যবাদ, আলোচনা খুব তথ্যমূলক ছিল। আমি ডিফল্ট অবস্থান তৈরি করার সিদ্ধান্ত নিয়েছি /tmp/.APPNAME/.APPSOCKকারণ ডেমনের অবিরাম ডেটার প্রয়োজন হয় না।
recursion.ninja

1
/tmpএবং এর মধ্যে আরেকটি মূল পার্থক্য /runহ'ল কেবল রুটটিতে লেখার অনুমতি রয়েছে /run
BatchyX
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.