আনলিঙ্ক এবং আরএম এর মধ্যে পার্থক্য কী?


64

আরএমকের চেয়ে দ্রুত লিঙ্কমুক্ত কি?


9
"অকালীন অপটিমাইজেশন হ'ল প্রোগ্রামিংয়ে সমস্ত মন্দ (বা এর বেশিরভাগ অংশে) এর মূলে root" - ডোনাল্ড নুথ en.wikiquote.org/wiki/ ডোনাল্ড_নাথ
ক্রিস

উত্তর:


68

উভয়ই একই মৌলিক ফাংশনটির একটি মোড়ক যা একটি unlink()সিস্টেম কল।

ব্যবহারকারীর ব্যবহারের মধ্যে পার্থক্যটি মাপতে।

rm(1):

  • আরও বিকল্প.
  • আরও প্রতিক্রিয়া।
  • স্যানিটি পরীক্ষা করা হচ্ছে।
  • উপরের ফলাফল হিসাবে একক কলগুলির জন্য কিছুটা ধীর।
  • একই সাথে একাধিক যুক্তি সহ কল ​​করা যেতে পারে।

unlink(1):

  • স্বল্পতা পরীক্ষা করা কম।
  • ডিরেক্টরি মুছতে অক্ষম।
  • পুনরাবৃত্তি করতে অক্ষম।
  • একবারে কেবল একটি যুক্তি নিতে পারে।
  • সরলতার কারণে একক কলগুলির জন্য প্রান্তিকভাবে ঝোঁক।
  • rm(1)একাধিক যুক্তি দেওয়ার সাথে তুলনা করলে ধীর ।

আপনি এর সাথে পার্থক্যটি প্রদর্শন করতে পারেন:

$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'

$ touch $(seq 1 100)
$ time rm $(seq 1 100)

real    0m0.048s
user    0m0.004s
sys     0m0.008s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done

real    0m0.207s
user    0m0.044s
sys     0m0.112s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done

real    0m0.167s
user    0m0.048s
sys     0m0.120s

তবে আমরা যদি সিস্টেম ফাংশনটিতে একটি অযৌক্তিক কল সম্পর্কে কথা বলি unlink(2)যা এখন আমি বুঝতে পারি যে আপনি অ্যাকাউন্টিং করছেন তা সম্ভবত এটি নয়।

আপনি unlink()ডিরেক্টরি এবং ফাইলগুলিতে একই পদ্ধতিতে একটি সিস্টেম সম্পাদন করতে পারেন । তবে ডিরেক্টরিটি যদি অন্য ডিরেক্টরি এবং ফাইলগুলির পিতা বা মাতা হয় তবে সেই পিতামাতার লিঙ্কটি সরিয়ে ফেলা হবে তবে শিশুরা ঝুঁকতে থাকবে। যা আদর্শের চেয়ে কম।

সম্পাদনা:

দুঃখিত, মধ্যে পার্থক্য ব্যাখ্যা unlink(1)এবং unlink(2)। শব্দার্থক এখনও প্ল্যাটফর্মের মধ্যে পার্থক্য করতে চলেছে।


এর অর্থ কি ইউনিক্স ফাইল সিস্টেমে কোনও ডিরেক্টরি মুছে ফেলা হয় এবং এর অধীনে থাকা সমস্ত ফাইল সর্বদা একটি অপারেশন হবে যা এতে থাকা ফাইল / ডায়ারের সংখ্যার সাথে সমানুপাতিক? যখন আমি অন্য ডিরেক্টরি / ফাইলগুলির পিতা বা মাতা কোনও ডিরেক্টরিকে লিঙ্ক লিঙ্ক করি তখন কখন ঘটে? এটি কখনই মুছে যায় না এবং আমি এই স্থানটি চিরতরে হারিয়ে ফেলেছি?
মার্সিন

6
সমস্ত ফাইল সিস্টেম না থাকলে প্রযুক্তিগতভাবে এতিম ডিরেক্টরি / ফাইলগুলি বেশিরভাগ ক্ষেত্রে ছেড়ে দেওয়া সম্ভব। এটি ঠিক করার অর্থ সাধারণত একটি ফাইল সিস্টেম মেরামতের সরঞ্জাম চালানো। ইউনিক্স / লিনাক্সে এই সরঞ্জামগুলি 'fsck' এবং বিভিন্ন ফাইল সিস্টেমের জন্য কিছু নির্দিষ্ট প্রকরণ হিসাবে পরিচিত। যদি তারা কিছু পুনরুদ্ধার করে তবে তারা সাধারণত এটিকে 'হারিয়ে যাওয়া + পাওয়া' নামে একটি ডিরেক্টরিতে রেখে দেবে
কনসার্নডঅফটুনব্রিজ ওয়েলস

1
সঠিক। আরএম গাছের নীচ থেকে পুনরুক্ত হবে। আপনি প্রদর্শন করতে পারে সঙ্গে mkdir -p 1/2/3; touch 1/one 1/2/two 1/2/3/three; rm -ri 1। যদি আপনি প্যারেন্ট ডিরেক্টরিটি লিঙ্কযুক্ত করেন তবে শিশুদের দ্বারা গ্রাস করা স্থানটি এমন সময় অবধি হারিয়ে ফেলতে হবে যে fsck তারতম্যটি খুঁজে পায়।
ড্যান কারলি

1
আপনি কি বিষয়ে কথা হয়? k mkdir -p 1/2/3 1 লিঙ্ক 1 টি লিঙ্কমুক্ত: আনলিংক করতে পারে না `1 ': একটি ডিরেক্টরি ব্যবহারকারীরা কি" মেমরি "ফাঁসের কারণ fsck প্রয়োজন? অসম্ভাব্য!
টমাস

1
লিনাক্স এবং ফ্রিবিএসডি উভয়ই ম্যাপেজ স্পষ্টভাবে জানিয়েছে যে কোনও ডিরেক্টরিতে লিঙ্কমুক্ত () চালানোর চেষ্টা করার সময় এটি ব্যর্থ হবে।
টমাস

8

পসিক্স স্পেক স্তরে, আরএম কী করে তা লিঙ্কমুক্তের চেয়ে আরও বেশি শক্তভাবে নির্দিষ্ট করা হয়।

আপনার স্ক্রিপ্টটি যদি ওএস এর জুড়ে চলতে থাকে তবে ফলাফলের বহনযোগ্যতাটি আরএম ব্যবহার করে আরও ভাল হতে পারে বলে মনে হয়।


4

অপসারণের ধীর অংশটি হ'ল ফাইল সিস্টেম কোড এবং ডিস্ক স্টাফ, আনলিংক () সিস্টেম কলের ব্যবহারকারী স্থান প্রস্তুত নয়।

উদাহরণস্বরূপ: গতির পার্থক্য যদি গুরুত্বপূর্ণ হয় তবে আপনার ফাইল সিস্টেমে ডেটা সংরক্ষণ করা উচিত নয়।

লিঙ্কটি কেবল একটি আরএম "আলো"। আরএম এর আরও বৈশিষ্ট্য রয়েছে তবে তারা একই কাজ করে।

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