1.应用背景

随着业务需求,后台处理服务不断增多,对于这些服务或后台程序的查看、更新操作越来越凌乱,所以我们首先需要一个服务列表查看工具,方便查看各
服务的端口、运行状态、jar包路径等等。

2.创建服务方式

2.1创建service,通过简单命令start、stop、restart、status管理
      demo:
      创建服务文件:ihr-resumemessdeal 并copy至:/etc/rc.d/init.d

 #!/bin/sh
#chkconfig:2345 80 05
#description:ihr-resumemessdeal.jar
description_txt="*******服务"
path_txt="/service_resumemessdeal_jar/ihr-resumemessdeal.jar"
app_command="nohup java -jar /usr/local/ihr-services/service_resumemessdeal_jar/ihr-resumemessdeal.jar > /dev/null 2>&1 &"
app_pidname="ihr-resumemessdeal.jar"
pidlist=""
checkpid(){
pidlist=`ps -ef|grep $app_pidname|grep -v "grep"|awk '{print $2}'`
}
start(){
echo "$app_pidname 服务准备启动"
checkpid
if [ "$pidlist" = "" ]
then
su - root -c "$app_command"
checkpid
if [ "$pidlist" = "" ]
then
echo "$app_pidname 服务启动失败"
else
echo "$app_pidname 服务启动成功"
fi
else
echo "$app_pidname 已存在并运行中"
fi
}
stop(){
checkpid
if [ "$pidlist" = "" ]
then
echo "$app_pidname 服务不存在,或已停止运行"
else
kill -9 $pidlist
checkpid
if [ "$pidlist" = "" ]
then
echo "$app_pidname 服务停止成功"
else
echo "$app_pidname 服务停止失败,请重新操作"
fi
fi
}
restart(){
stop
start
}
status(){
checkpid
if [ "$pidlist" = "" ]
then
echo "已停止"
else
echo "运行中"
fi
}
description(){
echo "$description_txt"
}
path(){
echo "$path_txt"
}
pidnum(){
checkpid
if [ "$pidlist" = "" ]
then
echo "无"
else
echo "$pidlist"
fi
} case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
description)
description;;
path)
path;;
pidnum)
pidnum;;
*);;
esac

运行:
      chmod u+x ihr-resumemessdeal
      chkconfig --add ihr-resumemessdeal
      service ihr-resumemessdeal start

测试命令:

2.2直接运行为linux后台程序:(大部分运维都这样做)
       demo:
       nohup java -jar /usr/local/ihr-services/service_resumemessdeal_jar/ihr-resumemessdeal.jar > /dev/null 2>&1 &

3.服务列表管理

3.1针对2.1创建服务列表脚本

uthor:zefeng.guo
servicelist=`chkconfig --list |grep '^ihr-' |awk '{print $1}'`
printf "\033[33m%-26s %-9s %-10s %-30s %-20s\033[0m\n" 服务名 状态 进程ID 描述 服务路径
for sl in $servicelist
do
sta=`service $sl status`
des=`service $sl description`
pat=`service $sl path`
pidn=`service $sl pidnum`
if [ "$sta" = "空命令" ]
then
printf "\033[44m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl $sta $pidn $des $pat
elif [ "$pidn" = "无" ]
then
printf "\033[45m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl $sta $pidn $des $pat
else
printf "\033[32m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl ${sta} $pidn $des $pat
fi
done

运行如下:

3.2针对2.2 创建服务列表脚本

对于运行于后台得jar包程序查看,我们可以通过jq(linux读取json配置文件)配置获取程序基本信息:

3.2.1 创建服务配置test.json

 [
{
"index": 0,
"name": "ihr-rtfeedbackdeal.jar",
"desc": "简历转发",
"dir": "/service_rtfeedbackdeal_jar/ihr-rtfeedbackdeal.jar"
},
{
"index": 1,
"name": "ihr-resu3333333333.jar",
"desc": "简历填写",
"dir": "service_resum3333_jar/ihr-resumem33333.jar"
},
{
"index": 2,
"name": "ihr-resumemessdeal.jar",
"desc": "简历反馈",
"dir": "service_resumemessdeal_jar/ihr-resumemessdeal.jar"
},
{
"index": 3,
"name": "ihr-aaaaaaaaaa.jar",
"desc": "简历修改",
"dir": "service_resumeme11111_jar/ihr-resu111111111.jar"
},
{
"index": 4,
"name": "ihr-aaaarrrr.jar",
"desc": "简历回收",
"dir": "service_resumeme11111_jar/ihr-resu13333.jar"
}
]

3.2.1 读取配置文件并检索程序运行状态:

