কোনও সিস্টেমে সমস্ত ভাঙ্গা প্রতীকী লিঙ্কগুলি মুছে ফেলার কোনও প্রতিকূলতা আছে কি?


46

আমি একটি স্ক্রিপ্ট চালাচ্ছিলাম যা আমার লিনাক্স সিস্টেমে সমস্ত ফাইলের উপরে পুনরাবৃত্তি হয়েছিল এবং সেগুলি সম্পর্কে কিছু মেটাডেটা তৈরি করেছিল এবং এটি কোনও ভাঙা প্রতীকী লিঙ্কে আঘাত করলে এটি একটি ত্রুটি ছুঁড়ে ফেলেছিল।

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

আমি উবুন্টু 14.04 (বিশ্বস্ত তাহর) চালাচ্ছি । আমি এটি না করার কোনও কারণ দেখতে পাচ্ছি না, তবে আমার এগিয়ে যাওয়ার আগে এবং এটি আমার উন্নয়ন ব্যবস্থার উপর দিয়ে চালানোর আগে আসলে কোনও ভয়ঙ্কর ধারণা হতে পারে এমন কোনও কারণ আছে কি? ভাঙা প্রতীকগুলি এমন কোনও উদ্দেশ্যে পরিবেশন করে যা আমি অবগত নই?


7
হ্যাঁ: টিক্সিত উত্তর নমুনা দেখুন। তবে আরও গুরুত্বপূর্ণ, এটি আপনার সমস্যার সমাধান নয়: স্ক্রিপ্টটি কেবল একটি স্যানিটাইজড সিস্টেম নয়, সঠিকভাবে কাজ করতে হবে। কোনও সিস্টেম এটি স্যানিটাইজ করা যেতে পারে এবং স্যানিটাইজ হওয়া এবং স্ক্রিপ্টের দ্বিতীয়ার্ধের মধ্যে মিলিসেকেন্ড। এছাড়াও এটি একক দায়িত্বের নীতি এবং ইউনিক্স দর্শনের লঙ্ঘন করেছে: "একটি কাজ ভালভাবে করুন"।
ctrl-alt-delor

উত্তর:


68

