새로운 CentOS 6에는 Upstart가 포함되어 있으며 init을 대체합니다. / etc / inittab 파일을 새로운 시작 형식으로 변환하려고합니다. 이 특정 서버에는 15 개 정도의 inittab 항목 만 있지만 다른 서버에는> 30이 있습니다. 우리는 주로 inittab과 upstart의 ‘Responn’부분을 원합니다. 그러나 나는 찾을 수있는 모든 시작 문서를 읽었으며 (이 문서는 우분투를 기반으로하고 이전 버전의 시작 버전을 기반으로합니다) 어디서도 얻지 못했습니다. 구성 파일을 만들 수 있습니다 (/etc/init/test.conf라고 함). 파일은 이것을 포함합니다 (주석, 익명)
start on runlevel [345]
stop on starting shutdown
respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username
내가 발행 initctl reload-configuration
하면 직업이 인정됩니다. 전화로 initctl start test
시작하면 작업이 시작됩니다.
그러나 재부팅시에는 작동하지 않으며 수동으로 만 작동합니다. 운이없이 start 명령을 다음과 같이 수정하려고했습니다.
start on started
start on (local-filesystems and net-device-up IFACE!=lo)
start on net-device-up IFACE=eth0
다른 예제에서 언급 한 다른 방법들도 약 12 가지가 있습니다. 아무도 스크립트를 시작하지 않는 것 같습니다. (이 폴더의 다른 모든 파일과 마찬가지로 test.conf는 루트가 소유하며 644)
눈에 띄게 뭔가 빠졌습니까?
답변
나는 미래에 문제가있는 사람들에게 매우 도움이되는 upstart 스크립트를 발견했다. 이것을 / etc / init /에 넣으십시오.
# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script
이 스크립트는 기본적으로 시작하거나 중지하는 모든 작업을 기록합니다. CentOS 6은 런레벨에 대해 아무것도 ‘방출’하지 않습니다. (내가 시도한 다른 일반적인 사건 중 일부도 아닙니다. ‘). 디버그 작업이 /tmp/log.file에서 작성하는 로그 파일을 보는 것이 매우 유용했습니다. 스크립트 시작을 다음에서 변경하여
start on runlevel [345]
에
start on started sshd
모든 작업이 올바르게 시작된 것 같습니다. 내가 찾은 모든 예제가 이전 구문을 사용했기 때문에 이것은 후면의 고통이었습니다.
답변
네크로 포스팅에 대해 죄송하지만 다음을 사용하여이 문제를 해결했습니다.
start on stopped rc RUNLEVEL=[345]
“stopped”는 오타가 아닙니다. rc는 런레벨에 들어가면 멈추는 것 같습니다.
답변
이것이 respawn 문제를 디버깅하기 위해 내가 한 일입니다 (CentOS 6, Upstart 0.6.5). 다른 터미널에서
sudo initctl log-priority debug
sudo tail -F /var/log/messages