Linux笔记-bash批量启动、停止、重启、查询状态指定Java进程(其他进行通用)

此篇博文记录了在centos7.5上,编写bash,实现批量启动,停止、重启、查询java(其他进程通用)。

 

这里有下面几个知识点:

1. shell中如何使用数组;

2. shell中对数组进行遍历;

3. echo和eval执行命令;

4. shell中case的使用;

5. 根据输入的启动命令查询进程ID(这个命令复杂只能用eval启动);

6. shell中如何定义并调用函数;

7. 在多客户端的java,通过--type这种类似的命令,区分不同的进程。

 

代码如下:

#! /bin/bash

ProPath=(
'java -jar /root/XXXX/XXXX-1.18.jar'
'java -jar /root/XXXX/XXXX-1.1.jar'
'java -jar /root/XXXX/XXXX-1.15.jar'
'java -jar /root/XXXX/XXXX-1.14.jar'
'java -jar /root/XXXX/XXXX-1.1.jar'
'java -jar /root/XXXX/XXXX-1.5.jar'
'java -jar /root/XXXX/XXXX-1.8.jar --type=1'
'java -jar /root/XXXX/XXXX-1.8.jar --type=2'
'java -jar /root/XXXX/XXXX-1.8.jar --type=3'
'java -jar /root/XXXX/XXXX-1.8.jar --type=4'
'java -jar /root/XXXX/XXXX-1.8.jar --type=5'
'java -jar /root/XXXX/XXXX-1.8.jar --type=6'
'java -jar /root/XXXX/XXXX-1.8.jar --type=7'
'java -jar /root/XXXX/XXXX-1.8.jar --type=8'
'java -jar /root/XXXX/XXXX-1.8.jar --type=9'
'java -jar /root/XXXX/XXXX-1.8.jar --type=10'
'java -jar /root/XXXX/XXXX-1.8.jar --type=11'
'java -jar /root/XXXX/XXXX-1.8.jar --type=12'
'java -jar /root/XXXX/XXXX-1.8.jar --type=13'
'java -jar /root/XXXX/XXXX-1.8.jar --type=14'
'java -jar /root/XXXX/XXXX-1.8.jar --type=15'
)
readonly ProPath


startFunction(){

                #start
                echo 'start'
                for i in "${!ProPath[@]}";
                        do
                                printf "start... %s\t%s\n" "$i" "${ProPath[$i]}"
                                #cmd= "/usr/bin/nohup /usr/bin/java -jar ${ProPath[$i]} &"
                                #cmd='/usr/bin/java -jar /root/bin/myJava1.jar'
                                #eval $cmd
                                nohup ${ProPath[$i]} &
                        done
}

statusFunction(){

                #The process status
                echo '--------------------status--------------------'
                for i in "${!ProPath[@]}";
                        do
                                P_ID="ps -ef | grep -w '${ProPath[$i]}' | grep -v "grep" | awk '{print \$2}'"
                                P_ID=$(eval $P_ID)
                                if [ "${P_ID}" == "" ]; then
                                        echo "${ProPath[$i]}" $'\t' " not yet run"
                                else

                                        echo "${ProPath[$i]}" $'\t' " still in progress"
                                fi
                        done

}

stopFunction(){

                echo stop
                for i in "${!ProPath[@]}";
                        do
                                P_ID="ps -ef | grep -w '${ProPath[$i]}' | grep -v "grep" | awk '{print \$2}'"
                                P_ID=$(eval $P_ID)
                                if [ "${P_ID}" == "" ]; then
                                        echo "${ProPath[$i]} not exists"
                                else

                                        #echo $P_ID
                                        kill -9 $P_ID
                                        echo "${ProPath[$i]} killed success"
                                fi
                        done
}

case "$1" in

	start)
		startFunction
		;;
	status)
		
		statusFunction
		;;
	stop)
		stopFunction
		;;
	restart)
		stopFunction
		startFunction
		;;

	esac
		echo 'start|status|stop|restart'

exit 0

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页