RHELでJettyの初期化スクリプトを作成しています。 initライブラリ(/etc/rc.d/init.d/functions
)が提供するdaemon
関数を使用しようとしています。
私は この簡潔なドキュメント と オンラインの例 を見つけました(例として、システム上の他のinitスクリプトも調べています)。
デーモンを開始するには、オンラインからこのスニペットを見てください
daemon --user="$DAEMON_USER" --pidfile="$PIDFILE" "$DAEMON $DAEMON_ARGS &"
RETVAL=$?
pid=`ps -A | grep $NAME | cut -d" " -f2`
pid=`echo $pid | cut -d" " -f2`
if [ -n "$pid" ]; then
echo $pid > "$PIDFILE"
fi
$PID
を調べて、手動で$PIDFILE
に書き込む必要があるのはなぜですか。 daemon
関数の--pidfile
オプションのポイントは何なのだろうと思います。
あなたが持っていると思う質問に答えるには、--pidfile
を使用して、デーモンプロセスがすでに実行されているかどうかを確認します。 RHEL(および派生物)では、daemon
関数はpidfileを書き込みません。
プログラムがフォアグラウンドに留まっている場合は、コマンドに&
を追加して明示的にバックグラウンドに送信する必要があります。その後、pidをフェッチする必要があります。 daemon
を使用する場合、$!
は使用できません。