linux服务创建及jq配置服务列表查看
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配置服务列表查看的更多相关文章
- Linux服务之httpd基本配置详解
一.基本介绍 1.版本 httpd-1.3 httpd-2.0 httpd-2.2 httpd-2.4 目前为止最新的版本是httpd-2.4.6,但是这里我用的是系统自带的RPM包安装的httpd- ...
- linux用户创建删除以及文件权限查看修改
一. 1.查看用户 命令如下:whoami 2.创建用户 创建用户命令:sudo adduser hello 超级用户是 root 删除用户名命令:sudo deluser hello --remov ...
- linux服务基础之nginx配置详解
nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/ ...
- linux应用之vsftp服务的安装及配置(centos)
1.centos中vsftp服务的安装 方法1:rpm方式 #rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm 安装rpm程序包(网上下载的rpm包) 方法2:yum方式 ...
- Linux下Apache服务的部署和配置
目录 Apache服务的安装 yum源安装: 目录文件 源码包安装: 目录文件: Apache中添加对php的支持 Apache中添加php对mysql数据库的支持 Apache服务的高级配置 1:配 ...
- linux服务安装与配置(二):安装xinetd服务
linux服务安装与配置(二):安装xinetd服务 xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用 ...
- linux服务基础(二)之httpd2.2基础配置
一.安装httpd服务 CentOS6 默认安装httpd2.2版本 CentOS7 默认安装httpd2.4版本 # yum install httpd 二.安装后相关文件说明 配置文件: /etc ...
- linux 软连接创建 压缩解压缩 linux的dns服务相关
linux软连接创建 注意用绝对路径,语法如下 ln -s 目标文件绝对路径 软连接名字绝对路径 ln -s /小护士.txt /tmp/hs.txt 修改linux的PS1变量,命令提示符变量 PS ...
- linux下创建网卡配置
大家都知道linux系统一般作为服务器来用,而且很多情况的设置都是需要通过字符界面修改配置文件来设置.比如说配置网卡IP是修改/etc下面的 ifcfg-eth0,如果配置文件没有了怎么办呢?本经验以 ...
随机推荐
- Web 服务器 (IIS) 角色
原文:Web 服务器 (IIS) 角色 1. 对于默认安装,请在命令行提示符下键入以下命令,然后按 Enter: start /w pkgmgr /iu:IIS-WebServerRole;WAS-W ...
- mybatis型材xxxx.xml缺少后果返回类型
下面是一个mybatis型材xxxx.xml失踪resultMap错误: 严重: Servlet.service() for servlet [SpringMVC] in context with p ...
- Oracle查询速度慢的原因总结
Oracle查询速度慢的原因总结 查询速度慢的原因很多,常见如下几种:1,没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2,I/O吞吐量小,形成了瓶颈效应.3,没有创建计算列导致 ...
- 系统ls命令出现1;2cl;2cl;2cl;2c(转)
1;2c after using cat or more on binary filesI noticed that if you use the hex 05 in a file and cat o ...
- ZOJ1610_Count the Colors(段树/为段更新)
解决报告 意甲冠军: 一定长度8000段染.寻求染色完成后,.. 思路: 区间问题用线段树.成段的更新区间.最后把全部的区间下压到叶子结点,统计叶子结点的颜色. #include <iostre ...
- 优秀团队建设--美国式团队(ppt)
美国式团队 一.团队精神 团队精神反映一个人的素养.一个人的能力,一个人与别人合作的精神和能力.一个团队是个有机的总体,作为个人,仅仅有全然融入到这个有机总体之中,才干最大限度地体现自己的价值. 团队 ...
- CocoaPods停在Analyzing dependencies解决方案
现在很多开源项目应用cocoapod.这使集成第三方库都非常方便,在没有花project里设置哪些参数.仗着. 只要运行pod update要么pod install时间,经常会卡在Analyzing ...
- C语言优化实例:为了消除嵌套switch-case聪明的做法
我们有可能会写出或者遇到类似这种代码: C/C++ switch (expr1) { case label11: switch (expr2) { case label21: // do someth ...
- 绑定枚举到dropdownlist
pageTools.BindEnumToDropdownList(typeof(enumDealerArea), ddlBmwArea, new ListItem("--请选择--" ...
- php_cawler_html嵌套标签清洗
主要处理 嵌套 div,正则无法很好的处理清洗 比如文本: 想要移除 class =quizPutTag 的div ,内部可能嵌套的还有未知层级的div[前提是html文本段是闭合标签的] 这是< ...