java - 无法使用 start-stop-daemon 在 Linux 中停止 java 服务

原文 标签 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="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

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

关于java - 无法使用 start-stop-daemon 在 Linux 中停止 java 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1801081/

相关文章:

python - Windows 和 Linux 中的 Hashlib

linux - 在Linux服务器中运行Excel宏

java - java(JDBC)中如何在没有任何框架的情况下处理事务?

spring - service-dao 模式的最佳实践是什么?

java - 带有用户输入时间的闹钟倒数计时器Java

java - 扩展集合时如何在“this”上使用Iterable?

java - 卡在 "Concurrency In Practise"文章没有 list 2.1。无状态 Servlet

java - 两者有什么区别?

java - 是否有指南可以在跨操作系统的Eclipse中调试Java进程?

android - 多次启动服务会嵌套 onStartCommand() 中的调用吗?