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掉就可以了,有点暴力吧。。

相关内容

    暂无相关文章