একটি বিদ্যমান ডিরেক্টরিতে মাউন্ট কেন ঘটে?


52

একটি বিদ্যমান ডিরেক্টরি একটি মাউন্ট পয়েন্ট হিসাবে প্রয়োজন ।

$ ls
$ sudo mount /dev/sdb2 ./datadisk
mount: mount point ./datadisk does not exist
$ mkdir datadisk
$ sudo mount /dev/sdb2 ./datadisk
$

আমি এটি বিভ্রান্তিকর বলে মনে করি যেহেতু এটি ডিরেক্টরিটির বিদ্যমান সামগ্রীগুলিকে ওভারলে করে। মাউন্ট পয়েন্ট ডিরেক্টরিতে দুটি সম্ভাব্য বিষয়বস্তু রয়েছে যা অপ্রত্যাশিতভাবে বদলে যেতে পারে (যে ব্যবহারকারীর জন্য মাউন্টটি সম্পাদন করা হচ্ছে না)।

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


1
আপনি যদি সেই আচরণটি চান, ব্যবহার করুন udisksctl। কেন ব্যবহার করবেন mount?
মুরু

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

8
Historicalতিহাসিক নোট হিসাবে, উইন্ডোজ এবং লিনাক্স অন্য সমস্ত ওএসকে মূলত চূর্ণ করার আগে, অ্যাপোলো নামে একটি সংস্থা ছিল। তারা একটি ইউনিক্স-অ্যালাইক (ইউনিক্সের চেয়ে ভাল নকশা!) অপারেটিং সিস্টেম লিখেছিল। এটি এনটিএফ রফতানিগুলি স্বয়ংক্রিয়ভাবে মাউন্ট হয়েছে এমন ডিরেক্টরিগুলি তৈরি করেছে। আসলে, আপনি পূর্ব-বিদ্যমান ডিরেক্টরিতে মাউন্ট করতে পারেন নি। এইচপি অ্যাপোলোকে কিনেছিল, অপারেটিং সিস্টেমটি ছুঁড়ে ফেলেছিল, এবং অ্যাপোলোর .৪-বিট সিপিইউকে এইচপি-পিএ হিসাবে ব্যবহার করেছিল। অ্যাপোলো এর দূরবর্তী প্রক্রিয়া কলগুলির সিস্টেমটি ওএসএফের ডিসিইতে পরিণত হয়েছিল, যা সম্ভবত উইন্ডোজের অভ্যন্তরে বাস করে। জানা অর্ধেক যুদ্ধ!
ব্রুস এডিগার

আমার উবুন্টু 14.04,3 ​​সিস্টেমে কোনওভাবে এটি ঘটে। আমি তদন্ত করেছি, এখনও। যখন আমার এসডি কার্ড মাউন্ট হবে, এটি এমন একটি পথে শেষ হবে যার নীচে কিছুই নেই। যদি আমি এটি সরিয়ে রাখি এবং ম্যানুয়ালি এটিকে আবার মাউন্ট করার চেষ্টা করি তবে যে ত্রুটিটি পেয়েছি তা মাউন্ট পয়েন্টে কোনও ডিরেক্টরি নেই।
স্কেপেরেন

2
@ ব্রুসইডিগার better design than Unix![উদ্ধৃতি প্রয়োজন]
রাস্লান

উত্তর:


51

এটি ফাঁস হয়ে গেছে এমন একটি বাস্তবায়নের বিশদর একটি ঘটনা।

ইউএনআইএক্স সিস্টেমে প্রতিটি ডিরেক্টরিতে ইনোড সংখ্যায় ম্যাপ করা নামের তালিকা থাকে । একটি ইনোডে মেটাডেটা ধারণ করে যা সিস্টেমকে জানায় এটি ফাইল, ডিরেক্টরি, বিশেষ ডিভাইস, নামযুক্ত পাইপ ইত্যাদি tells যদি এটি কোনও ফাইল বা ডিরেক্টরি হয় তবে এটি ডিস্কে ফাইল বা ডিরেক্টরি বিষয়বস্তু কোথায় পাওয়া যায় তাও সিস্টেমকে জানিয়ে দেয় tells বেশিরভাগ ইনোড ফাইল বা ডিরেক্টরি। -iবিকল্প lsতালিকা inode সংখ্যার হবে।

