HP-UX

rc2.d script 실행시 fail 문제

 
박기태
조언자

rc2.d script 실행시 fail 문제

/sbin/rc2.d 에 스크립트를 추가한후, reboot 했을때

console 창에 나오는 메시지 입니다.



Configure HP Internal RAID interfaces ........... N/A

Starting SAMBA Server ........................... N/A

Configure HP Fibre Channel Tachyon TL/TS Mass Storage interfaces ...... OK

VVR - Starting Communication Daemon ............. N/A

VVR - Starting VRAS daemon ...................... N/A

VVR - Starting VxRSync daemon ................... N/A

Starting VERITAS Enterprise Administrator Service (vxsvc) ............... OK



Usage: /sbin/rc2.d/S999xxx1 { start | stop } .... FAIL *

Usage: /sbin/rc2.d/S999xxx2 { start | stop } .... FAIL *



Start NFS server subsystem ...................... OK

Start X print server(s) ......................... N/A



위에서 FAIL 이 왜 나오는지 알고 싶습니다.

rc2.d 에 스크립트를 추가할때 다른 추가 작업이 필요한건지...



부팅이 된 후, 스크립트를 다시 수동으로 실행을 하면

정상적으로 구동됩니다.







아래는 /etc/rc.log 중 위의 FAIL 과 관련된 부분입니다.



Usage: /sbin/rc2.d/S999xxx1 { start | stop }

Output from "/sbin/rc2.d/S999xxx1 start":

----------------------------

Starting xxx1 Daemon ...

/sbin/rc2.d/S999xxx1: grep: 없습니다.

/sbin/rc2.d/S999xxx1: grep: 없습니다.

/sbin/rc2.d/S999xxx1: test: 이 명령과 함께 매개변수를 지정하십시오.

"/sbin/rc2.d/S999xxx1 start" FAILED





Usage: /sbin/rc2.d/S999xxx2 { start | stop }

Output from "/sbin/rc2.d/S999xxx2 start":

----------------------------

Starting xxx2 Local Manager ...

/sbin/rc2.d/S999xxx2: grep: 없습니다.

/sbin/rc2.d/S999xxx2: grep: 없습니다.

/sbin/rc2.d/S999xxx2: test: 이 명령과 함께 매개변수를 지정하십시오.

"/sbin/rc2.d/S999xxx2 start" FAILED
3 응답 3
김병수
본과생

rc2.d script 실행시 fail 문제

수동으로 작업을 했을경우 잘되었다면



우선 /sbin/rc2.d/S999xxx1과 /sbin/rc2.d/S999xx2가 /sbin/init.d/밑에 file과 가급적이면 link를 시켜주시기 바랍니다.



물론 permission또한 실행권한을 가져햐 합니다.



위의 내용은 check하여 보셨을것 같구요..



error 내용이 grep 이 없다고 나온것으로 봐서는 grep에 대한 full path를 사용해 보시기 바랍니다.



에를 들자면 스크립트내용중에 grep앞에 path를 넣어보심이..

grep path는 /usr/bin/grep 하여 보시구요.

ps -ef| /usr/pin/grep 이런식으로..



또, test 명령시에도 관련매개변수를 확인하여 보심이 ....

고광태
중학생

rc2.d script 실행시 fail 문제

스크립트가 정상적으로 잘만들어 졋는지 한번 더 확인해 보심이..



참고하세요..

# cp /sbin/init.d/template /sbin/init.d/sample_db

# vi /sbin/init.d/sample_db



'start_msg')

- echo "Starting the subsystem"을 찾아서 echo "Starting the SAMPLE_DB subsystem" 등으로 고칩니다.



'stop_msg')



- echo "Stoping the subsystem"을 찾아서echo "Stoping the SAMPLE_DB subsystem" 등으로 고칩니다.

'start')



- if ; 을 if 등으로 고치십시요.





# Execute the commands to start your subsystem을 찾아서 다음 라인의 :(colon)대신에 subsystem을 startup하는 command를 넣어주십시오.

/opt/databas/sample_db_start

'stop')





- if ; 을 if 등으로 고치십시요.

# Execute the commands to stop your subsystem을 찾아서 다음 라인의 :(colon) 대신에 subsystem을 stop하는 command를 넣어주십시오.





pid=`ps -ef | awk '$NF~/sample_db/ {print $2}'`

if ; then

if kill "$pid"; then"$pid"; then

echo "sample_db stopped"

else

set_return

echo "Unable to stop sample_db"

fi

fi







# vi /etc/rc.config.d/sample_db





SAMPLE_DB=1 을 넣으시고, comment 문장을 적당히 넣어주십시오.

