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,如果配置文件没有了怎么办呢?本经验以 ...
随机推荐
- [模拟] hdu 4452 Running Rabbits
意甲冠军: 两个人在一个人(1,1),一个人(N,N) 要人人搬家每秒的速度v.而一个s代表移动s左转方向秒 特别值得注意的是假设壁,反弹.改变方向 例如,在(1,1),采取的一个步骤,以左(1,0) ...
- thinkphp 删除该表的最后一行
问题叙述性说明: 文章连接动态连接表格,因为有被添加.有必须删除.动态添加到表格这似乎有点不合理.它应该只被添加到表格行.而不是增加一个新表格. 发布完整的代码在这里,加入表格新行和删除表格最后一行. ...
- Mybatis基金会: 经常问的问题FAQ
Mybatis基金会: #{...} 和 ${...} 差额 MyBatis将 #{-} 解释为JDBC prepared statement 参数标记.而将 ${-} 解释为一个字符串替换.非常实用 ...
- HDU 4292Food(网络流的最大流量)
职务地址:HDU 4292 水题. 因为每一个人仅仅能有1份,所以须要拆点限制流量.建图方法为,建一源点与汇点.将食物与源点相连,权值为食物额数量,将饮料与汇点相连,权值为饮料数量..然后将人进行拆点 ...
- Jquery基础教程第二版学习记录
本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...
- 为什么解析 array_column不可用,
不久前,自己在一个小项目,我要拿出每个元素的一维数组key的值,一维阵列的形成,突然想到php 有一种功能,实现. $array = array ( array ( "id" =& ...
- POJ1743---Musical Theme(+后缀数组二分法)
Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are int ...
- CSS3新功能简要
1.CSS3 框架: 由 CSS3,您可以创建圆角.加入到该矩形阴影,使用图片绘制边框.例如 * border-radius -border-*-radius(top,left,right,bo ...
- JavaScript模块化编程之require.js与sea.js
为什么要模块化:当今,网站以不再是一个简单的页面,JavaScript也不再是做一些简单的脚本验证,随着WEB.20时代到来,前端工程师面临的必将是越来越庞大的JavaScript代码,越来越复杂的内 ...
- ftk学习记录(button一片)
[ 声明:版权所有所有.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面,我们说到了label,这里能够看一下label执行的效果是怎么样的. waterma ...