একটি ফাইল সিস্টেম মাউন্ট করা একটি ডিরেক্টরি ইনোড নেয় এবং "প্রকৃতপক্ষে, এই ডিরেক্টরিটির বিষয়বস্তুগুলি অনুসন্ধান করার পরিবর্তে এই অন্যান্য ফাইল সিস্টেমে তাকান" বলার জন্য কার্নেলের ইন-মেমরি কপিটিতে একটি পতাকা সেট করে ( এই উপস্থাপনার স্লাইড 10 দেখুন )। এটি একটি একক ডেটা আইটেম পরিবর্তন করার কারণে এটি তুলনামূলক সহজ।

পরিবর্তে নতুন ইনোডে নির্দেশ করে এটি কেন আপনার জন্য ডিরেক্টরি এন্ট্রি তৈরি করে না? আপনি এটি প্রয়োগ করতে পারেন এমন দুটি উপায় রয়েছে যার উভয়েরই অসুবিধা রয়েছে। একটি হ'ল ফিজিস্টিক্যালি ফাইল সিস্টেমে একটি নতুন ডিরেক্টরি লিখতে - তবে ফাইল সিস্টেমটি কেবল পাঠযোগ্য হলে তা ব্যর্থ হয়! অন্যটি হল প্রতিটি ডিরেক্টরি তালিকা প্রক্রিয়ায় "অতিরিক্ত" জিনিসগুলির একটি তালিকা যুক্ত করা যা সত্যিকার অর্থে নেই। এটি খুব কম এবং সম্ভাব্য প্রতিটি ফাইল অপারেশন একটি ছোট কর্মক্ষমতা হিট অন্তর্ভুক্ত।

আপনি যদি গতিশীলভাবে তৈরি মাউন্ট পয়েন্টগুলি চান তবে automountসিস্টেম এটি করতে পারে। বিশেষ অ ডিস্ক ফাইল সিস্টেম এছাড়াও স্বেচ্ছায় ডিরেক্টরি তৈরি করতে পারেন, যেমন proc, sys, devfsইত্যাদি।

সম্পাদনা করুন: এর উত্তরটিও দেখুন যখন আপনি বিদ্যমান ফোল্ডারকে সামগ্রী দিয়ে 'মাউন্ট' করবেন তখন কি হবে?


এটি ইনোডে কোনও পতাকা সেট না করে ব্যতীত। sudo mount --bind / /mnt ; ls /mnt/proc-> খালি। আমি ভাবছি কীভাবে এটি কাজ করে।
সোর্সজেডি

সঠিক অপারেশনটি fs/namespace.cআমার মনে হয়েছে; আমি উত্সটির সাথে পরিচিত নই এবং বিশদে ড্রিলিংয়ের জন্য খুব বেশি সময় ব্যয় করতে চাই না। লিঙ্কযুক্ত উপস্থাপনা থেকে আমি "ইনোডে পতাকা" পেয়েছি।
pjc50

2
@ সোর্সজেডি: বাঁধাই করা মাউন্টগুলি কেবলমাত্র আপনি প্রকৃতপক্ষে উল্লেখ করেন এমন ফাইল সিস্টেমকে আবদ্ধ করে। তারা এর নিচে মাউন্ট করা অন্যান্য ফাইল সিস্টেমগুলি পুনরাবৃত্তভাবে আবদ্ধ করে না। মাউন্টগুলি দ্বারা লুকানো জাঙ্কটি খুঁজে পাওয়ার এটি সহজ উপায়। (যেমন মাউন্ট করতে ব্যর্থ হলে কিছু জিনিস /var/cacheযখন রুট এফএসে শেষ হয়ে যায় /var)) আরও দেখুন path_resolution(7)। (পুরানো লিনাক্স-ম্যানাপেজে বিভাগের ২ ম ম্যান পৃষ্ঠাটি ছিল ডাইনা.টার মতো) আইডিকে কীভাবে লিনাক্স অভ্যন্তরীণভাবে কাজ করে, প্রতিটি ডিরেক্টরি উপাদানকে সম্ভাব্য মাউন্ট হিসাবে পরীক্ষা করে নিখুঁত করতে। হতে পারে ক্যাশে যে ভিএফএস এন্ট্রি পিন?
পিটার কর্ডেস

