لا يمكن أن تتوقف الخدمة جافا في لينكس باستخدام بدء وقف الخفي
سؤال
ولدي العملية التي يتم تشغيل وحدة الخفي جافا على أوبونتو لينكس.
لا أستطيع التوقف عن ذلك باستخدام الأوامر بدء الشيطان توقف في d_stop () أدناه.
يجب أن تكون مكتوبةومعرف العملية لتقديم $ PIDFILE أثناء عملية بدء، ولكن أن لا يعمل.
وهنا مخطوطتي:
#! /bin/sh
#
#
#
# Version: @(#)daemon 1.0
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="xxxxx"
NAME="xxxxx"
USER="root"
HOME="/home/root"
MAIN="/opt/MYAPP/lib/NodeManager.jar"
APP_JAVAHOME="/home/owner/jdk1.6.0_17"
DAEMON="$APP_JAVAHOME/bin/java -server -Djava.awt.headless=true -jar $MAIN"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $APP_JAVAHOME/bin/java || exit 0
# ---------------------------------------
# Function that starts the daemon/service
# ---------------------------------------
d_start()
{
su -p -s /bin/sh - $USER -c "$DAEMON &> /dev/null & echo $!" > $PIDFILE
}
# --------------------------------------
# Function that stops the daemon/service
# --------------------------------------
d_stop()
{
start-stop-daemon --stop --quiet --pidfile $PIDFILE
#/bin/ps -ef | grep java | grep -v grep | awk '{print $2}
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
المحلول
هل هناك أي سبب لا يمكنك استخدام start-stop-daemon
لبدء عملية - شيئا من هذا القبيل ينبغي أن يكون ما كنت تبحث عنه:
DAEMON="$APP_JAVAHOME/bin/java"
ARGS="-server -Djava.awt.headless=true -jar $MAIN"
start-stop-daemon --start --pidfile "$PIDFILE" --chuid "$USER" --background --make-pidfile --startas "$DAEMON" -- $ARGS
إذا كنت بحاجة إلى أي متغيرات البيئة مجموعة، ومجموعة منهم في البرنامج النصي بدء التشغيل وتصديرها.
لا تنتمي إلى StackOverflow