ভাঙা প্রতীকী লিঙ্কগুলির জন্য অনেকগুলি কারণ রয়েছে:

  • একটি লক্ষ্যে একটি লিঙ্ক তৈরি করা হয়েছিল যা আর বিদ্যমান নেই।
    রেজোলিউশন: ভাঙা সিমলিংকটি সরান।
  • একটি টার্গেটের জন্য একটি লিঙ্ক তৈরি করা হয়েছিল যা সরানো হয়েছে। বা এটি একটি লক্ষ্য সম্পর্কিত তুলনায় সরানো হয়েছে যে একটি আপেক্ষিক লিঙ্ক। (আপেক্ষিক প্রতিলিপিগুলি একটি খারাপ ধারণা বলে বোঝানোর জন্য নয় - একেবারে বিপরীত: নিখুঁত প্রতীকগুলি বাসি হওয়ার প্রবণতা বেশি কারণ তাদের লক্ষ্য সরিয়ে নেওয়া হয়েছে।)
    রেজোলিউশন: লক্ষ্যযুক্ত লক্ষ্য সন্ধান করুন এবং লিঙ্কটি ঠিক করুন।
  • লিঙ্কটি তৈরি করার সময় একটি ত্রুটি হয়েছিল।
    রেজোলিউশন: লক্ষ্যযুক্ত লক্ষ্য সন্ধান করুন এবং লিঙ্কটি ঠিক করুন।
  • লিঙ্কটি এমন কোনও ফাইলের সাথে সম্পর্কিত যা একটি অপসারণযোগ্য ডিস্ক, নেটওয়ার্ক ফাইল সিস্টেম বা অন্য স্টোরেজ এরিয়ায় যা বর্তমানে মাউন্ট করা হয়নি। রেজোলিউশন: কিছুই নয়, লিঙ্কটি সর্বদা ভাঙা হয় না। স্টোরেজ এরিয়া মাউন্ট করা হলে লিঙ্কটি কাজ করবে।
  • লিঙ্কটি কোনও ফাইলের সাথে যা ডিজাইন অনুসারে কেবলমাত্র কিছু সময় উপস্থিত থাকে। উদাহরণস্বরূপ, ফাইলটি কোনও প্রক্রিয়ার ক্যাশেড আউটপুট, যা মুছে ফেলা হয় যখন তথ্যটি বাসি হয়ে যায় তবে কেবল সুস্পষ্ট অনুরোধের ভিত্তিতে পুনরায় তৈরি করা হয়। বা লিঙ্কটি একটি ইনবক্সে রয়েছে যা খালি অবস্থায় মুছে ফেলা হয়। বা লিঙ্কটি কোনও ডিভাইসের ফাইলের সাথে সম্পর্কিত যা কেবলমাত্র যখন উপস্থিত পেরিফেরিয়াল সংযুক্ত থাকে তখন উপস্থিত থাকে। রেজোলিউশন: কিছুই নয়, লিঙ্কটি সর্বদা ভাঙা হয় না।
  • লিঙ্কটি কেবলমাত্র ভিন্ন স্টোরেজ শ্রেণিবিন্যাসে বৈধ। উদাহরণস্বরূপ, এটি কেবল একটি ক্রুট জেলে বৈধ, বা এটি একটি এনএফএস সার্ভার দ্বারা রফতানি করা হয় এবং কেবল সার্ভারে বা এর কিছু ক্লায়েন্টের ক্ষেত্রে বৈধ।
    রেজোলিউশন: কিছুই নয়, লিঙ্কটি সর্বত্র ভাঙা হয়নি।
  • লিঙ্কটি আপনার জন্য নষ্ট হয়ে গেছে, কারণ লক্ষ্যটিতে পৌঁছানোর জন্য আপনার কাছে ডিরেক্টরিকে অতিক্রম করার অনুমতি নেই, তবে উপযুক্ত সুযোগ সুবিধা প্রাপ্ত ব্যবহারকারীদের জন্য এটি ভাঙা হয়নি।
    রেজোলিউশন: কিছুই নেই, লিঙ্কটি সবার জন্য ভাঙা হয়নি।
  • লিঙ্কটি তথ্য সংরক্ষণ করার জন্য ব্যবহৃত হয়, যেমন ফায়ারফক্স লক উদাহরণটিতে ভিঙ্ক 17 দ্বারা উদ্ধৃত হয়েছে । এটি এইভাবে করার একটি কারণ হ'ল পারমাণবিকভাবে একটি সিমলিংক তৈরি করা সহজ - অন্য কোনও উপায় নেই, তবে কোনও ফাইলকে পরমাণুগতভাবে পপুলেশন করা আরও জটিল: আপনার একটি অস্থায়ী নামের অধীনে ফাইল সামগ্রী তৈরি করতে হবে এবং তারপরে এটি স্থানান্তরিত করতে হবে, এবং ক্র্যাশ হয়ে পিছনে ফেলে আসা বাসি অস্থায়ী ফাইলগুলি পরিচালনা করুন। আর একটি কারণ হ'ল সিমলিংকগুলি সাধারণত কিছু ফাইল সিস্টেমে সরাসরি তাদের ইনোডের মধ্যে সরাসরি সংরক্ষণ করা হয়, যা সেগুলি ফাইলের বিষয়বস্তু পড়ার চেয়ে দ্রুত পড়তে সক্ষম করে।
    রেজোলিউশন: কোনোটাই নয়। এই ক্ষেত্রে, লিঙ্কটি অপসারণ করা ক্ষতিকারক হবে।

যদি আপনি নির্ধারণ করতে পারেন যে একটি সিমিলিংক প্রথম বিভাগে আসে তবে নিশ্চিত, এগিয়ে যান এবং এটি মুছুন। অন্যথায়, বিরত থাকুন।

এমন একটি প্রোগ্রাম যা ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুসরণ করে এবং ফাইলের বিষয়বস্তুর যত্ন করে সাধারণত ভাঙা প্রতীকী লিঙ্কগুলিকে উপেক্ষা করা উচিত।


সিমলিঙ্কগুলি (সাধারণত) তাদের পিতামাতার ডিরেক্টরিতে থাকে না। তবে কিছু ফাইল সিস্টেমে লিঙ্ক টার্গেটটি ইনোডে সংরক্ষণ করা হয়।
জেমস ইয়ংম্যান

খুব ভাল তালিকা। আমার লিঙ্কগুলির একটি গুচ্ছ রয়েছে যা উভয় প্রকার 4 এবং 6 এ পড়ে They যখন ফাইল সিস্টেমটি মাউন্ট করা হয় না, তখন তারা টাইপ 4 হয়; যখন ফাইল সিস্টেমটি মাউন্ট করা হয়, কেবলমাত্র আমি এটি অ্যাক্সেস করতে পারি, তাই তারা অন্য সবার জন্য এমনকি 6 টি টাইপ করে (এমনকি মূল)।
বার্মার