2
ঠিক আছে, এটি আমার বক্তব্য ... সুতরাং fs/namei.c(পথ -> আইনোড লুকোচুরি) যদিও নামস্পেস.কে কল করে lookup_mnt()। ডেন্ট্রিতে একটি পতাকা রয়েছে (ডিরেক্টরি ক্যাশে প্রবেশ)। তবে এটি কেবলমাত্র একটি অপ্টিমাইজেশন ওরফে বাস্তবায়ন বিশদ। এটি আপনাকে জানায় না যে কোন ফাইল সিস্টেম সেখানে মাউন্ট করা হয়েছে; আপনাকে মাউন্ট টেবিলে দেখতে হবে। (আরও বাস্তবায়ন বিশদের জন্য এম_হ্যাশ (দেখুন) Linux
সোর্সজেডি

1
@PeterCordes: : man 8 mount mount --bind foo fooবাইন্ড mountকল কেবলমাত্র একটি ফাইল সিস্টেম সংযুক্ত করে (এর কিছু অংশ), সম্ভব সাবমিটস নয়। সাব-মাউন্টগুলি সহ পুরো ফাইল হায়ারার্কিটি ব্যবহার করে দ্বিতীয় স্থান সংযুক্ত করা হয়েছে :mount --rbind olddir newdir
মাইকসার্ভ

19

যদি মাউন্ট পয়েন্ট হতে নতুন ডিরেক্টরি তৈরির mount(2) প্রয়োজন হয় তবে আপনি কেবল পঠনযোগ্য ফাইল সিস্টেমের আওতায় কিছু মাউন্ট করতে পারবেন না। এটি বোবা হবে, তাই আমরা এটি শাসন করতে পারি।

মাউন্টটি যদি বিকল্পভাবে মাউন্টপয়েন্ট হতে একটি নতুন ডিরেক্টরি তৈরি করে, তবে তা অদ্ভুত হবে। এটি সার্বক্ষণিকভাবে মাউন্ট / আনমাউন্ট হওয়ার মতো নয়, সুতরাং একক সিস্টেম কল দিয়ে এই দুটি পদক্ষেপটি করার জন্য কার্নেলটিতে অতিরিক্ত যুক্তি যুক্ত করা গুরুত্বপূর্ণ গতিসম্পন্ন হবে না। mkdir(2)সিস্টেম কল চাইলে এটি কেবল ব্যবহারকারী-স্পেসে ছেড়ে দিন । দিমিত্রি এর উত্তর উল্লেখ করেছেন যে mount(2)দুটি জিনিসই করা এটি অ-পরমাণুতে পরিণত হবে। আর যদি আপনি চান সেই ভাষাতে একটি অতিরিক্ত যুক্তি mount(2)মোড পতাকা মতো open(2)জন্য, লাগে O_CREAT, O_EXCLইত্যাদি এটা ঠিক ইউজার-স্পেস লেট তুলনায় নিরীহ হবে এটা করতে।

অথবা হতে পারে আপনি mount(8)(সনাতন প্রোগ্রাম যা mount(2)সিস্টেম কলগুলি করে) এটি করার বিষয়ে জিজ্ঞাসা করেছিল ? এটি সম্ভব হবে, তবে ইতিমধ্যে mkdir(1)কাজের জন্য একটি পুরোপুরি ভাল , এবং ইউনিক্সের নকশাটি ভাল ছোট ছোট সরঞ্জামগুলির সাথে মিলিত হতে পারে। যদি আপনি এমন কোনও সরঞ্জাম চান যা উভয়ই করে তবে দুটি সহজ সরঞ্জামের মধ্যে দিয়ে সেই সরঞ্জামটি তৈরি করতে শেল স্ক্রিপ্ট লেখা সহজ। (বা, যেমন মুড়ু মন্তব্য করেছে, udisksctlইতিমধ্যে এটি করেছে, সুতরাং আপনার এটি লেখার দরকার নেই)) এছাড়াও, লিনাক্সের ইউজার mount(8)-লিনাক্স থেকে প্রাপ্ত ফাইল সিস্টেম সিস্টেমে অপশন দেওয়ার পরিবর্তে ইউজারস্পেসের বিকল্পগুলির জন্য সিনট্যাক্স mount -o x-mount.mkdir[=mode]ব্যবহার করে এটি সমর্থন করে x-


