公司接了一个第三方的系统,基于linux写的几个程序,一共有9个部件,第三方没有给脚本,每次启动或停止都得一个一个手工去停止或修改.......,这里稍微鄙视下。

没办法,求人还不如自己动手写,

需求简单:就是将这9个部件同时管理,可以启动与停止,可以查看当前是否运行。

脚本如下

#!/bin/bash
. /etc/init.d/functions devsNum=`ps -eo comm,pid|awk '/sdk_devs/'|wc -l`
gatewayNum=`ps -eo comm,pid|awk '/sdk_gateway/'|wc -l`
live_serverNum=`ps -eo comm,pid|awk '/sdk_live/'|wc -l`
nvr_Num=`ps -eo comm,pid|awk '/sdk_nvr/'|wc -l`
oss_Num=`ps -eo comm,pid|awk '/sdk_oss/'|wc -l`
portalNum=`ps -eo comm,pid|awk '/portal_ds6/'|wc -l`
rec_serverNum=`ps -eo comm,pid|awk '/sdk_rec/'|wc -l`
xhome_ssNum=`ps -eo comm,pid|awk '/xhome_ss/'|wc -l` #echo $devsNum $gatewayNum $live_serverNum $nvr_Num $oss_Num $portalNum $rec_serverNum $xhome_ssNu status()
{
output='printf "%-11s is Running and PID is %6s\n"'
[ $devsNum -eq ] && printf "%-11s is Running and PID is %6s\n" "dev" "`ps -eo comm,pid|awk '/sdk_devs/{print $2}'`" || echo "dev is not Run"
[ $gatewayNum -eq ] && printf "%-11s is Running and PID is %6s\n" "gateway" "`ps -eo comm,pid|awk '/sdk_gateway/{print $2}'`" || echo "gateway is not Run"
[ $live_serverNum -eq ] && printf "%-11s is Running and PID is %6s\n" "live_server" "`ps -eo comm,pid|awk '/sdk_live/{print $2}'`" || echo "live_server is not Run"
[ $nvr_Num -eq ] && printf "%-11s is Running and PID is %6s\n" "nvr" "`ps -eo comm,pid|awk '/sdk_nvr/{print $2}'`" || echo "Nvr is not Run"
[ $oss_Num -eq ] && printf "%-11s is Running and PID is %6s\n" "oss" "`ps -eo comm,pid|awk '/sdk_oss/{print $2}'`" || echo "oss is not Run"
[ $portalNum -eq ] && printf "%-11s is Running and PID is %6s\n" "portal" "`ps -eo comm,pid|awk '/portal_ds6$?/{print $2}'`" || echo "portal is not Run"
[ $rec_serverNum -eq ] && printf "%-11s is Running and PID is %6s\n" "rec_server" "`ps -eo comm,pid|awk '/sdk_rec/{print $2}'`" || echo "rec_server is not Run"
[ $xhome_ssNum -eq ] && printf "%-11s is Running and PID is %6s\n" "ss" "`ps -eo comm,pid|awk '/xhome_ss/{print $2}'`" || echo "ss is not Run"
[ `ps -e|awk '/report/'|wc -l` -eq ] && printf "%-11s is Running and PID is %6s\n" "report" "`ps -e|awk '/report/{printf("%s ",$1)}'`" || echo "report is not Run"
} start()
{
#start devs
if [ $devsNum -eq ];then
echo "dev Server is already Running"
else
cd devs
chmod +x sdk_devs_351
./sdk_devs_351 --Ice.Config=xhome_webdev.conf -s -d >& /dev/null &
[ $? -eq ] && action "Starting dev Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start gateway
if [ $gatewayNum -eq ];then
echo "gateway Server is already Running"
else
cd gateway
chmod +x sdk_gateway_ice351
./sdk_gateway_ice351 -s -d -alarmvideo >& /dev/null &
[ $? -eq ] && action "Starting gateway Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #Start live_server
if [ $live_serverNum -eq ];then
echo "live_Server is already Running "
else
cd live_server
chmod +x sdk_live_server_ice351
./sdk_live_server_ice351 -s -d >& /dev/null &
[ $? -eq ] && action "Starting live_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #Start nvr Server
if [ $nvr_Num -eq ];then
echo "nvr_Server is already Running "
else
cd nvr
chmod +x sdk_nvr_write
./sdk_nvr_write -s -d >& /dev/null &
[ $? -eq ] && action "Starting nvr_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start oss server
if [ $oss_Num -eq ];then
echo "oss_Server is already Running "
else
cd oss_server/
chmod +x sdk_oss_server_ice351
./sdk_oss_server_ice351 --Ice.Config=oss_server.conf -s -d >& /dev/null &
[ $? -eq ] && action "Starting oss_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start portal
if [ $portalNum -eq ];then
echo "portal_Server is already Running "
else
cd portal/
chmod +x portal_ds60_ice351
./portal_ds60_ice351 -s -d& -s -d >& /dev/null &
[ $? -eq ] && action "Starting portal Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start rec_server
if [ $rec_serverNum -eq ];then
echo "rec_Server is already Running "
else
cd rec_server/
chmod +x sdk_rec_server_ice351
./sdk_rec_server_ice351 any 112.74.75.20 >& /dev/null &
[ $? -eq ] && action "Starting rec_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start ss_server
if [ $xhome_ssNum -eq ];then
echo "ss_server is already Running "
else
cd ss
chmod +x xhome_ss
./xhome_ss -s -d >& /dev/null &
[ $? -eq ] && action "Starting ss_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
cd ..
fi #start report
./report } stop()
{
#stop dev
killall - sdk_devs_351 >& /dev/null
[ $? -eq ] && action "stop dev" /bin/true || action "stop dev" /bin/false #stop gateway
killall - sdk_gateway_ice351 &> /dev/null
[ $? -eq ] && action "stop gateway" /bin/true || action "stop gateway" /bin/false #stop live_server
killall - sdk_live_server_ice351 &> /dev/null
[ $? -eq ] && action "stop live_server" /bin/true || action "stop live_server" /bin/false #stop nvr
killall sdk_nvr_write &> /dev/null
[ $? -eq ] && action "stop nvr" /bin/true || action "stop nvr" /bin/false
#stop oss
killall - sdk_oss_server_ice351 >& /dev/null
[ $? -eq ] && action "stop oss" /bin/true || action "stop oss" /bin/false
#stop portal
killall portal_ds6$?_ice351 >& /dev/null
[ $? -eq ] && action "stop portal" /bin/true || action "stop portal" /bin/false
#stop rec_server
killall - sdk_rec_server_ice351 &> /dev/null
[ $? -eq ] && action "stop rec_server" /bin/true || action "stop rec_server" /bin/false
#stop ss
killall - xhome_ss &> /dev/null
[ $? -eq ] && action "stop ss" /bin/true || action "stop ss" /bin/false
#stop report
killall - node_report &> /dev/null
[ $? -eq ] && action "stop report" /bin/true || action "stop ss" /bin/false } case $ in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "Usage $0 {start|stop|status}"
exit
esac

