歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux下將普通軟件啟動方式做成service方式

Linux下將普通軟件啟動方式做成service方式

以這次安裝的openmeeting為例:
  www.2cto.com  
 目錄結構:/root/openmeeting_dirnary/admin.bat
 admin.sh 
 ...
 red5.sh
 red5-shutdown.bat
 red5-shutdown.sh
 ...
 如果要啟動它我們普通的方式都是進入這個/root/openmeeting_dirnary/這個目錄,
 執行:./red5.sh & (當然要有執行權限)
 現在我們要做的工作就是:  www.2cto.com  
 將它的啟動、關閉等方式做成service ..... stop|start|restart|status|restart的方式
 cd /etc/init.d/
 touch openmeetingd (我們自己起的名字,仿照一般的服務,比如httpd....)
 貼出該文件的代碼,然後再細細解釋: 
#start Red5 demon
start(){ #這一步沒什麼好說的,就是進入到目錄,改權限,啟動...
 echo "starting red5 ..."
 cd /root/openmeeting_binary/
 chmod 755 red5.sh
 ./red5.sh &
 echo "Red5 started successful ..."
}

#stop red5 demon
stop(){ # 在下面詳細講解 
 pid=`ps -ef|grep "java"|grep -v "grep"|awk '{print $2}'` 
 if [ "$pid" == "" ];then
 echo "No red5 pid alive ..."
 else
 echo "now , kill pid $pid ..."
 kill $pid
 echo "Red5 stopped successful ..."
 fi
}

#show the status of red5
status(){ #通過判斷進程是否啟動著,即pid是否存在為依據來判斷狀態
 pid=`ps -ef | grep "java" | grep -v "grep" | awk '{print $2}'`
 if [ "$pid" == "" ];then
 echo "red5 is stopped ..."
 else
 echo "red5 is running ..."
 fi
}

#restart red5 demo
restart(){ # 調用前面的函數,很簡單吧...
 stop
 start
}

#execute by input command # 根據輸入的命令來判斷應該執行什麼
case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 status)
 status
 ;;
 restart)
 restart
 ;;
 *)
 echo $"Usage: $0 {start|stop|status|restart}"
 exit 1
esac 接下來我們重點講解stop的時候執行的腳本:
 pid = `ps -ef | grep "java" | grep -v "grep" | awk '{print $2}'` 來獲得進程的pid
 執行ps -ef | grep "java" 的效果圖:


這句主要是找出red5的運行進程,這裡是java,我們還可以看到第二個進程即我們剛剛執行的 grep java , 
為了只獲得上面那一行的進行,即執行:
 ps -ef | grep "java" | grep -v "grep"

 
 到這裡可以看到,只剩下一行了,就是我們想要的red5生存的標識
 grep 的這個 -v 的參數的意思是:顯示不包含文本的所有行,就把剛才的第二行去掉了。
 
 執行:ps -ef | grep "java" | grep -v "grep" | awk '{print $2}' 
 

 
 可以看到現在只剩下一個數字了,即pid,就是我們想要得到的最終值。
 好了,接下來直接kill掉就可以了,有點暴力吧。。
Copyright © Linux教程網 All Rights Reserved