এখন আরও আকর্ষণীয় প্রশ্ন: কেন পিতৃ ফাইল সিস্টেমে কোনও ডিরেক্টরি থাকতে হবে?

পিজেসি 50 এর উত্তরটি নির্দেশ করে (যেমন কোনও সম্পর্ক নেই, যদিও সে আমার আদ্যক্ষর রয়েছে!), ডিরেক্টরি তালিকায় মাউন্ট পয়েন্টগুলি প্রদর্শিত হ'ল তারপরে প্রত্যেকটির অতিরিক্ত চেক লাগবে readdir()

ডিরেক্টরিতে ডিরেক্টরি হিসাবে মাউন্ট পয়েন্ট থাকা (প্যারেন্ট এফএস-এ) থাকা একটি দুর্দান্ত কৌশল। readdir()এটি মোটেও একটি মাউন্ট পয়েন্ট যে খেয়াল করতে হবে না। মাউন্ট পয়েন্টটি কোনও পন্থার উপাদান হিসাবে ব্যবহার করা হলে এটি ঘটে । পাথ রেজোলিউশনের অবশ্যই কোনও পাথের প্রতিটি ডিরেক্টরি উপাদানগুলির জন্য মাউন্ট সারণীটি পরীক্ষা করতে হবে।


1
If mount(2) required the creation of a new directory to be the mount point, you couldn't mount anything under a read-only filesystem. That would be dumb- আমি এটি আরও
চৌকস

2
@ ইজকাটা: কেবল একটি ফাইল সিস্টেম পাঠযোগ্য করার অর্থ এই নয় যে ভিএফএসের পুরো সাবট্রিটি হিমায়িত। এটি পঠন-নির্দেশিকা ডিরেক্টরিগুলিতে ইঙ্গিত করে সিমলিংকগুলি থাকতে পারে বা প্যারেন্ট এফ এস পুনঃসাম্মরণ করার সময় ইতিমধ্যে এর অধীনে পঠন-লিখনের মাউন্ট পয়েন্ট থাকতে পারে ro। কেবল পঠনযোগ্য ফাইল সিস্টেমের জন্য এমন অনেকগুলি ব্যবহারের কেস রয়েছে যেখানে আপনার যুক্তিটি বোঝায় না।
পিটার কর্ডেস

2
man 8 mount: x-mount.mkdir[=mode] একটি লক্ষ্য ডিরেক্টরি (মাউন্টপয়েন্ট) তৈরি করার অনুমতি দিন। Alচ্ছিক আর্গুমেন্ট মোড mkdir(2)অষ্টাল নোটেশনে ব্যবহৃত ফাইল সিস্টেম অ্যাক্সেস মোড নির্দিষ্ট করে । ডিফল্ট মোড 0755 This এই কার্যকারিতাটি কেবল রুট ব্যবহারকারীদের জন্য সমর্থিত।
মাইকজার্ভ

