linux服务创建及jq配置服务列表查看

1.应用背景

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

2.创建服务方式

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

 1 #!/bin/sh
 2 #chkconfig:2345 80 05
 3 #description:ihr-resumemessdeal.jar
 4 description_txt="*******服务"
 5 path_txt="/service_resumemessdeal_jar/ihr-resumemessdeal.jar"
 6 app_command="nohup java -jar /usr/local/ihr-services/service_resumemessdeal_jar/ihr-resumemessdeal.jar > /dev/null 2>&1 &"
 7 app_pidname="ihr-resumemessdeal.jar"
 8 pidlist=""
 9 checkpid(){
10    pidlist=`ps -ef|grep $app_pidname|grep -v "grep"|awk ‘{print $2}‘`
11 }
12 start(){
13   echo "$app_pidname 服务准备启动"
14   checkpid
15   if [ "$pidlist" = "" ]
16      then
17        su - root -c "$app_command"
18        checkpid
19        if [ "$pidlist" = "" ]
20          then
21            echo "$app_pidname 服务启动失败"
22          else
23            echo "$app_pidname 服务启动成功"
24        fi
25      else
26        echo "$app_pidname 已存在并运行中"
27   fi
28 }
29 stop(){
30    checkpid
31    if [ "$pidlist" = "" ]
32       then
33        echo "$app_pidname 服务不存在,或已停止运行"
34       else
35         kill -9 $pidlist
36         checkpid
37         if [ "$pidlist" = "" ]
38            then
39              echo "$app_pidname 服务停止成功"
40            else
41              echo "$app_pidname 服务停止失败,请重新操作"
42         fi
43    fi
44 }
45 restart(){
46    stop
47    start
48 }
49 status(){
50    checkpid
51    if [ "$pidlist" = "" ]
52       then
53          echo "已停止"
54       else
55         echo "运行中"
56    fi
57 }
58 description(){
59    echo "$description_txt"
60 }
61 path(){
62   echo "$path_txt"
63 }
64 pidnum(){
65     checkpid
66   if [ "$pidlist" = "" ]
67       then
68        echo "无"
69       else
70        echo "$pidlist"
71    fi
72 }
73
74 case $1 in
75 start)
76     start;;
77 stop)
78     stop;;
79 restart)
80     restart;;
81 status)
82     status;;
83 description)
84     description;;
85 path)
86     path;;
87 pidnum)
88     pidnum;;
89 *);;
90 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

 1 [
 2     {
 3         "index": 0,
 4         "name": "ihr-rtfeedbackdeal.jar",
 5         "desc": "简历转发",
 6         "dir": "/service_rtfeedbackdeal_jar/ihr-rtfeedbackdeal.jar"
 7     },
 8     {
 9         "index": 1,
10         "name": "ihr-resu3333333333.jar",
11         "desc": "简历填写",
12         "dir": "service_resum3333_jar/ihr-resumem33333.jar"
13     },
14     {
15         "index": 2,
16         "name": "ihr-resumemessdeal.jar",
17         "desc": "简历反馈",
18         "dir": "service_resumemessdeal_jar/ihr-resumemessdeal.jar"
19     },
20     {
21         "index": 3,
22         "name": "ihr-aaaaaaaaaa.jar",
23         "desc": "简历修改",
24         "dir": "service_resumeme11111_jar/ihr-resu111111111.jar"
25     },
26     {
27         "index": 4,
28         "name": "ihr-aaaarrrr.jar",
29         "desc": "简历回收",
30         "dir": "service_resumeme11111_jar/ihr-resu13333.jar"
31     }
32 ]

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命令的用法

时间: 2024-10-09 02:47:13

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

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

一. 1.查看用户 命令如下:whoami 2.创建用户 创建用户命令:sudo adduser hello 超级用户是 root 删除用户名命令:sudo deluser hello --remove-home 切换用户登录命令: su -l hello 3.用户组 groups 查看用户组命令:cat  /etc/group 或者:cat  /etc/group | sort    (这样显示出来的数据是按照字典顺序排列的) 创建用户组:usermod 二.linux文件的权限 1.权限查看

linux服务基础之nginx配置详解

nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/p/10848623.html nginx相关配置: 主配置段的指令: 正常运行的必备配置 1. user USERNAME [GROUPNAME] 指定运行worker进程的用户和组: 比如:user nginx nginx; 2. pid /path/to/pid_file; 指定nginx守护

Linux服务的简单配置(homework)

Linux服务也学习一个礼拜啦,趁这闲暇之际,归纳一下这周所学的服务. 应用环境:Redhat 5.9 一.DHCP DHCP是动态主机配置协议,可自动分配入网参数,实现各客户机IP的自动获取 1.为服务器配置一个固定的Ip地址如192.168.4.2 2.确认已安装dhcp软件包 3.建立dhcpd.conf配置文件. [[email protected] ~]# vim/etc/dhcpd.conf subnet 192.168.4.0 netmask 255.255.255.0 { opt

Linux 服务篇之——httpd的配置(一)

Httpd(即Apache)作为当今最流行的的web server之一,在互联网中起着至关重要的作用,那么这么一个强大的工具是如何配置工作的呢,本节我就带大家了解实现一下httpd的基本配置. 在这里一些基本的httpd知识点我可能介绍的不是那么的详细,希望大家不是很懂的地方可以通过Google等方式进行查找了解.那么下面我们就开始吧. 实验运行环境: Centos6.5x86_64 IP:172.16.249.57 Httpd的安装 Httpd的安装方式通常有两种,一直是直接利用rpm包进行直

Linux服务管理之httpd-2.4常用配置及phpMyAdmin、wordpress、Discuz安装

一.何为httpd httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 二.httpd-2.4较httpd-2.2 新特性: (1) MPM支持运行DSO机制:以

Windows Azure+Windows+Linux多环境下Tomcat服务的安装及配置集合

Windows Azure+Windows+Linux多环境下的Tomcat服务的安装及配置集合 说到Tomcat服务,相信大家都很熟悉了,当然也这包括安装及配置:我们都知道Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求.实际上To

LINUX 服务的配置 DHCP

应用环境:Redhat 5.9 一.DHCP DHCP是动态主机配置协议,可自动分配入网参数,实现各客户机IP的自动获取 1.为服务器配置一个固定的Ip地址如192.168.4.2 2.确认已安装dhcp软件包 3.建立dhcpd.conf配置文件. [[email protected] ~]# vim/etc/dhcpd.conf subnet 192.168.4.0 netmask 255.255.255.0 { option routers                  192.168

在RedHat Linux系统中安装和配置snmp服务

检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-devel-5.3.2.2-17.el5 net-snmp-libs-5.3.2.2-17.el5 net-snmp-utils-5.3.2.2-17.el5 net-snmp-libs-5.3.2.2-17.el5 net-snmp-devel-5.3.2.2-17.el5 SNMP服务安装后会有以上安

Linux服务篇之七:MySQL主从原理及架构配置

Linux服务篇之七:MySQL引擎了解.主从原理及架构配置 一.MySQL引擎了解 MyISAM引擎 默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select, MyISAM比较适合. InnoDB引擎 支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.Innodb最初是由innobase Oy公司开发,200