मुझे सिस्टम में लॉग इन करने से पहले एक प्रक्रिया चलाने की आवश्यकता है। इसे सेवाओं की तरह कैसे चलाएं? मैं लिनक्स में सेवाएं कैसे करूं?
उबंटू और फेडोरा में? सेवा को कस्टमाइज़ किया गया है
मुझे सिस्टम में लॉग इन करने से पहले एक प्रक्रिया चलाने की आवश्यकता है। इसे सेवाओं की तरह कैसे चलाएं? मैं लिनक्स में सेवाएं कैसे करूं?
उबंटू और फेडोरा में? सेवा को कस्टमाइज़ किया गया है
जवाबों:
सिस्टम में लॉग इन किए बिना या उससे पहले एक सेवा चलाने के लिए (यानी "बूट पर"), आपको एक स्टार्टअप स्क्रिप्ट बनाने और इसे बूट अनुक्रम में जोड़ने की आवश्यकता होगी।
सेवा स्क्रिप्ट के तीन भाग हैं: प्रारंभ, रोकें और पुनः आरंभ करें।
सेवा स्क्रिप्ट की मूल संरचना है:
#!/bin/bash
#
RETVAL=0;
start() {
echo “Starting <Service>”
}
stop() {
echo “Stopping <Service>”
}
restart() {
stop
start
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit $RETVAL
एक बार जब आप स्क्रिप्ट को अपनी पसंद के अनुसार बदल देते हैं, तो बस इसे /etc/init.d/ में रखें
, और, इसे सिस्टम सेवा स्टार्टअप प्रक्रिया में जोड़ें (फेडोरा पर, मैं एक Ubuntu उपयोगकर्ता नहीं हूं,> D):
chkconfig -add <ServiceName>
सेवा को बूट अप प्रक्रिया में जोड़ा जाएगा और आपको इसे फिर से शुरू नहीं करना पड़ेगा।
चीयर्स!
Init सिस्टम के आधार पर, आप init स्क्रिप्ट को अलग तरह से बनाते हैं। फेडोरा आपको चुनने के लिए अपस्टार्ट और सिस्टमड देता है, और निश्चित रूप से SysV संगतता।
/etc/init/custom-tomcat.conf
अंदर डालो:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/tomcat --and --parameters
और आपका टॉमकैट सिस्टम स्टार्ट पर शुरू होना चाहिए।
/etc/systemd/system/custom-tomcat.service
अंदर डालो:
[Service]
ExecStart=/path/to/your/tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
और अपनी सेवा का उपयोग करके सक्षम करें systemctl enable custom-tomcat.service
। इसे हर सामान्य बूट में शुरू किया जाएगा।
बेशक दोनों init सिस्टम के लिए कुछ और विन्यास विकल्प हैं, आप उनके प्रलेखन में जाँच कर सकते हैं।
टॉम्कट एक काफी सामान्य सेवा है, मैं पहले से ही डिस्ट्रो द्वारा प्रदान की गई इनइट स्क्रिप्ट को देखने की सलाह दूंगा। संभावना है कि यह आपके कस्टमाइज्ड बाइनरी के साथ काम करता है, जिसमें कोई ट्विकिंग नहीं होती है।
यदि आपके पास cron
डेमॉन है, तो पूर्वनिर्धारित क्रोन समय हुक में से एक है @reboot
, जो स्वाभाविक रूप से सिस्टम शुरू होने पर चलता है। crontab -e
अपनी crontab
फ़ाइल संपादित करने के लिए चलाएँ , और एक पंक्ति जोड़ें:
@reboot /your/command/here
आप एक अधिक परिष्कृत स्क्रिप्ट बना सकते हैं, जो आपको एक विशिष्ट उपयोगकर्ता की अनुमति के तहत चलने की अनुमति देता है, इस प्रकार है:
#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"
#Helper functions
start() {
start-stop-daemon --start --quiet --background --make-pidfile \
--pidfile /var/run/$NAME.pid --chuid $USERGROUP \
--exec /usr/local/bin/myservice
}
stop() {
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec myservice --retry 30
}
case "$1" in
start)
echo -n "Starting $DESC: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
stop
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
#set +e
stop
#set -e
#sleep 1
start
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
स्क्रिप्ट /etc/init.d/myservice में जाती है, और आप सेवा को निष्पादित करके शुरू करते हैं:
/etc/init.d/myservice start
यह कैसे काम करता है यह समझने के लिए स्टार्ट-स्टॉप-डेमन पर मैन पेज पढ़ें।
उबंटू या डेबियन में जैसे आप उपयोग कर सकते हैं, जोड़ने के लिए
update-rc.d your_service defaults
हटाना
update-rc.d -f your_service remove
अलविदा! \ o
कार्यों की स्थिति को लागू करने के लिए अच्छा है और बल-पुनः लोड करना LSB-compilant है
service --status-all
सूची में मेरे डेमॉन को कैसे बनाया जाए ?