시스템 부팅 시 내 시작 서비스가 시작되지 않는 이유는 무엇입니까?

시스템 부팅 시 내 시작 서비스가 시작되지 않는 이유는 무엇입니까?

다음에서이 질문, 나는 간단한 시작 서비스를 작성했습니다(/etc/init/pms.conf) 헤드리스 Ubuntu Server 11.04 상자의 경우 다음과 같습니다.

start on filesystem and net-device-up IFACE=eth0
stop on runlevel [016]
respawn

exec /home/administrator/pms-current/PMS.sh

명령줄에서 이 서비스를 마음대로 시작(또는 중지)할 수 있습니다.

service pms start

그리고 실제로 실행되고 있음을 알 수 있습니다.

그러나 처음 컴퓨터를 부팅하면 서비스가 시작되지 않습니다. 상자에 SSH를 연결하고 서비스 상태를 확인하면 다음과 같은 결과가 나타납니다.

$ service pms status
pms stop/waiting

내 질문은 왜 이런 일이 발생하는 것입니까? 부팅 시 서비스가 시작되지 않는 이유는 무엇입니까?

업데이트 1: 내 서비스가 시작되었다가 종료되고 있는지 아니면 전혀 시작되지 않는지 확실하지 않아 PMS.sh에 다음을 추가했습니다.

echo "STARTED" > $STARTLOG

이것은 분명히 나에게무엇찾으려고. 직접 서비스를 시작한 후 확인하여 테스트했습니다.시작.로그. 그런 다음 삭제했습니다.시작.로그재부팅했습니다. 다시 시작한 후에는 없었으므로 upstart가 확실히 내 서비스를 시작하지 않는 것 같습니다. 나는 그것이 프로세스의 초기 시점에 죽을 수도 있다고 생각하지만, 모든 단순함을 고려할 때 그럴 가능성은 거의 없어 보입니다.

업데이트 2: 방금 업스타트 업그레이드가 포함된 11.10으로 업그레이드했는데 이 문제가 계속 발생합니다.

업데이트 3: 요청대로 로 부팅했습니다 --debug. cat의 출력이 /var/log/syslog | grep init너무 길어서 질문에 넣을 수 없지만 볼 수 있습니다.여기.

업데이트 4: 로그가 더 많습니다. 이번에는 upstart conf가 상단에 포함됩니다.1 실행그리고2를 실행.

답변1

예를 들어 시작 전/시작 후 항목을 사용하여 작업의 자세한 정도를 높이는 것이 좋습니다.

pre-start script
  logger "pre-start for myprog"
end script

post-start script
  logger "post-start for myprog"
end script

# and for PMS itself:
script
  logger "just before executing PMS"
  exec /home/administrator/pms-current/PMS.sh
end script

자세한 내용은http://upstart.ubuntu.com/cookbook/

또한 살펴보십시오.http://upstart.ubuntu.com/wiki/Debugging

답변2

아마도 여기서 일어나는 일은 네트워크 어댑터가 나타나기 전에, 그리고 아마도 루프백 어댑터(lo)가 나타나기 전에 pms가 시작된다는 것입니다. PS3 미디어 서버에 대해 이야기하고 있다고 가정하면 이는 네트워크로 연결된 서비스이므로 사용 가능한 인터페이스 없이 시작하는 것을 좋아하지 않을 것입니다.

기준 시작을 다음과 같이 변경해 보세요.

start on filesystem and net-device-up IFACE!=lo

즉, "실제" 네트워크 인터페이스가 시작된 후에 시작합니다. 그러나 이는 이상적이지 않을 수 있습니다. eth0이 다음 인터페이스인 경우 PMS가 시작되지만 실제로는 PMS가 wlan0을 사용하기를 원하지만 그렇지 않습니다. 서비스가 시작되지만 수신하려는 인터페이스를 선택하지 못했을 수도 있습니다. 스트리밍할 인터페이스를 알고 있고 변경되지 않을 것이라고 가정하면 이를 작업에 하드코딩합니다. 예:

start on filesystem and net-device-up IFACE=wlan0

Oneiric(11.10)에서는 이벤트를 사용하여 static-network-up정적으로 구성된 모든 장치를 기다릴 수 있습니다. 인터페이스를 하드코딩하지 않고도 네트워크 종속 작업을 작성할 수 있다는 점이 좋습니다. [참고: "정적으로 구성된 모든 장치"는 /etc/network/interfacesNetworkManager 대신 사용하는 것을 의미합니다 . 고정 IP vs. DHCP라는 의미에서 정적인 의미는 아닙니다.]

답변3

syslog를 조사한 결과 pms 프로세스는 오류 없이 시작되지만 잠시 후 목표가 시작에서 중지로 변경되어 종료됩니다.

이것은 약간 이상합니다. 왜냐하면 resawn 절을 추가했기 때문에 중지된 후 다시 시작을 시도해야 하지만 결코 그렇지 않습니다. 그래서 리스폰 조항을 삭제한 것 같아요.

pms 서비스 시작 및 중지 사이에 2개의 서비스만 ufw 및 네트워크 인터페이스(eth0)가 시작되고 1개의 서비스는 udev-fallback-graphics에서 시작됩니다.

pms 처리가 병렬로 시작되는 것 같습니다. 불행히도 신생 문서는 start on ...바닐라 start on starting ...start on started ....

시작 스탠자를 다음으로 변경해보십시오.

start on started networking

아니면 너무

start on net-device-up IFACE=eth0

net-device-up 이벤트는 훨씬 늦게 발생하지만 pms는 그보다 먼저 시작되므로 로그 출력이 약간 이상합니다.

이렇게 하면 프로세스가 한 번만 시작됩니다.모두네트워킹 설정이 완료되었습니다. 즉, 작업이 시작되었을 뿐만 아니라 완료되었습니다.

또한 로그 출력을 완전히 신뢰하지 마십시오. 부팅 프로세스 초기에 파일에 대한 로그 출력이 항상 작동하는 것은 아닙니다. 답변 보기디버깅 시작

답변4

저도 같은 문제가 있었는데 결국 해결했어요간단히와 함께:

start on runlevel [2345]

net-device-up아무 started networking것도 없이

이것은 완전한 시작 스크립트이며 완벽하게 작동합니다.

# MyApp

description     "MyApp"
author          "me"

start on runlevel [2345]
stop on runlevel [016]

respawn

exec /usr/bin/myapp 2>> /var/logs/myapp.log

관련 정보