cd /home/gzf/tools/jq
jqpath="/jq"
testpath="/home/gzf/tools/jq/test.json"
servicenames=`cat $testpath | .$jqpath .[] | .$jqpath .index`
printf "\033[33m%-26s %-9s %-10s %-30s %-20s\033[0m\n" 服务名 状态 进程ID 描述 服务路径
sl="ihr-"
for sc in $servicenames
do
sl=`cat $testpath | .$jqpath .[$sc] | .$jqpath .name`
sl=${sl//\"/}
pidn=`ps -ef | grep $sl | grep -v "grep"| awk '{print $2}'`
des=`cat $testpath | .$jqpath .[$sc] | .$jqpath .desc`
pat=`cat $testpath | .$jqpath .[$sc] | .$jqpath .dir`
sta="运行"
if [ "$pidn" = "空命令" ]
then
printf "\033[44m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl $sta $pidn $des $pat
elif [ "$pidn" = "" ]
then
sta="停止"
pidn="无"
printf "\033[45m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl $sta $pidn $des $pat
else
printf "\033[32m%-23s %-10s %-10s %-30s %-20s\033[0m\n" $sl ${sta} $pidn $des $pat
fi
done

运行如下:

3.备注:

知识点:

3.1 nohup命令的用法
    3.2 linux服务的创建
    3.3 jq(linux读取json配置)的用法
    3.4 printf命令的用法

linux服务创建及jq配置服务列表查看的更多相关文章

  1. Linux服务之httpd基本配置详解

    一.基本介绍 1.版本 httpd-1.3 httpd-2.0 httpd-2.2 httpd-2.4 目前为止最新的版本是httpd-2.4.6,但是这里我用的是系统自带的RPM包安装的httpd- ...

  2. linux用户创建删除以及文件权限查看修改

    一. 1.查看用户 命令如下:whoami 2.创建用户 创建用户命令:sudo adduser hello 超级用户是 root 删除用户名命令:sudo deluser hello --remov ...

  3. linux服务基础之nginx配置详解

    nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/ ...

  4. linux应用之vsftp服务的安装及配置(centos)

    1.centos中vsftp服务的安装 方法1:rpm方式 #rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm  安装rpm程序包(网上下载的rpm包) 方法2:yum方式 ...

  5. Linux下Apache服务的部署和配置

    目录 Apache服务的安装 yum源安装: 目录文件 源码包安装: 目录文件: Apache中添加对php的支持 Apache中添加php对mysql数据库的支持 Apache服务的高级配置 1:配 ...

  6. linux服务安装与配置(二):安装xinetd服务

    linux服务安装与配置(二):安装xinetd服务 xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用 ...

  7. linux服务基础(二)之httpd2.2基础配置

    一.安装httpd服务 CentOS6 默认安装httpd2.2版本 CentOS7 默认安装httpd2.4版本 # yum install httpd 二.安装后相关文件说明 配置文件: /etc ...

  8. linux 软连接创建 压缩解压缩 linux的dns服务相关

    linux软连接创建 注意用绝对路径,语法如下 ln -s 目标文件绝对路径 软连接名字绝对路径 ln -s /小护士.txt /tmp/hs.txt 修改linux的PS1变量,命令提示符变量 PS ...

  9. linux下创建网卡配置

    大家都知道linux系统一般作为服务器来用,而且很多情况的设置都是需要通过字符界面修改配置文件来设置.比如说配置网卡IP是修改/etc下面的 ifcfg-eth0,如果配置文件没有了怎么办呢?本经验以 ...

随机推荐

  1. Google调试技巧总结

    工欲善其事 工欲善其事,必先利器. Google调试面板一一介绍:F12回想一下大家都应该知道,哈哈 element面板 这个面板显示了页面所有html代码.用于调试css代码.右側展示左側相应选择元 ...

  2. linux awk命令详细使用方法

    简单介绍 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部 ...

  3. java maven quartz exampe 实用指南

    pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...

  4. Web Api 2, Oracle and Entity Framework

    Web Api 2, Oracle and Entity Framework I spent about two days trying to figure out how to expose the ...

  5. 第11章 享元模式(Flyweight Pattern)

    原文 第11章 享元模式(Flyweight Pattern) 概述:   面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时 ...

  6. I Love This Game 2115(结构体)

    Problem Description Do you like playing basketball ? If you are , you may know the NBA Skills Challe ...

  7. jsp页面onsubmit=&quot;return checklogin();&quot;该解决方案给

    选择Window->Preferences->MyEclipse->Validation 去掉方框里的对号,然后Apply 然后点击Yes->然后再点击ok->Yes,足 ...

  8. Android - &quot;cause failed to find target android-14&quot; 问题

    "cause failed to find target android-14" 问题 本文地址: http://blog.csdn.net/caroline_wendy Andr ...

  9. ListView排序并隔色显示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  10. sql server drop talbe 自动删除关联的外键 ,权限体系(一)

    if object_id('Proc_DropTableWithFK') is not null begin drop proc dbo.Proc_DropTableWithFK end GO ) a ...