어떻게 신생 직업을 디버깅합니까?


9

나는 다음과 같은 직업을 가지고있다. /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

일을 시작할 때 sudo service collector start, 멈 춥니 다. 만약 내가 ctrl-c 실행하다 initctl list, 나는 이것을 본다 :

collector start/killed, process 616

나는 그 예를 볼 수 없다. twistd 데몬 (ps)이며, 제공 할 예정인 HTTP 서버가 존재하지 않습니다.

나는 '데몬을 기대하지 않고'한 줄짜리 bash 스크립트를 사용하여 script 연은 여전히 ​​작동하지 않습니다. 나는 내가 뭔가 잘못하고 있다고 생각한다. 뭐가 될수 있었는지?


답변이 없지만 비슷한 문제로 고민 중입니다. Upstart의 버그 일 수도 있습니다. bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 이 재가동 상태에서 벗어나 재부팅하는 방법을 알지 못합니다. 또한 나는 그것이 expect daemon 선.
harm

답변:


12

리디렉션 할 수 있습니다. stdoutstderr 를 사용하여 전체 셸의 script pragma (대신 exec )와 함께 exec >FILE 2>&1, 이렇게 :

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

그것은 당신에게 무슨 일이 일어나고 있는지에 대한 더 나은 통찰력을 줄 것입니다. 내 신생 스크립트에서 모든 종류의 문제를 잡는 데 유용하다는 것을 알았습니다. 당신 할 수 있었다 당신 명령을 파이프하십시오. stdout / stderr 직접적으로 쉘에서 발생하는 오류 (구문 오류와 같은 오류)는 놓치게됩니다.

한편, service 매달려있다. 심지어 스크립트를 치지도 않습니다.이 경우 아무 것도 도움이되지 않습니다.


타 노스, 이거 옳은 길에 나를 넣어. 결국 나는 출력을 logger, 그래서 나는 단지 꼬리 수 있었다. /var/log/syslog.
Cera

또한 conf 파일 자체의 오류는 dmesg. 위의 내용을 사용할 때 결과물을 얻지 못하고 나면 이것을 발견했습니다. 나는 chdir 지시문에 오타를 만들었습니다.
codingFoo

그 코드는 어디에 두어야합니까?
kev

2

또한 console log 여기에 정의 된대로 선언적입니다. http://upstart.ubuntu.com/cookbook/#console-log

나는 기본적으로 활성화되어 있는지 신생아에 대해 충분히 알지 못하지만 일자리를 기준으로 활성화 할 수 있습니다. 기본 출력은 다음과 같습니다. /var/log/upstart/<job>.log


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.