运行如下:

[root@iZ94nv1rj5tZ xhome]# ./dianShiServer.sh status
dev is Running and PID is
gateway is not Run
live_server is Running and PID is
nvr is Running and PID is
oss is Running and PID is
portal is Running and PID is
rec_server is Running and PID is
ss is Running and PID is
report is Running and PID is
[root@iZ94nv1rj5tZ xhome]# ./dianShiServer.sh start
dev Server is already Running
Starting gateway Sucessfull [ OK ]
live_Server is already Running
nvr_Server is already Running
oss_Server is already Running
portal_Server is already Running
rec_Server is already Running
ss_server is already Running
node_report: no process killed
start report sucessfull

在实际使用时,发现不能单独对一个部件进行操作,

只要在case中嵌套if判断,就可实现。这里就不写更新了

linux 程序启动与停止管理脚本的更多相关文章

  1. Linux 解决数量庞大wildfly容器启动与停止的脚本

    一.问题 因公司业务的发展,后台架构的变更,导致测试环境(Linux)部署与管理困难成倍增长,duang的一下,增加N倍.进入正题说问题: 问题1.  测试环境包含普通用户环境.开发者用户环境,原来只 ...

  2. 在Linux下启动Java服务的脚本

    #!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tudaxi ...

  3. Linux下启动和停止Java应用程序的Shell脚本

    转自:http://blog.csdn.net/jadyer/article/details/7960802 资料参考来源自兔大侠,并略作修改:http://www.tudaxia.com/archi ...

  4. [转] Linux中启动和停止jar包的运行

    脚本一: startTest.sh内容如下:#!/bin/shjava -jar Test.jar &       #注意:必须有&让其后台执行,否则没有pid生成echo $! &g ...

  5. Linux中启动和停止jar包的运行

    脚本一: startTest.sh内容如下: #!/bin/sh java -jar Test.jar &       #注意:必须有&让其后台执行,否则没有pid生成 echo $! ...

  6. linux防火墙启动、停止、查看

    停止防火墙 service iptables stop 启动防火墙 service iptables start 查看防火墙配置 iptables -L -n 修改的内容只是暂时保存在内存中,如果重启 ...

  7. linux程序安装及包管理

    程序包的封装类型: RPM软件包:扩展名为“.rpm”,使用rpm命令安装. DEB软件包:扩展名为“.deb”,使用DPKG包管理器. 源代码软件安装:程序员开发完成的原始代码,一般制作成“.tar ...

  8. Linux下启动、停止xampp命令

    启动xampp: /opt/lampp/./lampp start 停止xampp: /opt/lampp/./lampp stop 卸载xampp: rm -rf /opt/lampp

  9. linux下启动、停止tomcat,杀死tomcat进程

    1.打开终端 cd /java/tomcat 2.执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina ...

