좋아, 데비안 컴퓨터에서 실행 중인 서비스(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
어차피 모든 서비스가 시작된 후에 실행되는 것 같아서 별 도움이 안 되는 것 같아요.