প্রশ্ন লিনাক্সে / dev / null এর সমতুল্য একটি ডিরেক্টরি আছে?


একটি অ্যাপ্লিকেশন কনফিগার করার সময়, আপনি প্রায়ই ব্যবহার করতে পারেন /dev/null যদি আপনি খালি ফাইলটি পড়তে চান তবে কনফিগার ফাইল হিসাবে। কিন্তু, যদি অ্যাপ্লিকেশনটি কোনও ডিরেক্টরি থেকে ফাইলগুলির একটি তালিকা পড়ে তবে আপনি এই কৌশলটি ব্যবহার করতে পারবেন না। আপনি এটি পড়তে একটি খালি ডিরেক্টরি দিতে হবে।

আমি ভাবছিলাম: লিনাক্সের একটি ডিফল্ট ফাঁকা ডিরেক্টরি আছে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে? আমি OpenSSH কিছু সময়ের জন্য / var / খালি ব্যবহার করেছি, এবং আমি অবশ্যই নিজেকে খালি তৈরি করতে পারি, কিন্তু সম্ভবত FHS এর জন্য একটি আদর্শ ডিরেক্টরি নির্দিষ্ট করেছে?


72
2017-12-07 09:04


উত্স


আমার সিস্টেমে, /var/empty খালি নয়, কিন্তু একটি ফোল্ডার রয়েছে sshd, তাই সম্ভবত আপনি যে ব্যবহার করতে চান না। - knub
শুধু একটি বিন্দু: বিশেষ দৃষ্টিভঙ্গি /dev/null জন্য এত না পড়া জন্য লেখা।  তথ্য লিখিত /dev/null শুধু অদৃশ্য। সুতরাং, একটি ডিরেক্টরি সমতুল্য একটি জায়গা যেখানে হবে mv yourfile /dev/empty আপনার ফাইল মুছে ফেলা হবে। - Wildcard
@ উইলকার্ড আমি আপনাকে বলতে চাচ্ছি mv yourfile /dev/empty/। যদি তুমি করো mv yourfile /dev/empty, আপনি বিশেষ ডিরেক্টরি প্রতিস্থাপন করার চেষ্টা করছেন। - Rhymoid
@ জিউস না, এটা না। আপনি কিছু দিয়ে শুরু করতে পারবেন না /dev/null এবং dd কারণ dd এটি এমনকি একটি একক বাইট লিখিত আগে একটি EOF পাবেন। আমার মনে হয় তুমি ভাবছ /dev/zero, যা প্রায়শই একটি নির্দিষ্ট সংখ্যক জিরোস দিয়ে কিছু পূরণ করতে ব্যবহৃত হয়। - Micheal Johnson
@ মাইকেল জোনসন আপনি ঠিক আছেন, আমার ভুল, আমি বিভ্রান্ত হতাম /dev/nullসঙ্গে /dev/zero। - Jules


উত্তর:


দ্য FHS কোন "স্ট্যান্ডার্ড" খালি ডিরেক্টরি উপলব্ধ করা হয়।

লিনাক্স সিস্টেমের জন্য ডিরেক্টরি সরবরাহ করা সাধারণ /var/empty, কিন্তু এই ডিরেক্টরি FHS এ সংজ্ঞায়িত করা হয় না এবং আসলে খালি হতে পারে না। পরিবর্তে, কিছু ডিমান্ড এখানে তাদের নিজস্ব খালি ডিরেক্টরি তৈরি করবে। উদাহরণস্বরূপ, openssh খালি ডিরেক্টরি ব্যবহার করে /var/empty/sshd বিশেষ বিচ্ছেদ জন্য।

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

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


62
2017-12-07 09:11



