আমার একটি প্রোগ্রাম রয়েছে যা এর সেটিংসটি সঞ্চয় করে ~/.config/myprogram
যে আমি উভয় ইন্টারেক্টিভ এবং ব্যাচ কুইউং সিস্টেমের সাথে ব্যবহার করি। ইন্টারেক্টিভভাবে চলাকালীন, আমি এই প্রোগ্রামটিটি আমার কনফিগারেশন ফাইলগুলি ব্যবহার করতে চাই (এবং এটি হয়)। তবে ব্যাচ মোডে চলার সময় কনফিগারেশন ফাইলগুলি প্রয়োজনীয় নয় কারণ আমি কমান্ড-লাইন বিকল্পগুলি নির্দিষ্ট করে যা সমস্ত প্রাসঙ্গিক সেটিংস ওভাররাইট করে। আরও, নেটওয়ার্কের মাধ্যমে কনফিগারেশন ফাইলগুলিতে অ্যাক্সেস প্রোগ্রামের প্রারম্ভকালীন সময়টিকে কয়েক সেকেন্ড বৃদ্ধি করে; যদি ফাইলগুলির অস্তিত্ব না থাকে তবে প্রোগ্রামটি আরও দ্রুত চালু হয় (প্রতিটি কাজ যেমন কেবল এক মিনিট সময় নেয় তাই ব্যাচের চাকরির থ্রুটপুটটিতে এটির প্রভাব ফেলবে)। তবে আমিও প্রোগ্রামটি ইন্টারেক্টিভভাবে ব্যবহার করার কারণে, আমি আমার কনফিগারেশন ফাইলগুলি সারাক্ষণ সরিয়ে / মুছে ফেলতে চাই না। কখন আমার ব্যাচের কাজগুলি ক্লাস্টারে নির্ধারিত হবে (অন্যান্য ব্যবহারকারীর ব্যবহারের ভিত্তিতে),
(একদিকে: নেটওয়ার্ক ফাইলের পারফরম্যান্সটি এত ধীরে ধীরে সম্ভবত একটি বাগ, তবে আমি ক্লাস্টারের কেবলমাত্র একজন ব্যবহারকারী, তাই আমি কেবল এটির আশপাশে কাজ করতে পারি, এটি ঠিক করতে পারি না))
আমি প্রোগ্রামটির এমন একটি সংস্করণ তৈরি করতে পারি যা ব্যাচ ব্যবহারের জন্য কনফিগারেশন ফাইলগুলি পড়েনি (বা না করার জন্য একটি কমান্ড-লাইন বিকল্প রয়েছে) তবে এই প্রোগ্রামটির বিল্ডিং পরিবেশটি খারাপ-ইঞ্জিনিয়ারড এবং সেট আপ করা শক্ত। আমি আমার সিস্টেমের প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা বাইনারিগুলি ব্যবহার করতে পছন্দ করব।
আমার কনফিগারেশন ফাইলের অস্তিত্ব নেই (প্রোগ্রাম পরিবর্তন না করে) কীভাবে এই প্রোগ্রামটির বিশেষ উদাহরণগুলি চালিত করব? আমি ফর্মটি একটি মোড়কের জন্য আশা করছি pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
, তবে আমি অন্যান্য সমাধানের জন্য উন্মুক্ত।
LD_PRELOAD
হুক ব্যবহার করতে পারেন । বিকল্পটির চেয়ে এটি সহজ (আপনি যদি এক ঘন্টার মধ্যে দু'বারের মধ্যে এটি প্রয়োগ করতে পারেন) তবে এটি ptrace
। এটি করার জন্য আপনি সম্ভবত ফ্যাকেরুটও ব্যবহার করতে পারেন (যা এলডিপ্রেলএড, আমি বিশ্বাস করি)।