프론트엔드 프로그램의 init.d 스크립트

프론트엔드 프로그램의 init.d 스크립트

포그라운드에서 실행되고 stdout/stderr에 기록되는 프로그램에 대한 포털 init.d 스크립트(데몬 옵션 없음, pidfile 옵션 없음)를 작성해야 합니다.

프로그램은 syslog 서비스에 로그인해야 합니다. 프로그램은 none과 같은 루트가 아닌 사용자로 실행되어야 합니다.

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

질문: &init.d 스크립트를 사용해도 안전합니까? LSB 기본값은 어떻습니까? 어떻게 사용하나요? 제 생각에는 LSB를 따르는 것이 Linux 배포판 전반에 걸쳐 안전할 것입니다.


자동 재시작과 같은 기능이 필요하므로 기존 init.d 스크립트 대신 /etc/inittab을 사용해야 합니까?

관련 정보