मुझे एक शेल स्क्रिप्ट मिली है, जो अनिवार्य रूप से कुछ लॉगिंग के साथ एक लाइनर है, जिसे मैं एक init स्क्रिप्ट से चलाने की कोशिश कर रहा हूं। मैं इसे चलाने daemon
के /etc/init.d/functions
लिए अंदर फ़ंक्शन का उपयोग कर रहा हूं , क्योंकि Redhat start-stop-daemon
उपलब्ध नहीं है। जब मैं init स्क्रिप्ट को कॉल करता हूं ( /etc/init.d/script start
) यह अग्रभूमि में रहता है, बजाय चलने की प्रक्रिया को पूरा करने और छोड़ने के। मेरे लिए इस लिपि को निष्क्रिय करने का उचित तरीका क्या है?
चलाने के लिए स्क्रिप्ट:
# conf file where variables are defined
. /etc/script.conf
echo "Starting..." | logger -i
echo "Monitoring $LOG_LOCATION." | logger -i
echo "Sending to $MONITOR_HOST:$MONITOR_PORT." | logger -i
tail -n 1 -F $LOG_LOCATION |
grep WARN --line-buffered |
/usr/bin/nc -vv $MONITOR_HOST $MONITOR_PORT 2>&1 |
logger -i
init स्क्रिप्ट:
#!/bin/bash
# Source Defaults
. /etc/default/script
# Source init functions
. /etc/init.d/functions
prog=/usr/local/bin/script.sh
[ -f /etc/script.conf ] || exit 1
RETVAL=0
start()
{
# Quit if disabled
if ! $ENABLED; then
echo "Service Disabled in /etc/default/script"
exit 1
fi
echo "Starting $prog"
daemon $prog
RETVAL=$?
return $RETVAL
}
stop ()
{
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$?
return $RETVAL
}
reload()
{
echo "Reload command is not implemented for this service."
return $RETVAL
}
restart()
{
stop
start
}
condrestart()
{
echo "Not Implemented."
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
RETVAL=1
esac
बैश के साथ निष्पादन की अंतिम ~ 20 पंक्तियाँ -vx:
+ case "$1" in
+ start
+ true
+ echo 'Starting /usr/local/bin/script.sh'
Starting /usr/local/bin/script.sh
+ daemon /usr/local/bin/script.sh
+ local gotbase= force=
+ local base= user= nice= bg= pid=
+ nicelevel=0
+ '[' /usr/local/bin/script.sh '!=' /usr/local/bin/script.sh ']'
+ '[' -z '' ']'
+ base=script.sh
+ '[' -f /var/run/script.sh.pid ']'
+ '[' -n '' -a -z '' ']'
+ ulimit -S -c 0
+ '[' -n '' ']'
+ '[' color = verbose -a -z '' ']'
+ '[' -z '' ']'
+ initlog -q -c /usr/local/bin/script.sh
daemon
, वहाँ एक RPM पैकेज भी। Btw, वहाँ कई लॉग मॉनिटरिंग उपकरण हैं ( यहाँ शुरू करें )।
#!/bin/bash -vx
? मैंने ऐसा करने की कोशिश की, लेकिन यह init स्क्रिप्ट से उतने आउटपुट का उत्पादन नहीं किया जितना कि अगर मैं सीधे शेल स्क्रिप्ट को चलाता हूं।
bash -vx
, यानी के साथ चलाकर जांच सकते हैं । bash -vx /etc/init.d/script start
।
bash -vx ...
को अंतिम पंक्तियों के माध्यम से चलाते हैं ताकि हम यह देख सकें कि अग्रभूमि में क्या रहता है।