ডেমন এর আউটপুট ক্যাপচার এবং ফাইল এ সংরক্ষণ করা খুব কঠিন নয়:
start-stop-daemon --start --background \
--pidfile $PIDFILE --make-pidfile \
--chuid $DAEMON_USER \
--startas $DAEMON --no-close \
-- $DAEMON_ARGS >> $LOGFILE 2>&1
তবে এই সমাধানটি সাবঅস্টিমাল হতে পারে logrotate
।
সিসলগে আউটপুট ক্যাপচার করা ভাল। উপর ডেবিয়ান এই systemd হল পরিষেবার আচরণ মেলে যাবে। উপরের উদাহরণটি পুনরায় লেখার জন্য নিম্নোক্ত সোজাসুজি প্রচেষ্টা ভুল কারণ এটি ডেমন থামানোর পরে দুটি পিতামাতা-কম ("জম্বি") প্রক্রিয়া (লগার এবং ডিমন) এর পিছনে ফেলে কারণ start-stop-daemon
এটি কেবলমাত্র তার সন্তানের সমাপ্ত করে তবে সমস্ত বংশধর নয়:
## Do not use this!
start-stop-daemon --start --background \
--pidfile $PIDFILE --make-pidfile \
--chuid $DAEMON_USER \
--startas /bin/sh \
-- -c """exec $DAEMON $DAEMON_ARGS | /usr/bin/logger --tag $NAME"""
এটিকে কাজ করতে আমাদের এমন একটি মোড়কের দরকার যা তার বাচ্চাদের কাছ SIGTERM
থেকে পেয়ে শেষ করে start-stop-daemon
। কিছু আছে:
পাওনা :
start-stop-daemon --start --background \
--pidfile $PIDFILE \
--startas /usr/sbin/duende \
-- --pid $PIDFILE --chroot=/ --uid 65534 --ident $NAME \
/bin/su --login $DAEMON_USER --shell /bin/sh --command """exec ${DAEMON} $DAEMON_ARGS"""
নোট: uid=65534
একটি ব্যবহারকারী nobody
।
পেশাদাররা : এটি কাজ করে এবং এটি তুলনামূলকভাবে সহজ।
কনস : 4 টি প্রক্রিয়া (তদারককারী duende
, বাদ দেওয়া সুবিধাগুলি সহ তার কাঁটাচামচ (লগার) su
এবং নিজেই ডিমন); বাধ্যতামূলক --chroot
; যদি ডেমন এখনই সমাপ্ত হয় (উদাঃ অবৈধ কমান্ড) status_of_proc -p $PIDFILE "$DAEMON" "$NAME"
এটি সফলভাবে শুরু হিসাবে রিপোর্ট করুন।
ডেমন :
start-stop-daemon --start --pidfile $PIDFILE \
--startas /usr/bin/daemon \
-- --noconfig --name $NAME --stderr=syslog.info --stdout=syslog.info \
-- /bin/su --login $DAEMON_USER --shell /bin/sh --command """exec $DAEMON $DAEMON_ARGS"""
পেশাদাররা : 3 প্রসেস (সুপারভাইজার daemon
, su
এবং নিজেকে ডেমন)।
কনস : পরিচালনা অত্যন্ত কঠিন কাজ $PIDFILE
কারণে বিভ্রান্তিকর করার ডেমন এর কমাণ্ড লাইন অপশন সম্বন্ধে; যদি ডেমন এখনই সমাপ্ত হয় (উদাঃ অবৈধ কমান্ড) status_of_proc -p $PIDFILE "$DAEMON" "$NAME"
এটি সফলভাবে শুরু হিসাবে রিপোর্ট করুন।
start-stop-daemon --start --background \
--pidfile $PIDFILE --make-pidfile \
--chuid $DAEMON_USER \
--startas /usr/bin/pipexec -- -k \
-- [ D $DAEMON $DAEMON_ARGS ] [ L /usr/bin/logger --tag $NAME ] '{D:2>D:1}' '{D:1>L:0}'
পেশাদাররা : 3 প্রসেস (সুপারভাইজার pipexec
, logger
এবং নিজেকে ডেমন); যদি ডিমন এখনই সমাপ্ত হয় (উদাহরণস্বরূপ অবৈধ আদেশ) status_of_proc -p $PIDFILE "$DAEMON" "$NAME"
সঠিকভাবে ব্যর্থতার রিপোর্ট করে।
কনস : কিছুই না।
এটি বিজয়ী - সবচেয়ে সহজ, ঝরঝরে সমাধান যা ভালভাবে কাজ করছে বলে মনে হচ্ছে।
--start
সঙ্গে--stop
আসলে কাজ করে।