একটি ভাঙ্গা সিমলিংকের আরও একটি সম্ভাব্য কারণ: একটি আসল ফাইলে একটি সিমিলিঙ্ক যা কেবলমাত্র কিছু সময় উপস্থিত থাকে। যেমন গভীর পাথ সহ কোনও কাজের প্রবাহে, আপনার কোনও কাজের ফাইলে (সুবিধার জন্য) একটি সিমিলিংক থাকতে পারে যা কাজের প্রবাহ সম্পূর্ণ হওয়ার পরে মুছে ফেলা হয়, তবে সেই কাজের প্রবাহের পরবর্তী ব্যবহারের সময় পুনরায় তৈরি করা হবে। / dev / মডেম এ জাতীয় ধরণের কারণ প্রকৃত ডিভাইস ফাইলটি কেবলমাত্র তখনই উপস্থিত হয় যখন দৈহিক ডিভাইস সংযুক্ত থাকে।
জো

বেশ ব্যাপক উত্তর!
njzk2

1
@ মিশেলডুরান্ট আহ? মুল বক্তব্যটি হ'ল ডাউনডাইড (বা এর অভাব) নির্ভর করে কীভাবে ভাঙা সিমলিংক এসেছে on
গিলস 21'20

19

সমস্ত জটলা প্রতীকী লিঙ্কগুলি অন্ধভাবে মুছে ফেলবেন না। এগুলি কেবল কিছু তথ্য বহন করার জন্য উপস্থিত থাকতে পারে এবং একটি সিমলিংক তৈরি পারমাণবিক হওয়ায় এটি সাধারণ ফাইলগুলির চেয়ে নিরাপদ হতে পারে।

উদাহরণস্বরূপ, ফায়ারফক্স একটি লকফিল "লক" তৈরি করে যা একটি সিলেমিংক যার মান "আইপি_ড্রেস: + পিআইডি" এর মতো ফর্ম রয়েছে।


1
সুতরাং, যেমন কোনও প্রোগ্রাম একটি ফাঁকা ফাইলকে গতিশীলভাবে পপুলেট করতে পারে যে এই সিমলিংকের একটি ভাঙা লিঙ্ক, যখন প্রোগ্রামটি চলছে না ? অথবা এটি কেবল তথ্যের একটি অংশ হতে পারে?
কম্বল_ক্যাট

1
@ নোটেক কিছু সিমলিংকের উদ্দেশ্য (কোনও চলমান প্রোগ্রামের সাথে জড়িত নয়) কেবলমাত্র অস্তিত্ব থাকতে পারে। তাদের মান হয় অর্থহীন বা কিছু নির্দিষ্ট তথ্য সরবরাহ করে; উভয় ক্ষেত্রেই, সাধারণভাবে, তারা কিছুই দেখায় না। কোনও খালি ফাইল নেই, কেবল একটি সিমলিংক। এছাড়াও নোট করুন, উদাহরণস্বরূপ, জিসিসি
ভিন

6

ফনর্ড এবং গ্যাটলিং ওয়েবসভার উভয়ই তাদের কনফিগারেশন ডাটাবেস হিসাবে ইউনিক্স ফাইল সিস্টেমটি ব্যবহার করেন (যেমন, মাইক্রোসফ্ট আইআইএস, যা উইন্ডোজ রেজিস্ট্রি বা অ্যাপাচি ব্যবহার করে যা জটিল-পার্স কনফিগারেশন ফাইল ব্যবহার করে)।

উদাহরণস্বরূপ, ভার্চুয়াল হোস্টগুলি কেবল ডিরেক্টরি, এবং একটি নতুন ভার্চুয়াল হোস্ট তৈরি করা তত সহজ

mkdir www.example.com:80

কোন ফাইলটি পরিবেশন করতে হবে তা কনফিগার করছেন?

chmod o+r file_that_should_be_served
chmod o-r secret_passwords

কোন ফাইল সিজিআই হিসাবে চালিত করতে হবে এবং কোনটি পরিবেশন করতে হবে তা কনফিগার করছেন?

chmod a-x plain_file.html
chmod a+x cgi_script.html

এবং সর্বশেষে (এবং এই প্রশ্নের সাথে প্রাসঙ্গিক): পুনঃনির্দেশকে কনফিগার করছেন?

