【问题标题】:fedora 13 init.d script, can't stopfedora 13 init.d 脚本,无法停止
【发布时间】:2011-04-01 08:48:32
【问题描述】:

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

#!/usr/bin/env bash
#
# chkconfig: 345 97 03
#
# 进程名:quotes-srv
#
#
# 源函数库

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

NAME=quotes-srv

开始() {
    echo -n $"开始 $NAME:"
    守护进程 +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 &
触摸 /var/lock/subsys/$NAME
}

停止() {
    echo -n $"停止 $NAME:"
    杀进程 $NAME
    回声
    rm -f /var/lock/subsys/$NAME
}

重新开始() {
    停止
    开始
}

案例“$1”在
  开始)
    开始
    ;;
  停止)
    停止
    ;;
  重新启动|强制重新加载|重新加载)
    重新开始
    ;;
  condrestart|尝试重启)
    [ -f /var/lock/subsys/$NAME ] && 重启
    ;;
  状态)
    状态 $NAME

    ;;
  *)
    echo $"用法:$0 {start|stop|status|restart|reload|force-reload|condrestart}"
    1号出口
经社理事会

出口 0

【问题讨论】:

标签: bash daemon redhat init.d


【解决方案1】:

killproc 将终止进程列表中与名称 $NAME 匹配的程序

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

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

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

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

【讨论】:

  • 谢谢,但问题是,如果我想获取 pid,我会在 RETVAl 变量中得到空字符串。守护进程 java ... RETVAL=$?
  • 我正在查找工具:daemontools。显然它是为 fedora 开发的:directory.fedoraproject.org/wiki/Howto:Daemontools。你必须玩一些选项。我一直在将它用于各种 java 服务器,效果非常好。
猜你喜欢
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
相关资源
最近更新 更多