*참고 : configuration file은 /sbin/init.d에 대응되는 실행 script와 같은 이름으로 주십시요.variable을 1또는 0으로 변경함으로써 subsystem을 enable 또는 disable로 조정할 수 있습니다.





# ln -s /sbin/init.d/sample_db /sbin/rc2.d/S900sample_db (link시에 다른 실행 script와 conflict되지 않도록 하며, 지금 만든 application 전에 다른 subsystem이 start되어야 한다면, S number를 잘 골라서 sequence를 주어야 합니다 . kill script도 마찬가지입니다)





# ln -s /sbin/init.d/sample_db /sbin/rc1.d/K100sample_db

- - -- --------

-

(1:run-level K:sequence type,kill script 100: sequence number sample_db: script name)

* 참고

run level definition sequence directory

-----------------------------------------------

0 halted run level /sbin/rc0.d

S single user state /sbin/rc0.d

1 boot-time system configuration /sbin/rc1.d

2 muti-uesr state /sbin/rc2.d

3 remote file access (default) /sbin/rc3.d

4 HP-VUE /sbin/rc4.d

5,6 not currently used N/A







+ 각 sequence directory는 run level이 바뀔때 마다 어느 subsystem이 시작되고 정지될 것인 지를 나타냅니다. 수행레벨 0은 /sbin/rc가 /sbin/rc0.d에 있는 모든 kill script를 실행시키고 정지하게 됩니다. 이 script들은 시스템 관리스크립트로 시스템을 종료시키도록 준비합니다.

수행레벨 S에서는 /sbin/rc0.d르 모든 kill script 실행 시키고 single user mode로 남게됩니다. 수행레벨 1에서는 /etc/rc.config.d/*의 필요한 환경 구성 변수를 맞추기 위해 사용되고 새로 설치한 s/w에 대해서는 호스트에 관련된 configuration을 수행하기 위해 사용 됩니다.수행레벨 2에서는 시스템을 다중사용자 상태로 만들기 위해 사용되며 수행 레벨 3은 init의 기본 상태로서 NFS 서버를 동작시킵니다.



+ /sbin/rc는 init에 의해 불리워져서 다른 수행레벨로 바뀔때 실행 스크립트를 실행시키고, /sbin/init.d밑에 있는 script의 start_msg,stop_msg 출력을 /etc/rc.log에 저장합니다. 특정 수행레벨로 올라갈때는 S로 시작하는 모든 스크립트는 서브시스템을 실행시키기 위해 argument와 함께 실행되며, 수행 레벨이 내려갈때는 K로 시작되는 모든 스크립트가 서브 시스템을 중지시키기위해 실행됩니다.





+ 서브 시스템들은 실행된 것과는 반대 순서로 중지하게되므로 시작스크립트는 /sbin/rcN.d에 위치하고 중지 스크립트는 /sbin/rcN-1.d에 위치해야하며 같은 sequence number를 같지는 않습니다. 같은 실행 레벨에서는 알파벳순서,sequence number 순으로 실행됩니다.







참고) 실행스크립트 예제





#!/sbin/sh

#

# @(#) $Revision: 72.11 $

#

# NOTE: This script is not configurable! Any changes made to this

# script will be overwritten when you upgrade to the next

# release of HP-UX.

#

# WARNING: Changing this script in any way may lead to a system that

# is unbootable. Do not modify this script.

#

# Start cron

PATH=/usr/sbin:/usr/bin:/sbin

export PATH

rval=0

set_return() {

x=$?

if ; then

echo "EXIT CODE: $x"

rval=1 # script FAILed

fi

}

case $1 in

'start_msg')

echo "Starting the SAMPLE_DB subsystem"

;;

'stop_msg')

echo "Stoping the SAMPLE_DB subsystem"

;;

'start')

if ; then

. /etc/rc.config

else

echo "ERROR: /etc/rc.config defaults file MISSING"

fi

if ; then

/opt/database/sample_db_start & echo sampledb_started

set_return

else

rval=2

fi

;;

'stop')

pid=`ps -ef | awk '$NF~/sample_db/ {print $2}'`

if ; then

if kill "$pid"; then

echo "sample_db stopped"

else

set_return

echo "Unable to stop sample_db"

fi

fi

;;

*)

echo "usage: $0 {start|stop}"

rval=1

;;

esac

exit $rval

Jongmin, Lee
유치원

rc2.d script 실행시 fail 문제

안녕하세요~

이종민입니다.



grep: 없습니다..라는 에러메시지로 추정해봤을때,

아마 path가 안잡혀서 그런 것 같습니다.



절대 경로를 지정해주시거나, 스크립트 처음에 path를 지정해보시기 바랍니다.



그럼~