ln -s 'http://www.google.com/?q=awesome+query+site:www.example.com' search.html

আপনার কাছে এখন একটি সিমলিংক থাকবে search.htmlযা বলা যায় না কোথাও পয়েন্ট দেয় না, তবে এটি আপনার সাইটের কাজের জন্য অত্যন্ত গুরুত্বপূর্ণ।


0

একটি সিমলিংক একটি নির্দিষ্ট ফাইলসিস্টেমের অবস্থান বা নাম তৈরি করতে বাধ্য করার জন্য একটি এখনও ইমটি অবস্থানের দিকে নির্দেশ করতে পারে।

সুতরাং না - তাদের অন্ধভাবে সরান না।


0

বাসি প্রতীকী লিঙ্কগুলি মুছে ফেলার একটি গুরুত্বপূর্ণ নেতিবাচক দিকটি হ'ল তারা যেখানে উল্লেখ করেছেন সেখানে উল্লেখটি হারাবে যা বেশ মূল্যবান হতে পারে!

বলুন আমার কাছে " send_to" নামক কোনও ফাইলের জন্য একটি প্রতীকী লিঙ্ক রয়েছে যা নির্দেশ করে /Users/myname/tmpএবং ধরুন যে /Users/myname/tmpএটি বিদ্যমান নেই।

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

একইভাবে একটি লিঙ্ক " my_config" /etc/conf_fileএটিতে 'খারাপ' হয়ে যায় কারণ এর conf_fileনামকরণ করা হয়েছে কনফার্মেশন_ফাইলে এখনও দরকারী তথ্য। আপনি যদি /etcডিরেক্টরিটিতে যান এবং একটি করে lsদেখেন যে নামকটি ফাইলটি conf_fileঅনুপস্থিত confirmation_fileছিল তবে সেখানে লিঙ্কটি ঠিক করার জন্য আপনার কাছে পর্যাপ্ত তথ্য থাকতে পারে।


-2

লিনাক্স কমান্ড লাইন থেকে উদ্ধৃতি দেওয়া (লিনাক্স newbies জন্য সেরা বই, এবং আপনি এটি এখানে বিনামূল্যে ডাউনলোড করতে পারেন ):

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

এখানে প্রতীকী লিঙ্কগুলি দিনটি সংরক্ষণ করে। ধরা যাক আমরা “foo” এর সংস্করণ ২. install ইনস্টল করেছি, যার "foo-2.6" ফাইল নাম রয়েছে এবং তারপরে "foo" নামক একটি প্রতীকী লিঙ্ক তৈরি করুন যা "foo-2.6" নির্দেশ করে This foo ", এটি আসলে" foo-2.6 "ফাইলটি খুলছে। এখন সবাই খুশি। যে প্রোগ্রামগুলি "foo" এর উপর নির্ভর করে তারা এটি খুঁজে পেতে পারে এবং আমরা এখনও দেখতে পাই যে প্রকৃত সংস্করণটি কীভাবে ইনস্টল করা আছে। যখন "foo-2.7" এ আপগ্রেড করার সময় হয়ে যায় তখন আমরা কেবল ফাইলটি আমাদের সিস্টেমে যুক্ত করি, প্রতীকী লিঙ্কটি "foo" মুছুন এবং একটি নতুন তৈরি করুন যা নতুন সংস্করণে নির্দেশ করবে। এটি কেবল সংস্করণ আপগ্রেডের সমস্যাটিকেই সমাধান করে না, তবে এটি আমাদের মেশিনে উভয় সংস্করণ রাখার অনুমতি দেয়। ভাবুন যে "foo-2.7" এর একটি বাগ রয়েছে (সেই বিকাশকারীদের ঘৃণা করতে পারে!) এবং আমাদের পুরানো সংস্করণে ফিরে যেতে হবে। আবার,

সুতরাং না, আমি প্রতীকী লিঙ্কগুলি মুছব না কারণ এটি অবশ্যই মাথাব্যথা হয়ে উঠবে এবং আপনি আপনার সিস্টেমকে গুরুতরভাবে বিশৃঙ্খলাবদ্ধ হওয়ার ঝুঁকিটি চালান।


6
ওপি সিমলিঙ্কগুলি টাউট কোর্ট অপসারণের পক্ষে ছিল না - কেবল ভাঙা সিমলিংক, অর্থাত্ সিমলিংক যা কোনও বিদ্যমান বিদ্যমান ফাইলকে নির্দেশ করে না।
এলসার্নি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.