Upstart 오류를 진단하는 방법? 다음과 같습니다. start on runlevel [2345] stop on

다음과 같이 수동으로 시작하면 / etc / init에 Upstart conf 파일이 있습니다.

sudo initctl start myconf

sudo 명령없이 실행하면 사용자 권한으로 인한 error name = (unset) 오류가 발생하지만 Upstart가 바로 시작될 때 시스템 부팅시 작업이 초기화 될 때 문제가되지 않습니까? (모두 루트에 의해 실행되기 때문에).

스크립트 내용은 다음과 같습니다.

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

… 여기서 server_init.sh는 Python 스크립트 기반 서버를 실행합니다. 쉘에 로그인 한 직후에 스크립트 상태를 확인하면 중지 / 대기라고 표시됩니다. 또한 “net-device-up에서 시작”으로 conf 파일을 시도했지만 아무 것도 변경하지 않았습니다. Upstart 시스템 로그 또는 문제를 디버깅하는 데 도움이되는 유사한 것을 볼 수있는 방법이 있습니까?

감사



답변

시험:

/var/log/upstart/JOBNAME.log

디버깅하는 동안 작업으로 변환하는 것을 고려할 수 있습니다.

공간 시작에서 시작

직무

exec /spatial/server_init.sh

그런 다음 콘솔에서 :

initctl은 공간 시작을 방출
initctl 상태 공간 시작

답변

좋아, 한 가지 방법을 찾았지만 Upstart 자체가 아니라 스크립트가 실행중인 프로그램에서 오류가 발생하는 경우 (그리고 해당 프로그램이 오류 메시지를 반환하는 경우)에만 작동하지만이 경우에는 내가 필요한 것입니다. 내가 한 일은 프로그램 출력을 다음과 같은 로그 파일로 리디렉션하는 것입니다.

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

내가 찾은 다른 사람에 관해서는 Upstart verbosity를 증가시킬 수 있으므로 필요하다면 거기에서 시작할 것입니다.


답변

  1. upstart 디렉토리가 있는지 확인하십시오. / var / log / upstart (없는 경우 디렉토리를 작성하십시오)
  2. initctl 버전 또는 apt-cache policy upstart로 시동 버전을 확인하십시오.

    v1.4 이전의 모든 버전의 Upstart에서 console의 기본값은 console none 입니다. Upstart 1.4부터 기본값은 console log 입니다.

  3. 스크립트 단계 이전에 시작시 콘솔 로그 를 추가하십시오.
  4. 귀하의 로그는 /var/log/upstart/”upstart-JOBNAME”.log에 있습니다.

예 :

콘솔 로그

스크립트

exec /spatial/server_init.sh

엔드 스크립트

콘솔 로그 -표준 입력을 / dev / null에 연결합니다. 표준 출력 및 표준 오류는 의사 터미널의 한쪽 끝에 연결되어 작업 출력이 시스템 작업의 경우 / var / log / upstart / 디렉토리 및 $ XDG_CACHE_HOME / upstart / (또는 $ HOME /)의 파일에 자동으로 기록됩니다. 세션 작업에 대해 cache / upstart / $ XDG_CACHE_HOME이 설정되지 않은 경우).

콘솔 없음 -작업의 표준 입력, 표준 출력 및 표준 오류 파일 설명자를 / dev / null에 연결합니다.

콘솔에 대한 자세한 내용은 아래 링크를 참조하십시오.

http://upstart.ubuntu.com/cookbook/#console-log