FreeBSD - .jarをデーモンとして実行すると、サービスXXステータスは「実行されていません」を返します。

FreeBSD - .jarをデーモンとして実行すると、サービスXXステータスは「実行されていません」を返します。

FreeBSD 11.0-RELEASE-p8でjarをデーモンとして実行したいと思います。これは私が持っているサービスファイルです。

!/bin/sh

## Service for the camp web site.

# PROVIDE: tabor-web
# REQUIRE: SERVERS mysql-server nginx

#
# Add the following line to /etc/rc.conf to enable camp web site:
# taborweb_enable (bool): Set to "NO" by default.
#           Set to "YES" to enable camp web site.
#

. /etc/rc.subr

name="taborweb"
rcvar=taborweb_enable
pidfile="/var/run/${name}.pid"
logfile="/var/log/${name}.log"
taborweb_chdir="/usr/local/tabor-web"

#command="/usr/local/bin/java" #no, try daemon

command="/usr/sbin/daemon"
start_precmd="${name}_prestart"
procname="java"

load_rc_config $name
: ${taborweb_enable:=no}

taborweb_prestart() {

    # set the daemon / java flags
    rc_flags="-f -p ${pidfile} /usr/local/bin/java -jar ./tabor-web.jar >> ${logfile} 2>&1 ${rc_flags}"

    touch $pidfile
}

taborweb_describe() {
    echo "Service for running a camp web site."
}


run_rc_command "$1"

デーモンの起動時に正しいPIDを使用してPIDファイルを生成しますが、実行しようとすると

service tabor-web status

私は答えを受け取る

taborweb is not running.

私が確認したとき

# ps -aux | grep java

実行していることがわかります(そしてネットワークサービスにアクセスできます)。

 root  2654   0.0  0.2   10428   2132  -  Is   17:12    0:00.00 daemon: /usr/local/bin/java[2655] (daemon)
 root  2655   0.0 17.1 1707364 172744  -  I    17:12    0:20.07 /usr/local/openjdk8-jre/bin/java -jar ./tabor-web.jar
 root  2943   0.0  0.0     404    316  0  R+   17:45    0:00.00 grep java

cat /var/run/taborweb.pid

プログラム

2655

これは間違いなく自動化されたビューでは悪いです。サイトが開いたとしてもダウンしているようです。良いニュースは、デーモンが期待どおりに実行されることです(デーモンを終了するとWebサービスが再起動されます)。

しかし、正しいサービス状態を表示するためにスクリプトから何を見逃していますか?

ベストアンサー1

はい、簡単な間違いを見つけました。サービスはJavaサービスのPIDファイルを探しています。ただし、常にデーモンのPIDファイルを見つける必要があります。

pidfile_child="/var/run/${name}.pid"
pidfile="/var/run/${name}_daemon.pid"

それから

rc_flags="-r -P ${pidfile} -p ${pidfile_child} /usr/local/bin/java -jar ./tabor-web.jar >> /var/log/taborweb.log 2>&1 ${rc_flags}"

これで期待どおりに動作します。

おすすめ記事