আমি অধীন subdirectories তৈরি করার সুপারিশ করবে না /var/empty, যেহেতু যে কোনও প্রোগ্রাম এটি ব্যবহার করে (যেমন OpenSSH তে ডিফল্ট কনফিগারেশন) এটা আসলে খালি হতে পারে আশা করতে পারেন। (দ্য /var/empty/sshd জিনিস একটি অদ্ভুত RedHat-ISM বলে মনে হচ্ছে; ডেবিয়ান ব্যবহার করে /var/run/sshd পরিবর্তে.) - Ilmari Karonen
@ ইলমারি কারোনেন আপনি যে লিঙ্কটি যুক্ত করেছেন সেটি আপনার দাবির সমর্থন করে না যে OpenSSH প্রত্যাশা করে /var/empty খালি হতে। অন্য কোথাও কেউ এই জন্য চেহারা হতে পারে? - Michael Hampton♦
@ ইলমারি কারোনেন এইচএম, যে নথি পুরানো। এটা বোঝায় /var/empty কিন্তু কোড আসলে ব্যবহার করে /var/empty/sshd। আবার চেষ্টা কর. :) - Michael Hampton♦
@ ইলমারি কারোনেন হুম। এখন আমি মনে করি আপনি ঠিক আছেন, প্রকৃতপক্ষে উৎসটি দেখছেন যা chroot () কল করে। আমি এটি অসাধারণ দেখতে পাচ্ছি যে opens opens এ এমন একটি নির্বোধ ত্রুটি হবে, যা Red Hat এর জন্য ডাউনস্ট্রিম সংশোধন বজায় রাখতে হবে। - Michael Hampton♦
আমি দেখতে পাচ্ছি না এটি একটি "মূঢ় ত্রুটি" - একটি চূড়ান্ত কারাগার হিসাবে ব্যবহারের জন্য একটি মানচিত্রে একটি নিশ্চিত খালি রুট-মালিকানাধীন ডিরেক্টরি থাকা, আমার কাছে পুরোপুরি ভাল ধারণা বলে মনে হচ্ছে। অবশ্যই, রেডহ্যাটকে তার অধীনে সাবডিরেক্টরিগুলি তৈরি করে সকলের জন্য এটি ধ্বংস করতে হবে। ফলস্বরূপ, পোর্টেবল কোডের জন্য আমার সুপারিশ ব্যবহার করা হবে না /var/empty কিছু করার জন্য, যেহেতু আপনি কোন প্রদত্ত সিস্টেমে তার সেমন্টিক্স নিশ্চিত করতে পারবেন না। আপনার নিজস্ব খালি ডিরেক্টরি যেমন অধীনে /var/run, ডেবিয়ান মত, আরো বুদ্ধিমান মনে হয়। - Ilmari Karonen


তুমি ব্যবহার করতে পার mktemp -d ডিফল্ট ইন, নিরাপদ অনুমতি সহ একটি নতুন খালি অস্থায়ী ডিরেক্টরি তৈরি করতে /tmp/। ইউটিলিটি উপর নতুন ডিরেক্টরি এর পথ আউটপুট হবে STDOUT, তাই এটা শেল দরকারী।

এটি কোনো systemd ইউনিট ফাইলের চেয়ে আরও পোর্টেবল।


37
2017-12-07 11:04



হ্যাঁ, আপনি করতে পারেন, কিন্তু যে ডিরেক্টরিটি যদি কনফিগারেশন ফাইলে নির্দিষ্ট করা থাকে তবে এটি অবাস্তব। আপনি যে জন্য একটি স্থায়ী dir চান। - roelvanmeer


এই ইউনিক্স প্রশ্ন একটি "blackhole" ডিরেক্টরি তৈরি করার জন্য কিছু পরামর্শ আছে, সহ একটি nullfs FUSE ফাইল সিস্টেম


19
2017-12-07 21:37



আমি জানি না কেন mktemp / mkdtemp উত্তরটি এতটা উঁচু হয়ে উঠেছে যখন এটি নিখুঁত উত্তর। nullfs সমতুল্য / dev / null। - chx


সেবা systemd জন্য বিকল্প উপলব্ধ করা হয় PrivateTmp ব্যক্তিগত তৈরি করতে /tmp এবং /var/tmp ডিরেক্টরিগুলি যে পরিষেবার জন্য নামস্থান বাইরে প্রসেস দ্বারা ভাগ করা হয় না এবং যা খালি থাকা উচিত (প্রাথমিকভাবে)।

[Service]
ExecStart=...
PrivateTmp=yes 

11
2017-12-07 10:20



প্রোগ্রাম অন্যান্য অস্থায়ী ফাইল তৈরি করতে পারে, তাই আপনি অনুমান করতে পারেন না /tmp খালি খালি থাকবে কারণ এটি নামস্থানভুক্ত হয়েছে। - Michael Hampton♦