লিনাক্সে, যখন কোন এক্সিকিউটেবল ফাইলটি পরিবর্তন বা মুছে ফেলা হয় তখন কোনও চলমান প্রোগ্রামের কী হবে?


11

ধরা যাক /usr/local/bin/rubyপটভূমিতে চলছে এবং তারপরে আমরা rubyএকটি আলাদা সংস্করণ দিয়ে ওভাররাইট করব , এমনকি মুছুন ruby

রুবি প্রসেসগুলি চলমানগুলির কী হবে?

উত্তর:


9

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


"যদি একই ফাইলটি খোলা থাকে এবং এর অংশগুলি পরিবর্তন করা হয়" যদি এক্সিকিউটেবল অপসারণ করা হয় এবং একই জায়গায় একই নামের একটি নতুন ফাইল "?? সমান হয় না" ?? আপনি কি বোঝাতে চেয়েছিলেন যে পুরানো ফাইল থেকে এমভি নতুন ফাইলটি খারাপ তবে আরএম পুরাতন ফাইল তারপর সিপি নতুন ফাইল থেকে পুরানো ফাইলের অবস্থান ঠিক আছে?
জিন 1

4

তারা চলতে থাকবে। তারা যদি নিজেরাই চেষ্টা করে এবং অ্যাক্সেস করে এবং একেবারে ভুল কিছু পেয়ে থাকে তবে ভয়াবহভাবে ক্রাশ হতে পারে। আমি না থাকলে আমি এটি করব না :)


হাঁ। স্ক্রিপ্ট চলমান থাকাকালীন আমি ম্যানুয়ালি সমস্ত সময় সফ্টওয়্যার আপডেট করি update
জন টি

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

1

রুবি প্রসেসগুলি চলমানগুলির কী হবে?

  1. / usr / স্থানীয় / বিন / রুবি একটি অনুলিপি তৈরি করুন
  2. [যদি এটি চলছে না, চালান / ইউএসআর / স্থানীয় / বিন / রুবি]
  3. চেষ্টা করুন: আরএম / ইউএসআর / স্থানীয় / বিন / রুবি
  4. এবং নিজের জন্য দেখুন :)

1

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

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

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

আমার একটি RAID কন্ট্রোলারের সাথে সমস্যা ছিল যা পুরো ডিস্কের কারণ হয়েছিল যে রুট ডিরেক্টরি এবং অন্যান্য পার্টিশনগুলি হঠাৎ করে এটির সংযোগ বিচ্ছিন্ন হয়ে কাজ করার জন্য মাউন্ট করা হয়েছিল। নতুন প্রোগ্রাম লোড করা যায়নি, তবে ডিস্ক থেকে ফাইলের প্রয়োজন না হওয়া পর্যন্ত মেমরির মধ্যে রয়েছে তারা ঠিকঠাক কাজ করছিল।


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