随机推荐

  1. 01 Developing Successful Oracle Application

    本章提要-------------------------------本章是概述性章节1. 介绍了了解数据库内部结构对于开发的重要性2. 介绍了如何才能开发好的数据库应用程序------------- ...

  2. 如何修复U盘提示被写保护的问题

    最近一客户来店里说新买的U盘没用多久,在复制文件时提示:该磁盘已被写保护! 打不开U盘,并且也不能格式化,在DOS下重新给U盘分区也没用. 今天鼎盛电脑科技服务部的工程师就帮大家解决这个问题. 首先客 ...

  3. javascript时钟代码 DEMO-002

    转载自:http://www.cnblogs.com/Mygirl/archive/2012/03/30/2425832.html 正常时间显示 复制代码 <SCRIPT language=ja ...

  4. Nginx之虚拟目录-root与alias的区别

    最近在nginx上部署日志分析工具awstats时,在配置awstats分析结果可供网页浏览这步时,分析结果页面访问总是404.后来查阅了一些资料,发现是root和alias的用法区别没搞懂导致的,这 ...

  5. appium的inspectot使用

    前提已安装好appium环境 1. 打开appium-doctor 2. 启动appium-service,点击  inspector 3. 配置手机参数,参数获取参考上篇博客 4. 点击start ...

  6. Mysql各种存储引擎的特性以及如何选择存储引擎

    几个常用存储引擎的特点 下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式. 特点 Myisam BDB Memory InnoDB Archive 存储限制 没有 没有 有 ...

  7. e640. 使一个组件可拖动

    This example demonstrates the code needed to make a component draggable. The object being transferre ...

  8. 基本上每个应用程序领域的程序员都有使用 C++

    C++ 的使用基本上每个应用程序领域的程序员都有使用 C++. C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件. C++ 广泛用于教学和研究. 任何一个使用苹果电脑或 Windo ...

  9. erlang的Socket的积压的消息的数量

    转自:http://blog.csdn.net/pkutao/article/details/8572216 {ok, Listen} = gen_tcp:listen(?defPort, [bina ...

  10. PHPExcel正确读取excel表格时间单元格(转载)

    error_reporting(E_ALL); date_default_timezone_set('Asia/shanghai'); /** PHPExcel_IOFactory */ requir ...