フロントエンドプログラムのinit.dスクリプト

フロントエンドプログラムのinit.dスクリプト

フォアグラウンドで実行され、stdout / stderrに書き込まれるプログラム用のポータルinit.dスクリプト(デーモンオプションなし、pidfileオプションなし)を作成する必要があります。

プログラムはsyslogサービスにログインする必要があります。プログラムは、noneなどの非rootユーザーとして実行する必要があります。

init.dファイルは、DebianやRHELの基本システム(SLES 11など)で実行する必要があります。

RHELベースのプロセスなど、Debianシステムに他のプログラムをインストールすることはできません。

これは私の問題です。

  • daemonizeSLESには存在しません。
  • startproc背景オプションなし
  • start-stop-daemon背景オプションとユーザーオプションはありません。

ログsyslogをルーティングする方法は? >& /dev/logを使用する必要がありますか?または2>&1 |ロガー-tプログラミング

オンラインで見つけた多くの例は/etc/init.d/functions(SUSEには存在しません)依存しています/etc/rc.status/etc/rc.d/init.d/functions

これはSUSEでのみ動作するように見える現在のアプローチです。

#!/bin/bash
#
# node_exporter        This script starts and stops the node_exporter daemon
#
# chkconfig: - 85 15
# description: Node Exporter is a Prometheus exporter for hardware and OS metrics

### BEGIN INIT INFO
# Provides: node_exporter
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop node_exporter
# Description: Node Exporter is a Prometheus exporter for hardware and OS metrics
### END INIT INFO

NAME=node_exporter
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="--web.listen-address=:9100"
PIDFILE=/var/run/$NAME.pid
LOGFILE=/var/log/$NAME.log

. /lib/lsb/init-functions

start() {
    echo -n "Starting $NAME: "
    start_daemon $DAEMON $DAEMON_ARGS &
    echo $! > $PIDFILE
    echo "done."
}

stop() {
    echo -n "Stopping $NAME: "
    killproc -p $PIDFILE $DAEMON
    echo "done."
}

status() {
    if pidofproc -p $PIDFILE $DAEMON; then
        echo "$NAME not running."
    else
        echo "$NAME running."
    fi
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    status)
        status
    ;;
    restart)
        stop
        start
    ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
    ;;
esac

exit 0

Q:&init.dスクリプトを使用しても安全ですか? LSBのデフォルトはどうですか?どうやって使うの?私の考えでは、LSBに従うことはLinuxディストリビューションを通して安全です。


自動再起動などの機能が必要なので、既存のinit.dスクリプトの代わりに/etc/inittabを使用する必要がありますか?

関連情報