톰캣 시작 스크립트

톰캣 시작 스크립트

누군가 아래 코드가 무엇을 의미하는지 말해 줄 수 있습니까?

NAME=`basename $0`
unset ISBOOT
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
then
        NAME=${NAME:3}
        ISBOOT=1
fi

이것은 Tomcat 시작 스크립트에 있습니다. 이 줄은 정확히 무엇을 의미합니까?

답변1

실행 중인 스크립트($NAME)(경로 없음)의 파일 이름이 "S" 또는 "K"로 시작하는 경우:

  • $NAME의 처음 3자를 잘라냅니다.
  • $ISBOOT를 1로 설정

이것이 실제로 의미하는 바는 누구나 추측할 수 있습니다. 이러한 변수에 어떤 작업을 수행하는지 알아보려면 스크립트 자체를 검사해야 합니다.

스크립트는 아마도 /etc/rc?.d/ 아래의 init.d 스크립트이기 때문에 "S"와 "K"가 중요할 것 같습니다. 이 스크립트는 "S"로 시작하는 심볼릭 링크 이름을 사용하여 처리됩니다. 실행 수준 시작(예: 시작)에서 "K"는 실행 수준이 종료될 때(예: 종료) 스크립트가 시작됨을 의미합니다. S=시작, K=종료.

심볼릭 링크의 이름은 일반적으로 "S05scriptname" 및 "K10scriptname"으로 지정되므로 파일 이름의 처음 세 문자를 자릅니다.주문하다스크립트가 실행됩니다. 따라서 "S01foo"는 "S99bar"보다 먼저 실행됩니다.

따라서 가장 중요한 것은 sysv rc 스크립트 이름 지정 없이 스크립트 이름을 얻는 것입니다.

아마도 이름에 따라 다른 작업을 수행하는 스크립트이기 때문일 것입니다.

다시 한 번 스크립트를 확인하여 이름과 ISBOOT==1을 기반으로 수행되는 작업을 확인해야 합니다.

답변2

이 스크립트는 /etc/init.d에 복사한 다음 /etc/rc.d 디렉터리의 하위 폴더 중 하나에 소프트 링크할 수 있습니다. 일반적으로 두 번 연결됩니다. 한 번은 S링크 이름의 첫 글자로 " "를 사용하고 두 번째는 K링크 이름의 첫 글자를 " "로 사용합니다. 이름으로 시작하는 링크는 S시작 중에 실행되고, 이름으로 시작하는 링크는 K종료 중에 실행됩니다. 첫 번째 문자 뒤의 2자리 숫자는 모든 시작 또는 모든 종료 스크립트가 실행되는 순서를 결정합니다. S 링크와 K 링크가 모두 동일한 스크립트에 연결되는 것이 일반적입니다. 귀하가 요청하는 스크립트 부분은 기본적으로 시작 또는 종료 시간 스크립트로 실행되고 있는지 확인하는 것입니다. 또한 대화식으로 실행되어 그에 따라 작동할 수도 있습니다.

 NAME=`basename $0`

NAME이 줄은 스크립트(또는 이 경우 링크)의 이름을 가져와 변수 에 씁니다 .

unset ISBOOT

이 줄은 ISBOOT변수의 모든 값을 설정 해제합니다.

 if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]

NAME이 줄은 변수 값의 첫 글자가 S또는 인지 확인합니다 K.

 then
    NAME=${NAME:3}
    ISBOOT=1 
 fi

이것이 사실이라면 이름의 처음 3자( S또는 문자와 2자리)를 자르고 변수를 " " 값으로 설정합니다.KISBOOT1

관련 정보