মাউন্ট করা রিড-রাইটিং ফাইল সিস্টেমগুলির সাথে কেবল পঠনযোগ্য ফাইল সিস্টেমের কোনও গুরুত্বপূর্ণ ব্যবহারের ঘটনা আমি দেখতে পাই না, বিশেষত প্রথমদিকে ইউনিক্সে নয় not @ পিটারকর্ডস
কুব্যাঞ্জাইক

@কুবাঞ্জাইক: কেবল পঠনযোগ্য মূল ফাইল সিস্টেম, একটি পঠন-রচনা সহ /tmpএবং /home। বা কেবল পঠনযোগ্য এনএফএস-এর /usrসাথে /usr/localমাউন্ট করা লোকাল । বা আরও সাধারণভাবে, পরিবর্তিত অংশ সহ যে কোনও ভাগ করা পঠনযোগ্য চিত্র এটির উপরে মাউন্ট করা থাকে। (কেবল পঠনযোগ্য চিত্রের স্থানীয় মোডগুলি লাইভসিডি বুটযোগ্য ইমেজে ব্যবহৃত লিনাক্সের জন্য ওভারলেফ বা অন্যান্য ইউনিয়ন ফাইল সিস্টেমের মতো কাস্টম ফাইল সিস্টেমের সাথে প্রতি ফাইলের ভিত্তিতেও করা যেতে পারে )) আমি প্রাথমিকভাবে এফএস প্রাথমিকভাবে মাউন্ট করা আরওটির কথা ভাবছিলাম at বুট করুন, তবে এটিকে আরডব্লু করা অন্যান্য মাউন্টগুলির আগে ঘটতে পারে।
পিটার কর্ডেস

12

বিদ্যমান ডিরেক্টরিতে মাউন্ট করা mountপ্রায়োগিকভাবে পারমাণবিককে কল দেয় : এটি হয় সফল হয় বা ব্যর্থ হয়, কমপক্ষে ব্যবহারকারীর দৃষ্টিকোণ থেকে। যদি mountনিজেই মাউন্টপয়েন্টটি তৈরি করতে হয় তবে এতে ব্যর্থতার দুটি পয়েন্ট থাকবে, এটি পরিষ্কার রোলের গ্যারান্টি দেওয়া অসম্ভব করে তোলে। নিম্নলিখিত পরিস্থিতিতে কল্পনা করুন:

  1. mount সাফল্যের সাথে মাউন্টপয়েন্ট তৈরি করে
  2. mount সেই ডিরেক্টরিতে একটি নতুন ফাইল সিস্টেম মাউন্ট করার চেষ্টা করে, তবে ব্যর্থ হয়
  3. mount মাউন্টপয়েন্টটি সরিয়ে দেওয়ার চেষ্টা করে তবে ব্যর্থ হয়

সিস্টেমটি একটি ব্যর্থতার পার্শ্ব প্রতিক্রিয়া দিয়ে শেষ হয় mount

এখানে অন্য একটি:

  1. umount সফলভাবে একটি ফাইল সিস্টেম আনমাউন্ট করে
  2. umount মাউন্টপয়েন্টটি সরিয়ে দেওয়ার চেষ্টা করে তবে ব্যর্থ হয়

এখন, umountসাফল্য বা ব্যর্থতা ফিরে আসা উচিত ?


5
mountত্রুটিগুলির জন্য 8 টি পৃথক রিটার্ন কোড রয়েছে যা একত্রিতও হতে পারে। ডিরেক্টরি সরিয়ে ফেলতে ব্যর্থ হলে এটি কেবলমাত্র একটি যুক্ত করতে পারে। man7.org/linux/man-pages/man8/mount.8.html#REटका_CODES
বিশৃঙ্খলা

