আমি /etc/init.d/ এ একটি স্ক্রিপ্ট তৈরি করেছি যা তাদের হোম ডিরেক্টরি থেকে অন্যান্য (মূলবিহীন সুবিধাযুক্ত) ব্যবহারকারীদের থেকে বেশ কয়েকটি স্ক্রিপ্ট চালাতে হবে, যেন তারা সেগুলি শুরু করে।
আমি এই স্ক্রিপ্টগুলি এর সাথে চালু করি: sudo -b -u <username> <script_of_a_particular_user>
এবং এটি কাজ করে। তবে চলমান প্রতিটি ব্যবহারকারীর স্ক্রিপ্টের জন্য (উদাহরণস্বরূপ কিছু ওয়াচডগ) আমি সংশ্লিষ্ট প্যারেন্ট সুডো প্রক্রিয়াটি দেখতে পাচ্ছি, এখনও জীবিত এবং মূল হিসাবে চলমান। এটি সক্রিয় প্রক্রিয়া তালিকায় একটি গোলযোগ তৈরি করে।
সুতরাং আমার প্রশ্ন হ'ল আমি কীভাবে বিদ্যমান ব্যাশ স্ক্রিপ্ট থেকে অন্য একজন ব্যবহারকারী হিসাবে অন্য স্ক্রিপ্ট চালু করতে পারি (এটিকে অনাথ (একা দাঁড়িয়ে থাকি)) প্রক্রিয়া হিসাবে ছেড়ে যেতে পারি?
আরও বিশদ বিবরণ:
আমি মূলত মেশিনে অন্য ব্যবহারকারীদের তাদের স্ট্যান্ডআপ, .startUp এবং .shutDown নামক হোম ডিরেক্টরিতে প্রাপ্ত সাব-ডাইরেক্টরিগুলিতে পাওয়া এক্সিকিউটেবল ফাইলগুলি চালিয়ে সিস্টেম স্টার্ট বা সিস্টেম শাটডাউন দিয়ে স্টাফ চালানোর উপায় সরবরাহ করার চেষ্টা করছি। যেহেতু আমি অন্য কোনও উপায় খুঁজে পাইনি যে আমি আমার বাশ স্ক্রিপ্টটি লিখেছিলাম যা ঠিক এটি করে এবং আমি এটি একটি সার্ভিস স্ক্রিপ্ট হিসাবে কনফিগার করেছি (কঙ্কালের উদাহরণ অনুসরণ করে) /etc/init.d/ এ, সুতরাং যখন এটি চালানো হয় স্টার্ট আর্গুমেন্টের সাহায্যে এটি স্টার্টআপ ডিরেক্টরিগুলি থেকে শুরু করে এবং স্টপ আর্গুমেন্টের সাথে চালিত হলে এটি তাদের হিসাবে সমস্ত ব্যবহারকারীর .shutDown ডিরেক্টরি থেকে শুরু করে।
বিকল্পভাবে আমি আগ্রহী যদি আমি এই সমস্যা সমাধানের জন্য কিছু বিদ্যমান সমাধান ব্যবহার করতে পারি।
হালনাগাদ
আমি কিছুটা ঘুরে দেখলাম এবং আমি এই প্রশ্নটি পেয়েছি:
/unix/22478/detach-a-daemon-using-sudo
উত্তর গৃহীত হয়েছে, ব্যবহার করার জন্য:, sudo -u user sh -c "daemon & disown %1"
আমার পক্ষে কাজ করে। তবে আমি % 1 অস্বীকার না করেও চেষ্টা করেছি এবং এটি একই রকম। সুতরাং এটিই আমার প্রত্যাশার মতো কাজ করে:
sudo -u <username> bash -c "<script_of_a_particular_user> &"
আমার এখন অতিরিক্ত প্রশ্ন হ'ল এটি কেন অস্বীকার না করে কাজ করছে? আমি কি কিছু সম্ভাব্য বিশেষ ক্ষেত্রে, নির্বিশেষে, অস্বীকার কলটি ছেড়ে দেব ?
আপডেট 2
স্পষ্টতই এটিও কাজ করে:
su <username> -c "<script_of_a_particular_user> &"
এই কল এবং সুডো কলটির মধ্যে কি কোনও পার্থক্য রয়েছে? আমি জানি এটি সম্ভাব্য একটি সম্পূর্ণ ভিন্ন প্রশ্ন। তবে যেহেতু আমি এখানে উত্তরগুলি নিজেরাই খুঁজে পাচ্ছি সম্ভবত এই বিষয়ের জন্য কেউ এখানে এটি স্পষ্ট করতে পারে।
আপডেট 3
সু বা সুডো সহ এই দুটি পদ্ধতিই আমি মেশিনটি বুট করার পরে একটি নতুন স্টার্টপার প্রক্রিয়া (রুট হিসাবে চালিত একক প্রক্রিয়া) উত্পাদন করে। প্রক্রিয়া তালিকায় দৃশ্যমান:
startpar -f -- <name_of_my_init.d_script>
কেন এই প্রক্রিয়া প্রসারিত হয়? স্পষ্টতই আমি কিছু ভুল করছি যেহেতু অন্য কোনও init.d স্ক্রিপ্টটিতে এই প্রক্রিয়াটি চলছে না।
আপডেট 4
স্টার্টপারের সমস্যাটি সমাধান করা হয়েছে। আমি তার জন্য আরও একটি প্রশ্ন শুরু করেছি:
আরসি.লোকাল বা আর ডি.ডি থেকে প্রক্রিয়া শুরু করার সময় স্টার্টপ্যার প্রক্রিয়াটি ঝুলন্ত বামে
এবং অন্য প্রশ্নবিদ্ধ ব্যবহারকারীদের জন্য চালু করার পদ্ধতি নিয়ে আরও আলোচনার জন্য আরেকটি প্রশ্ন:
আরম্ভকরণ এবং শাটডাউন অটো-চালনার ক্ষমতা সহ সাধারণ ব্যবহারকারী (অ-মূল) সরবরাহ করা