fedora 13 init.d脚本,无法停止

时间:2010-08-19 20:51:36

标签: bash daemon redhat init.d

我编写了init.d脚本,假设运行java CLI proccess 问题是,当我停止它时,我得到[失败]并且进程仍在运行 谢谢

#!/usr/bin/env bash
#
# chkconfig:    345 97 03
#
# processname:  quotes-srv
#
#
# source function library

. /etc/rc.d/init.d/functions

NAME=quotes-srv

start() {
    echo -n $"Starting $NAME: "
    daemon +19 java -Dlog4j.configuration="file:/opt/quotes/properties/log4j/log4j.properties"  -Dproperties_folder="/opt/quotes/properties/app/" -jar /opt/quotes/trade-0.0.1-SNAPSHOT-jar-with-dependencies.jar & 
touch /var/lock/subsys/$NAME
}

stop() {
    echo -n $"Stopping $NAME: "
    killproc $NAME
    echo
    rm -f /var/lock/subsys/$NAME
}

restart() {
    stop
    start
}

case "$1" in
  start)
    start
    ;;
  stop) 
    stop
    ;;
  restart|force-reload|reload)
    restart
    ;;
  condrestart|try-restart)
    [ -f /var/lock/subsys/$NAME ] && restart
    ;;
  status)
    status $NAME

    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    exit 1
esac

exit 0

1 个答案:

答案 0 :(得分:1)

killproc将终止进程列表中与名称$ NAME

匹配的程序

严格来说,这是你的情况 java

如果它是唯一的java进程,你可以将java放入$ NAME

如果你运行其他java服务,你必须找到另一种方法来阻止你的java进程,例如将PID放入/ var / lock / subsys / $ NAME文件中,然后使用pid终止进程。

至少在debian上有一个很好的工具可以帮助解决这个问题,但我不确定它是否存在  红帽。