8
আমি মনে করি ওপি জিজ্ঞাসা করছে যে মাউন্টপয়েন্টটি কেন একেবারে বিদ্যমান ডিরেক্টরি হওয়া দরকার, কেন mountসিস্টেম কল এটি তৈরি করে না। যদিও সম্ভবত এটি ছিল আমার ব্যাখ্যা / প্রত্যাশা যা আমি ভাবছিলাম যে ওপি বলতে যা বোঝাতে চেয়েছিল বা আমি যদি জিজ্ঞাসা করতাম তবে আমি কী জিজ্ঞাসা করতাম।
পিটার কর্ডেস

3

আর একটি ঘটনা ঘটতে পারে:

আপনি বুট করার সময় মূল ডিরেক্টরিতে কেবল পঠিত চিত্রটি রুট ডিরেক্টরিতে লোড হয়। সুতরাং আপনি যখন এটি বাস্তবের মূলটিকে mিবি করতে চান তখন আপনি এটিকে ওভাররাইড করতে চান। সুতরাং আপনি কল্পনা করতে পারেন যে মাউন্ট প্রাপ্ত syscall শুধু অদলবদল roকরতে mountpoint rw

এখানে, মূল মাউন্টপয়েন্টে আপনার কাছে একটি ফাইল সিস্টেম সমস্যা রয়েছে তা কল্পনা করুন, আপনি এটি মেরামতের জন্য চেষ্টা করতে সক্ষম হতে চাই। মাউন্ট ওভারল্যাপের সাহায্যে আপনি ফাইল সিস্টেমটি আনমাউন্ট করতে পারেন এবং fsckএটি সমাধান করার জন্য বুনিয়াদি ছবিতে সরবরাহ করা ব্যবহার করতে পারেন ।

এই বৈশিষ্ট্যটি এমন সিস্টেমগুলিতেও কার্যকর হতে পারে যেগুলিকে একটি roপার্টিশন এবং rwএকের মধ্যে পরিবর্তনের ট্র্যাক করার জন্য শক্তিশালী সুরক্ষা প্রয়োজন ।


1
আমি নিশ্চিত না যে এটি কীভাবে প্রশ্নের উত্তর দেয়। আপনি কি উল্লেখ করছেন যে মাউন্টপয়েন্টের অবস্থানের ভিত্তিতে যদি কোনও নতুন ডিরেক্টরি তৈরি করা mount দরকার হয় তবে আপনি কেবল পঠনযোগ্য ফাইল সিস্টেমের উপরে কিছু মাউন্ট করতে পারবেন না? খোলার অনুচ্ছেদটি বিভ্রান্তিকর: এটি লিনাক্স ইআরআরডি কীভাবে কাজ করে তা নয়। এটি pivot_rootকেবলমাত্র উপরের জিনিসগুলি মাউন্ট করে নয়, রুট এফএস পরিবর্তন করতে সিস্টেম কল ব্যবহার করে । এটি পরবর্তী অনুচ্ছেদে আপনার যুক্তি অনুসরণ করা শক্ত করে তোলে, কারণ আমি ভেবেছিলাম আপনি কথা বলছেন pivot_root(2)
পিটার কর্ডেস

2
@ পিটারকার্ডস - লিনাক্স বহু বছর ধরে একটি আরআরআরডি ব্যবহার করেনি : অন্য কোনও রুট ডিভাইসটি স্যুইচ করার সময়, আরআরআরডি pivot_rootএবং তারপরে umountরামডিস্ক হবে। তবে initramfs হ'ল rootfs: আপনি pivot_rootরুটফেসগুলি না আনমাউন্ট করতে পারবেন না । স্থানটি মুক্ত করতে রুটফের বাইরে সমস্ত কিছু মুছে ফেলুন ( find -xdev / -exec rm {} \;), নতুন রুট ( cd /newmount; mount --move . /; chroot .) এর সাথে ওভারমাউন্ট রুটফগুলি , নতুন / দেব / কনসোলের সাথে স্টিডিন / স্টিডআউট / স্টার্ডার সংযুক্ত করুন, এবং execনতুনinit
মাইকজার্ভ

