내 임무는 시작 시 프로세스를 시작하는 것입니다(종료 전에 실행 중이었던 경우). 이를 달성하기 위해 /etc/init.d/halt.local
프로세스 상태를 파일에 저장하는 명령을 추가했습니다 .
에서는 /etc/inittab
파일을 읽고 기록된 상태에 따라 프로세스를 시작하는 명령을 추가했습니다. 그러나 이 과정은 아직 발생하지 않았습니다. 종료 시 상태가 올바르게 기록되고 /etc/inittab에 추가한 다른 명령이 올바르게 실행되지만 원하는 명령이 아닌 것을 볼 수 있습니다.
inittab에 추가된 것:
ec1:235:once:/bin/echo "Started..." > /tmp/pankaj3.txt
rly:235:once:/bin/su - user -c '[[ `head -1 /tmp/pankaj/.status` == STARTED ]] && { /opt/my_user/bin/ctrl.sh start ; }'
터미널에서 명령을 실행하면 정상적으로 작동합니다. 출력은 다음과 같습니다
SS-01:~ # /bin/su - user -c '[[ `head -1 /tmp/pankaj/.status` == STARTED ]] && { /opt/my_user/bin/ctrl.sh start ; }'
[07-10-2015] 10:33:00 ctrl.sh[18008]: Management Process started.
inittab 에 추가된 다른 라인을 실행합니다 ec1:235:once:/bin/echo "Started..." > /tmp/pankaj3.txt
.
내가 뭘 잘못하고 있는지 알아낼 수 있도록 도와주세요.
답변1
SUSE Linux ES 11은 레거시 System V init 시스템(sysvinit)을 사용하는 것 같습니다. Seuss 초기화 프로세스 |
너는 볼 수있어개인 초기화 테이블(5)문법 문서화에 사용됩니다.
첫째, inittab
리디렉션 및 복합 명령과 같은 셸 기능은 지원되지 않을 수 있으며 셸에서만 지원됩니다. 첫 번째 명령이 작동한다고 말했지만 이는 그 이유가 아님을 나타냅니다.
둘째, 기본적으로 su
실행되며 /bin/sh
지원되지 않을 수 있습니다 [[
.
셋째, 그 안의 파일은 /tmp
일반적으로 시작 중에 삭제되므로 /tmp/pankaj/.status
종료 중에 생성하면 재부팅 후에는 거의 존재하지 않을 것입니다. 파일이 존재하는지 확인하십시오.
어쨌든 별도의 init 스크립트를 만들고 예상되는 쉘을 라인으로 사용하여 (또는 무엇이든) #!
넣고 레벨 2, 3 및 5에서 실행해야 합니다 ./etc/init.d/pankaj
chkconfig
이것SUSE 관리 가이드의 초기화 스크립트 섹션시작하기 위한 몇 가지 팁이 제공됩니다.
마지막으로, 이전에 서비스가 실행 중이었다면 부팅 시 서비스를 다시 시작하고 싶다면 그렇게 하지 마세요. chkconfig
부팅 시 시작을 구성하기 위한 표준 도구입니다. 시스템의 다른 모든 서비스에서는 이를 사용합니다. 하나의 서비스가 다르게 동작하면 상황이 혼란스러울 뿐입니다.