shell脚本应实《九》现查询出进程的名字,杯内存占用率,启动时间在线状态等格式化输出

  

目的是查询出进程的名字,杯内存占用率,启动时间在线状态等格式化输出

  

<强>脚本实现的结果:
[root@zabbix ~] # sh/app/壳/app_status。sh
ProcessName - - - - - - - - - - groupname - - - - - -地位——pid——CPU——记忆——StarTime——
nginx WEB停止零空零空
httpd WEB停止零空零空
mysql数据库运行3019 0.2 24.1结婚2019年9月11日12:02:21
oracle数据库停止零空零空
[root@zabbix ~] # sh/app/壳/app_status。sh nginx
ProcessName - - - - - - - - - - groupname - - - - - -地位——pid——CPU——记忆——StarTime——
nginx WEB运行4262 0.0 0.1结婚2019年9月11日12:18:19
nginx WEB运行4263 0.0 0.1结婚2019年9月11日12:18:19

  

脚本使用的配置文件存放路径:/app/壳/process.cfg
process.cfg的内容

  
  

[GROUP_LIST]
WEB
DB HADOOP

百胜

  

[网络]
nginx
httpd

  (DB)


mysql甲骨文

postgresql

  

[HADOOP]
然后datanode

journalnode

  (百胜)


resourcemanager
nodemanager

     

脚本内容:
# !/bin/bash
#
# Func:工艺的地位在process.cfg

  

#
HOME_DIR=岸ㄒ灞淞?app/壳/?br/> CONFIG_FILE=皃rocess.cfg"
this_pid=$ $
# <强> <强>
# get_all_goup:得到组的成员
#该函数无需输入参数,返回配置配置文件的过程。cfg中所有的组信息,如网络、数据库等
#

函数get_all_group
{
G_LIST=<代码> sed - n”/\ [GROUP_LIST \]//\ [。* \]/p " $ {HOME_DIR}/$ {CONFIG_FILE} | egrep - v”(^ $ | \ [* \]。)"
回声“$ {G_LIST}“
}
# get_all_process
#该函数无需输入任何参数,返回配置文件的过程。cfg中所有进程信息
#
函数get_all_process
{
在<代码> get_all_group g代码

P_LIST=<代码> sed - n”/\ [$ {g} \]//\ [。* \]/p " $ {HOME_DIR}/$ {CONFIG_FILE} | egrep - v”(^ $ | \ [* \]。)"
回声“$ {P_LIST}“

}
# get_process_pid_by_name
#该函数接收一个参数,参数是进程名,返回的是一个进程PID的列表,可能是一个或是多个
#
函数get_process_pid_by_name
{
如果[$ # - ne 1];然后
返回1

其他PID=<代码> p ef | | grep 1美元egrep grep - v | grep - v $ 0 | awk的{打印$ 2}
echo $ {PID}
fi
}
# get_process_info_by_pid
#该函数是接收一个参数,参数进程PID;返回值是一进程运行信息的列表,其包含CPU占用率内存
#
函数get_process_info_by_pid
{
如果[<代码> p ef | awk - v PID=$ 1 $ 2==PID{打印}的| wc - l eq 1];然后
pro_status=癛UNNING"其他

pro_status=癝TOPED"
fi
pro_cpu=<代码> ps辅助| awk - v PID=$ 1 ' 2美元==PID{打印3美元}'
pro_mem=<代码> ps辅助| awk - v PID=$ 1 ' 2美元==PID{打印4美元}'
pro_start_time=<代码> p - p - o lstart 1美元| grep - v开始
#回声“$ {pro_status} $ {pro_cpu} $ {pro_mem}“$ {pro_start_time}“;“
}
# is_group_in_config
#该函数接收一个参数,参数为组的名称,返回是0或1;0代表该组在配置文件中,1代表不在
#
函数is_group_in_config
{
在<代码> gn get_all_group> 如果(“$ {gn}“;==?美元,);然后

返回fi

完成回声“组1美元不在process.cfg"
返回1
}
# is_process_in_config
#该函数接收一个参数,参数为组名;返回值是对应组内所有进程名名称列表
#
函数is_process_in_config
{
在<代码> pn get_all_process> 如果(pn==1美元);然后
返回
fi做

}
# get_all_process_by_group
#该函数接收一个参数,参数为组的名称传给is_group_in_config返回的0列出该组内所有进程名
#
函数get_all_process_by_group
{

如果is_group_in_config 1美元($ ?情商0];然后
p_list=<代码> sed - n”/\ [$ 1 \]//\ [。* \]/p " $ {HOME_DIR}/$ {CONFIG_FILE} | egrep - v”(^ $ | ^ # | \ [* \]。)"
echo $ {p_list}

其他回声“GroupName 1美元,不是在process.cfg"
fi
}
# get_group_by_process_name
#该函数接收一个参数,参数名是进程名;调用get_all_group得到组,get_all_process_by_group $ {gn};判断是否在这个组内,若在到组名称
#
函数get_group_by_process_name
{
在<代码> gn get_all_group> 在<代码> get_all_process_by_group $ {gn} ,
如果(pn==1美元);然后
回声“$ {gn}“
fi

shell脚本应实《九》现查询出进程的名字,杯内存占用率,启动时间在线状态等格式化输出