首页 > 系统服务 > 详细

shell 大型脚本工具开发实战

时间:2019-07-11 23:24:40      阅读:145      评论:0      收藏:0      [点我收藏+]

 

拆分脚本功能,抽象函数

  • 1、function get_all_group 返回进程组列表字符串
  • 2、function get_all_process 返回进程名列表字符串"nginx httpd mysql datanode"
  • 3、function get_process_info 返回进程详细信息列表字符串,详细信息包括:运行状态、PID、CPU、MEM、启动时间 注:该函数可以接收一个参数,参数为进程名称
  • 4、function get_all_process_by_group 返回进程组内的所有进程名称列表字符串

配置文件

process.cfg

[GROUP_LIST]
WEB
DB
HADOOP
YARN

[WEB]
nginx
httpd

[DB]
mysql
postgresql
oracle

[HADOOP]
datanode
namenode
journalnode

[YARN]
resourcemanager
nodemanager

  

功能函数代码 1 (获取进程组列表)

sed -n ‘/\[GROUP_LIST]/,/\[.*\]/p‘ process.cfg | grep -v "^$" | grep -v "\[.*\]"

技术分享图片

使用egrep 优化

sed -n ‘/\[GROUP_LIST]/,/\[.*\]/p‘ process.cfg | egrep -v "(^$|\[.*\])"

封装函数

app_status.sh

#!/bin/bash
#
# Func: Get Process Status In process.cfg

# Define Variables
HOME_DIR="/home/roo/Desktop/shell_code/day9"
CONFIG_FILE="process.cfg"
# 进程本身的pid
this_pid=$$

# 获取所有的组
function get_all_group
{
    G_LIST=$(sed -n ‘/\[GROUP_LIST]/,/\[.*\]/p‘ $HOME_DIR/$CONFIG_FILE | egrep -v "(^$|\[.*\])")
    echo $G_LIST
}

for g in `get_all_group`;do
    echo $g
done

 

执行脚本

sh app_status.sh

技术分享图片

 

  

  

 

shell 大型脚本工具开发实战

原文:https://www.cnblogs.com/crazymagic/p/11173162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!