@ মিমকিজার: ঝরঝরে! আমি বুঝতে পারি নি যে যখন আমরা ইআরআরডি-র পরিবর্তে ইনিগ্রাফ ব্যবহার শুরু করি তখন শিকড়গুলির স্যুইচিংয়ের প্রাথমিক প্রক্রিয়াটি পরিবর্তিত হয়। অ্যাডমিন দৃষ্টিকোণ থেকে "এটি নিশ্চিত করুন যে ডান কার্নেল মডিউলগুলি এর মধ্যে শেষ হয়েছে" they আমি এখনও মনে করি এটি সত্যিই খুব ভাল প্রশ্নের উত্তর দেয় না । মনে হয় "রফসের নিচে মাউন্টটি অসম্ভব" ব্যাখ্যাটি রয়েছে এবং এটি একটি খুব সুনির্দিষ্ট সমস্যার কেস দেয় (যা সম্ভবত অসম্ভব বলে মনে হয় কারণ বুট-এ কেবলমাত্র পড়ার ব্যবস্থা করা হয়নি। এমনকি যদি তা হয় তবে এটি সহজেই পুনরায় পাঠানো যেতে পারে -সিপিও.gz চিত্রকে প্রভাবিত না করেই লিখুন))
পিটার

@ পিটারকর্ডস - আমি এই উত্তরটি সত্যই বুঝতে পারি না। আমি আপনার মন্তব্যটি কেবল দেখেছি - থ্রিমারফগুলি একটি ফাইল সিস্টেম - এটি সত্যই পঠনযোগ্য নয় - এর fs ক্যাশে অবতার।
মাইকজার্ভ

2

আমিও সবসময় ভাবতাম।

একটি সাধারণ মোড়ক যেমন:

#!/bin/sh
eval "mkdir -p \"\$$#\"" 
/bin/mount "$@"  

আপনার PATH- র mountডিরেক্টরিকে ওভাররাইড করে দেওয়া ডিরেক্টরিতে চালিত এক্সিকিউটেবল স্ক্রিপ্ট হিসাবে সংরক্ষণ করা /binউচিত যদি এটি আপনাকে খুব বিরক্ত করে

(প্রকৃত mountবাইনারি চালানোর আগে এটি সর্বশেষ যুক্তি অনুসারে একটি ডিরেক্টরি তৈরি করে mount, যদি এই জাতীয় ডিরেক্টরি ইতিমধ্যে বিদ্যমান না থাকে।)


বিকল্পভাবে, আপনি যদি mountডিরেক্টরি তৈরি করতে মোড়কের ব্যর্থ অনুরোধ না চান তবে আপনি এটি করতে পারেন:

#!/bin/sh
set -e
eval "lastArg=\"\$$#\""
test -d "$lastArg" || { mkdir "$lastArg"; madeDir=1; }
/bin/mount "$@"  ||  {  test -z "$madeDir" || rmdir "$lastArg"; }

mountকমান্ডটি এইভাবে তৈরি ডিরেক্টরিটি ব্যবহার করা উচিত নয় ?
মারু

1
@ মুরু এটিই শেষ লাইনের কাজটি করে।
পিএসকোকিক

ওহ, তাই আপনি বলতে চাচ্ছি এটা এইভাবে ব্যবহার করা উচিত: mount /dev/foo /some/path? আমি ধরে নিয়েছিলাম এটি যেমন কাজ করবে udisksctl, তাই আপনি দৌড়াবেন mount /dev/foo
মারু

4
আপনি ব্যবহার না evalকরে প্রসারিত না করে শেষ সেমিডলাইন আরগটি পেতে পারেন । আমি এটি ড্যাসের মাধ্যমে পরীক্ষা করেছি, যেহেতু আমি মনে করি যে এটি পসিক্স শ সমর্থন করার জন্য প্রয়োজনের বাইরে কিছু সমর্থন করে না। প্রিন্ট । $#"${@:-1}"/bin/dash -c 'echo ${@:-1}' foo barbar
পিটার কর্ডেস

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