5

Ubuntu 15.04 コンテナーで Stardog 4.0 を実行しており、正常に動作する jdk8 が開いています。トラップを使用して stardog を正常にシャットダウンしたいと考えています。

コンテナー内で stardog を実行して実行し続けるには、次のようにうまく動作します。

$SBIN/bin/stardog-admin server start && (tail -f /storage/stardog.log &) && while (pidof java > /dev/null); do sleep 1; done

以下がないと、コンテナは数秒間実行されて停止します

&& (tail -f /storage/stardog.log &) && while (pidof java > /dev/null); do sleep 1; done

ただし、これにより、コンテナー内に複数の PID が発生します。

root         1  0.0  0.0  18384  3236 ?        Ss   14:04   0:02 /bin/bash /stardog_binaries/startup.sh
root        45  0.1  4.9 4619052 406940 ?      Sl   14:04   0:10 java -Xms2g -Xmx2g -XX:MaxDirectMemorySize=4g -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UseParallelOldGC -XX:+UseCompressedOops -Djavax.xml.datatype.DatatypeFactory=org.apache.xerc
root        97  0.0  0.0   4412   740 ?        S    14:04   0:00 tail -f /storage/stardog.log
root     12108  0.2  0.0  18184  3100 ?        Ss   15:44   0:00 bash
root     12122  0.0  0.0   4376   784 ?        S    15:44   0:00 sleep 1

また、コンテナのシャットダウン時に stardog をシャットダウンするための次のトラップは機能しません。

trap 'kill -TERM $PID' TERM INT
$SBIN/bin/stardog-admin server start && (tail -f /storage/stardog.log &) && while (pidof java > /dev/null); do sleep 1; done
PID=$!
wait $PID
trap - TERM INT
wait $PID
EXIT_STATUS=$?

したがって、私の質問は、コンテナがシャットダウンしたときにスタードッグが正常に終了するように、 $SBIN/bin/stardog-admin サーバーの起動を適切にトラップするにはどうすればよいかということです。

よろしくコンテ

4

2 に答える 2