Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用启动-停止守护进程停止Linux中的java服务_Java_Linux_Service - Fatal编程技术网

无法使用启动-停止守护进程停止Linux中的java服务

无法使用启动-停止守护进程停止Linux中的java服务,java,linux,service,Java,Linux,Service,我有一个在Ubuntu Linux上作为java守护进程运行的进程 我无法使用下面d_stop()中的start-stop-daemon命令停止它 进程id应该在启动进程期间写入文件$PIDFILE,但是 这是行不通的 这是我的剧本: #! /bin/sh # # # # Version: @(#)daemon 1.0 # set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="

我有一个在Ubuntu Linux上作为java守护进程运行的进程

我无法使用下面d_stop()中的start-stop-daemon命令停止它

进程id应该在启动进程期间写入文件$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 "."

是否有任何原因使您无法使用
启动-停止守护进程
来启动该进程-类似这样的东西应该是您正在寻找的:

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

如果需要设置任何环境变量,请在启动脚本中设置并导出它们。

这可以工作,但PID文件中仍然没有PID?停止这项工作行吗?这里有个线索。PID文件具有正在运行的进程的一些输出。我想把它重定向到其他地方吗?啊,是的,我已经编辑了我的答案,将
--make pidfile
添加到选项中。