fedora 13 init.d脚本,不能停止
我写了init.d脚本,假设运行java CLI proccess。
问题是,当我停止它,我得到[失败],并且进程仍在运行。
感谢fedora 13 init.d脚本,不能停止
#!/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
killproc将终止在进程列表中的程序相匹配的名称$ NAME
严格地说,这是你的情况的Java。
如果这是唯一的java程序,你可以去把java在$ NAME
如果您运行的其他Java服务,你必须找到另一种方式来阻止你的java程序,例如把PID放在/ var/lock/subsys/$ NAME文件中,然后用pid杀死进程。
至少在Debian中有一个很好的工具可以帮助这个,但我不确定它是否存在为 redhat。
谢谢,但是, 问题是,如果我想获得PID,我得到RETVAl变量中的空字符串。 守护进程java ... RETVAL = $? – fatnjazzy 2010-08-19 21:21:49
我正在查找工具:daemontools。显然它是为Fedora开发的:http://directory.fedoraproject.org/wiki/Howto:Daemontools。你必须玩这个选项。我一直在使用这个为各种各样的Java服务器,这工作真的很好。 – 2010-08-19 21:35:09
你可能会有更好的运气在http://www.serverfault.com/ – mjschultz 2010-08-19 20:55:42