시작 시 스크립트 실행

시작 시 스크립트 실행

좋아, 데비안 컴퓨터에서 실행 중인 서비스(nagios)가 있고 컴퓨터를 다시 시작한 후에만 나타나는 매우 특정한 문제를 제외하고는 잘 작동합니다. 이 문제는 서비스를 수동으로 다시 시작하면 쉽게 해결할 수 있습니다. 문제 자체가 너무 구체적이고 혼란스러울 정도로 난해해서 실행할 시간이 없습니다(500개가 넘는 검사 중 하나가 오류를 반환하지만 nagios에서 실행할 때만).

차선책은 시작 시 서비스 자체를 다시 시작하도록 하여 매번 수동으로 수행할 필요가 없도록 하는 것입니다. 지금까지 나는 다음과 같은 방법으로 이를 달성하려고 노력했습니다.

/etc/rc.local에 "/etc/init.d/nagios restart"를 추가했습니다. 로그를 보면 작동했지만 문제가 해결되지 않았습니다(여전히 수동으로 수행해야 함).

nagios 시작 시간을 끝으로 이동합니다. (update-rc.d nagios 기본값 99 10)

rc.local로 돌아가서 수정합니다. 이번에는 상자 시작을 20초 동안 지연시키는 "sleep 20" 줄을 추가합니다.

제가 시도/볼 수 있는 다른 것이 있나요?

답변1

연기하려는 초기화 스크립트에 다음과 같은 주석 블록이 있는지 확인하십시오.

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

이 블록은 데비안에 설명된 대로LSBInit 스크립트Wiki는 nagios 스크립트가 실행되기 전에 다른 기능을 시작해야 한다고 init 하위 시스템에 알려줍니다.

그러면 당신이 해야 할 일은 Nagios init 스크립트를 다시 시작해야 하는 이유를 지적하는 것뿐입니다. 네트워크가 아직 작동하지 않았기 때문입니까? 웹 서버가 아직 시작 중이기 때문인가요? 아니면 nfs가 아직 동기화되지 않았나요?

매번 nagios를 다시 시작해야 하는 이유를 알아내야 하지만 이 접근 방식이 현재 상황에 가장 적합한 솔루션입니다.

답변2

재부팅을 수동으로 수행해야 하는 경우 로그인할 때 설정한 일부 변수에 따라 검사가 달라질 수 있습니다.

수동으로 실행해도 service nagios restart문제가 해결되는지 확인하거나 /etc/init.d/nagios restart.

# Required-Start:    $all

스크립트를 시작하기 전에 다른 모든 서비스가 시작되었는지 확인하는 방법입니다. 그런데 rc.local어차피 모든 서비스가 시작된 후에 실행되는 것 같아서 별 도움이 안 되는 것 같아요.

관련 정보