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. Arrays.asList的那点事

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  2. 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)

    引用 前几天在网上看到一个淘宝的面试题:有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果.一:分析题目 从题中可以看到“很大的List”以及“ ...

  3. listener.ora中PLSExtPro 和ExtProc的作用(转)

    默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会 ...

  4. Redis源代码分析(十一年)--- memtest内存测试

    今天,我们继续redis源代码test下测试在封装中的其它文件.今天读数memtest档,翻译了,那是,memory test 存储器测试工具..可是里面的提及了非常多东西,也给我涨了非常多见识,网上 ...

  5. asp.net 百度编辑器 UEditor 上传图片 图片上传配置 编辑器配置 网络连接错误,请检查配置后重试

    1.配置ueditor/editor_config.js文件,将 //图片上传配置区 ,imageUrl:URL+"net/imageUp.ashx" //图片上传提交地址 ,im ...

  6. hdu-4419-Colourful Rectangle-段树区,并寻求

    这个问题很有趣的项目,写麻烦.它预计将有写了很长的时间. 好在,我想开了一个比较简单的方法.. . 使用位计算,颜色RGB分别1,2,4,代表. 状态的长度了. #include<stdio.h ...

  7. Git批量删除

    Git批量删除 git的改动都需要stage过程后才能commit.当git中有大量改动时就需要能够批量操作在方便.改动分三种: modify: 有文件修改 add: 有文件增加 rm: 有文件删除 ...

  8. iis配置网址(主机名)

    一直以来,常常弄不成功关于网址的问题. 今天查了下资料 首先,找到你的文件:C:\Windows\System32\drivers\etc的hosts文件,直接用记事本打开 # Copyright ( ...

  9. crawler_网络爬虫之数据分析_httpwatcher

    所谓爬虫,首先要通过各种手段爬取到想要站点的数据. web2.0之后,各种网络站点类型越来越多,早期的站点多为静态页面[html .htm],后来逐步加入 jsp.asp,等交互性强的页面.再后来随着 ...

  10. Java Web整合开发(12) -- JDBC

    JDBC访问数据库的一般步骤: 注册驱动,获取连接,获取Statement,执行SQL并返回结果集,遍历结果集显示数据,释放连接. Connection conn = null; Statement ...