सबसे आसान तरीका Proc::Daemon का उपयोग करना है।
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init;
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };
while ($continue) {
#do stuff
}
वैकल्पिक रूप से आप चीजों को प्रोक :: Daemon करता है के सभी कर सकता है:
- कांटा एक बच्चे और माता पिता प्रक्रिया बाहर निकालता है।
- एक सत्र नेता बनें (जो नियंत्रण टर्मिनल से प्रोग्राम को अलग करता है)।
- फोर्क एक और बच्चे की प्रक्रिया और पहले बच्चे से बाहर निकलें। यह एक नियंत्रण टर्मिनल प्राप्त करने की क्षमता को रोकता है।
- वर्तमान कार्य निर्देशिका को
"/"
पर बदलें।
- फ़ाइल निर्माण मास्क साफ़ करें।
- सभी खुले फ़ाइल डिस्क्रिप्टर बंद करें।
रनलेवल सिस्टम के साथ एकीकृत करना आसान है। आपको निम्न की तरह एक स्क्रिप्ट चाहिए (को पर्ल स्क्रिप्ट के नाम, YYYYYYYYYYYYYYYYYYY
के साथ इसके विवरण के साथ, और /path/to
पर्ल स्क्रिप्ट के पथ के साथ प्रतिस्थापित करें) /etc/init.d
में बदलें। चूंकि आप CentOS का उपयोग कर रहे हैं, एक बार जब आपके पास /etc/init.d
में स्क्रिप्ट है, तो आप इसे chkconfig का उपयोग इसे बंद करने या विभिन्न रनलेवल में चालू करने के लिए कर सकते हैं।
#!/bin/bash
#
# XXXXXXXXXXXX This starts and stops XXXXXXXXXXXX
#
# chkconfig: 2345 12 88
# description: XXXXXXXXXXXX is YYYYYYYYYYYYYYYYYYY
# processname: XXXXXXXXXXXX
# pidfile: /var/run/XXXXXXXXXXXX.pid
### BEGIN INIT INFO
# Provides: $XXXXXXXXXXXX
### END INIT INFO
# Source function library.
. /etc/init.d/functions
binary="/path/to/XXXXXXXXXXXX"
[ -x $binary ] || exit 0
RETVAL=0
start() {
echo -n "Starting XXXXXXXXXXXX: "
daemon $binary
RETVAL=$?
PID=$!
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/XXXXXXXXXXXX
echo $PID > /var/run/XXXXXXXXXXXX.pid
}
stop() {
echo -n "Shutting down XXXXXXXXXXXX: "
killproc XXXXXXXXXXXX
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/XXXXXXXXXXXX
rm -f /var/run/XXXXXXXXXXXX.pid
fi
}
restart() {
echo -n "Restarting XXXXXXXXXXXX: "
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status XXXXXXXXXXXX
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
;;
esac
exit 0
स्रोत
2009-04-19 23:41:55
मुझे सेवा एक्स chkconfig का समर्थन नहीं करता है। जब chkconfig -add एक्स चलाते हैं तो कोई सुझाव? – Jirapong
आह, माफ करना मेरी गलती है। # डिस्क्रिप्शन पर टाइपो। बहुत धन्यवाद! – Jirapong
ग्रेट फीडबैक, बड़ा धन्यवाद! –