অন্য ব্যবহারকারী / গোষ্ঠী (init.d স্ক্রিপ্ট) হিসাবে প্রক্রিয়া আরম্ভ করুন


10

আমি একটি init.d স্ক্রিপ্ট সম্পাদনা করছি। Init.d স্ক্রিপ্টটি একটি ইউটিলিটি স্ক্রিপ্ট চালায় যা তারপরে একটি প্রক্রিয়া চালায়। উভয় বাশ স্ক্রিপ্ট থেকে আমি কীভাবে এটি নির্দিষ্ট ব্যবহারকারী এবং গোষ্ঠী হিসাবে প্রধান প্রক্রিয়াটি চালু করব?

উত্তর:


12

সহজ উপায়টি হল su (1) কমান্ডটি ব্যবহার করা, এটির একটি বিকল্প রয়েছে যা আপনাকে ব্যবহারকারীর শেলের মাধ্যমে একটি কমান্ড চালানোর অনুমতি দেয়, উদাহরণস্বরূপ:

su foo -c ls

এটি ব্যবহারকারী foo এ স্যুইচ করবে এবং ls কমান্ড চালাবে। আপনি যে ব্যবহারকারীর ব্যবহার করতে চান তার যদি একটি বৈধ শেল না থাকে (যেমন এটি / ইত্যাদি / শেলগুলিতে নয়, যেমন / বিন / মিথ্যা বা / এসবিন / নোলোগিন) আপনার কমান্ড লাইনে একটি শেলও নির্দিষ্ট করতে হবে। আউটপুট সহ উদাহরণ:

# su nobody -s /bin/bash -c id
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

su এর মত মনে হচ্ছে না আমি এটিকে অনেক যুক্তি দিই। আমি পেয়েছি Usage: su [options] [LOGIN]এবংsu: unrecognized option '--debug'

এটি ঠিক কাজ করছে না। আমি যখন এই লাইনটিকে রুট হিসাবে চালিত করি তখন su www-data -c ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &আমি su www-dataসমস্ত ত্রুটি সেট করে এটি চালিয়ে গেলে একটি ত্রুটি পাই ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &। কিভাবে আমি এই সমাধান?

2
@ অ্যাসিডজম্বি 24 suএকটি একক যুক্তি নেয় যা শেল কমান্ড। আপনাকে লিখতে হবে su www-data -c '$MONOSERVER "/application=$WEBAPPS" "/socket=unix:/path/monoserve.pid"', এবং তা নিশ্চিত করতে হবে MONOSERVERএবং WEBAPPSপিতামাত শেল দ্বারা রফতানি করা দরকার। (দ্রষ্টব্য: su … -c "$MONOSERVER …"ভেরিয়েবলগুলির মধ্যে যদি শেল বিশেষ অক্ষর থাকে তবে এটি ব্যর্থ হবে না )) এবং আপনার যদি ডেডিকেটেড ডেমন লঞ্চার যেমন থাকে তবেstart-stop-daemon এটি ব্যবহার করুন।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

গিলস: ঠিক আছে, আমি কি আমি আর.ডি.পি স্ক্রিপ্টটি প্রতিস্থাপন করছি না? আমি সমস্ত ভেরিয়েবলগুলিকে একটি নতুন স্ক্রিপ্টে রাখতে পারি এবং এটি চালু করতে পারি যেহেতু এটি সহজ হবে এবং আমি কিছু শিখতে চাই না। তবে স্টার্ট-স্টপ-ডিমন সম্পর্কে এত বিশেষ কী? আমি এই উত্তরে একটি মন্তব্য করব

সু বা স-লগিন ব্যবহার করা কি ভাল? আমি সুের লোকটি পড়েছি তবে আমি এই নির্দিষ্ট মামলার জন্য বুঝতে পারি না
ম্যাসিমো

4

যদি start-stop-daemonআপনার সিস্টেমে উপলভ্য থাকে আপনার সম্ভবত এটি ব্যবহার করা উচিত এবং এর বিকল্পগুলির দিকে নজর দেওয়া উচিত (বিশেষত -uএবং -gএই ক্ষেত্রে)।

(অন্যথায়, আপনি suএবং এর সংমিশ্রণটি ব্যবহার করতে পারেন sg))

আপডেট: এখানে কিছু /etc/init.d/mpdস্ক্রিপ্ট থেকে নেওয়া উদাহরণ (যা ব্যবহার করে start-stop-daemon):

  • কমান্ড শুরু করুন:

    echo "Starting Music Player Daemon"
    start-stop-daemon --start --quiet --background --exec /usr/bin/mpd \
        --pidfile /var/run/mpd.pid --make-pidfile \
        -- --no-daemon /etc/mpd.conf 2>/dev/null
    

    এরপরে যা কিছু --আসে তা /usr/bin/mpdপ্রোগ্রামের নিজস্ব একটি যুক্তি । (ডেমোনাইজেশন পদ্ধতিটি স্টার্ট-স্টপ-ডেমন স্ক্রিপ্ট দ্বারা যত্ন নেওয়া হয় তাই mpdএটি সম্পর্কে যত্ন নেওয়ার জন্য বলা হয় না --nodaemon))

  • কমান্ড বন্ধ করুন:

    echo "Stopping Music Player Daemon"
    start-stop-daemon --stop --exec /usr/bin/mpd --pidfile /var/run/mpd.pid
    

যদি mpdনিজে বিশেষাধিকার ড্রপ করা হয় নি, এক (উদাহরণস্বরূপ) যোগ করতে হবে -u mpd, -g mpdকরতে অনেক বিকল্প start-stop-daemonকমান্ড।


আমি init.d স্ক্রিপ্টটি স্টার্ট-স্টপ-ডেমোন দিয়ে প্রতিস্থাপন করছি না আমি? এস ও স্ক্রিপ্ট ফাইল ব্যবহার করা কি সহজ হবে? আমি যদি init.d প্রতিস্থাপন করি তবে কীভাবে এটি প্রারম্ভকালে চালানোর জন্য ইনস্টল করব? আমি স্টার্ট-স্টপ-ডিমন পাস করছি কি? - সম্পাদনা- আমি এটিএম গুগলিং করছি এটিএম এর উত্তর আমার দরকার নেই তবে আমার মনে হচ্ছে এটি একটি জটিল উত্তর হতে চলেছে

2
ভাগ্য নেই. এখানে আমার লাইন। এটি এখনও মূল হিসাবে চালায়। আমি ম্যান পেজগুলি যাচাই করেছিলাম এবং এ সম্পর্কে কী করতে হবে তা এখনও জানি না। start-stop-daemon --start --quiet --background -u www-data -g www-data --exec ${MONOSERVER} --pidfile /path/monoserve.pid --make-pidfile -- /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.