Pages

Friday, 17 August 2012

Runlevel Scripts သို ့မဟုတ္ StartUp Scripts မ်ား

Solaris 10 မွာ အခု Default Runlevel သံုးထားတာက runlevel 3 ၿဖစ္တဲ့အတြက္ Startup ဖိုင္ ေတြကို /etc/rc3.d/ ေအာက္မွာထားေပးရပါမယ္။ Script ေတြကို Linux မွာလိုပဲ S အၾကီး နဲ ့စေပးၿပီး ဂဏန္းနဲ ့တြဲေပးထားပါတယ္။ ဥပမာ S98.mysql တို ့S99.openfire တို ့လိုမ်ိဳးပါ။  File name ကိုေတာ့ကိုယ့္စိတ္ၾကိဳက္ေပးထားလို ့ရပါတယ္၊ သတိၿပဳရမွာကေတာ့ S အၾကီးနဲ ့စၿပီး ဂဏန္းနဲ ့တြဲထားဖို ့ပါ။  ေနာက္ ကဂဏန္းေတြေပၚမူတည္ၿပီး OS က အစဥ္လိုက္ Execute လုပ္သြားမွာၿဖစ္ပါတယ္။ အခုပံုစံမွာဆို ရင္ MySQL ကို အရင္စၿပီး ေတာ့မွ Openfire ကိုစမွာၿဖစ္ပါတယ္။ 98 ကို အရင္စၿပီးမွ 99 ကိုစတယ္ဆိုတဲ့သေဘာပါ။

ဒီဟာကေတာ့ S99.openfire နမူနာပါ။

 #!/bin/sh  
 RUNIN=/opt/openfire  
 RUNAS=openfire  
 case "$1" in  
 'start')  
     echo "Starting OpenFire server..."  
     su $RUNAS -c 'cd $RUNIN && ./start-openfire.sh'  
         ;;  
 'stop')  
     echo "Stoping OpenFire server..."  
     su $RUNAS -c 'cd $RUNIN && ./stop-openfire.sh'  
         ;;  
 *)  
     echo "Usage: $0 { start | stop }"  
     exit 1  
        ;;  
        esac  
        exit 0  

တလိုင္းခ်င္း ၿပန္ရွင္းၿပရမယ္ဆိုရင္ #!/bin/sh ဆိုတာ Bourne Shell နဲ ့ဒီ Script ကို Execute လုပ္မယ္လို ့ေၿပာတာပါ။ ဒီေနရာမွာ Bash Shell နဲ ့လုပ္ခ်င္တယ္ဆိုရင္ #!/bin/bash လို ့ေၿပာင္းေပးလိုက္ရင္ရပါတယ္။

RUNIN=/opt/openfire ဆိုတာက RUNIN ဆိုတဲ့ variable ကိုေၾကၿငာတာပါ။ သူ ့ရဲ ့value က /opt/openfire ပါ။

RUNAS=openfire ဆိုတာက လည္း RUNAS ဆိုတဲ့ variable ကိုေၾကၿငာတာၿဖစ္ၿပီး သူ ့ရဲ ့့value ကေတာ့ openfire ဆိုတာၿဖစ္ပါတယ္။

case "$1" in ဆိုတာကေတာ့ ဒီေနရာမွာ $1 ရဲ ့value ကို ထည့္ၿပီးစဥ္းစားမွာၿဖစ္ပါတယ္။

'start') ဆိုတာ $1 ရဲ ့value ဟာ start ၿဖစ္ခဲ့ရင္ ဒီေနရာကေနစၿပီး ;; ဆိုတဲ့ေနရာအထိကို execute လုပ္မွာၿဖစ္ပါတယ္။

su $RUNAS -c  ဆိုတာ user ေၿပာင္းပါမယ္။ ဒီေနရာမွာ RUNAS ရဲ ့value က openfire ဆိုတဲ့အတြက္ openfire ဆိုတဲ့ user ေၿပာင္းၿပီး ေနာက္က ' xxxxx' ထဲမွာရိွတဲ့ command ကို execute ဆက္လုပ္ပါလိမ့္မယ္။ 'cd $RUNIN && ./start-openfire.sh' ဆိုေတာ့ RUNIN ရဲ ့value ၿဖစ္တဲ့  /opt/openfire ထဲကို ၀င္ၿပီး start-openfire.sh ဆို တဲ့ script ကို execute လုပ္မွာၿဖစ္ပါတယ္။
အားလံုးၿခံဳၿပီးေၿပာရမယ္ဆိုရင္ေတာ့ openfire ကို root အေနနဲ ့မ run ခ်င္လို ့openfire ဆိုတဲ့ user ကိုေၿပာင္းၿပီး run လိုက္တာပါပဲ။

ဒီလိုဆိုရင္ stop case ကိုလည္းသေဘာေပါက္မွာပါ။ ဒီအတိုင္းပါပဲ။ start-openfire.sh ေနရာမွာ stop-openfire.sh ဆိုတာေလးပဲေၿပာင္းသြားတာပါ။

*) ကေတာ့ $1 ေနရာမွာ start သို ့မဟုတ္ stop မဟုတ္ဘူးဆိုရင္ ဒီ case ထဲကို၀င္သြားပါၿပီ။ အဲဒီအခါက်ရင္ေတာ့ Usage ဟာ start သို ့မဟုတ္ stop နဲ ့တြဲသံုးရပါမယ္ ဆိုၿပီး print ထုတ္ေပးပါလိမ့္မယ္။


ဒီ script ကအေၿခခံ ေလးတစ္ခုပါပဲ။ ကိုယ္လိုခ်င္တဲ့ပံုစံကို case ေပါင္းစံုနဲ ့ေရးလို ့ရပါတယ္။


reboot သို ့မဟုတ္ halt command ေတြလုပ္တိုင္းဒီ script ကို execute လုပ္သြားမွာၿဖစ္ပါတယ္။ shutdown ဒါမွမဟုတ္ init command ေတြနဲ ့ သံုးတဲ့အခါမွာ အဆင္ေၿပဖို ့အတြက္ဆိုရင္ ေတာ့ /etc/rc0.d/ ေအာက္မွာ ဒီ script ကိုပဲ K99.openfire ဆိုတဲ့နာမည္နဲ ့ထားေပးရပါမယ္။

မ်ားေသာအားၿဖင့္ေတာ့ ဒီ script ေတြကို သူ ့ရဲ ့ Parent Directory ေအာက္မွာပဲထားေလ့ရိွၿပီး /etc/rc3.d/ တို ့ /etc/rc0.d/ တို ့ေအာက္ကို symbolic link အေနနဲ ့ပဲထားၾကပါတယ္။ ဒါမွ တခုခု ေၿပာင္းခ်င္တဲ့အခါ တိုင္း centralize ၿဖစ္ၿပီးအဆင္ေၿပမွာပါ။

No comments:

Post a Comment