配置 linux 快速 运行jar包

文件名 jun.sh



#!/bin/bash

#ps -aux | grep $1 >a.txt

process_name=$1
process_state=$2
process_nohup=$3

echo "【参数1:$0】 【参数2:$1】 【参数3:$2】 【参数4:$3】"

if [ "$1" == "w" ]; then
	if [ "$2" == "" ]; then
		echo "↓↓↓↓↓↓↓↓↓↓↓ tail -f nohup.out ↓↓↓↓↓↓↓↓↓↓"
		echo ""
		tail -f -n 100 nohup.out
	elif [ "$2" != "" ]; then
		echo "↓↓↓↓↓↓↓↓↓↓  tail -f $2  ↓↓↓↓↓↓↓↓↓↓" 
		echo ""
		tail -f -n 100 $2
	fi
	
fi

if [ "$process_name" == "setup" ]; then
	echo "设置别名"
	# 修改全局配置
	current_path=`pwd`
	chmod +x "$current_path/jun.sh"
	echo "" >> ~/.bashrc
	echo "alias jun.sh=$current_path/jun.sh" >> ~/.bashrc
	echo "alias cs='jun.sh'" >> ~/.bashrc
	echo "alias cs0='cs s 0'" >> ~/.bashrc
	echo "alias csstop='cs s 0'" >> ~/.bashrc
	echo "alias cs1='cs s 1'" >> ~/.bashrc
	echo "alias csquery='cs s 1'" >> ~/.bashrc
	echo "alias cs2='cs s 2'" >> ~/.bashrc
	echo "alias csstart='cs s 2'" >> ~/.bashrc
	echo "alias cs3='cs s 3'" >> ~/.bashrc
	echo "alias cs4='cs s 3 1'">> ~/.bashrc
	echo "alias cw='csw'" >> ~/.bashrc
	echo "alias csreload='cs s 3'" >> ~/.bashrc
	source ~/.bashrc

	exit 1
fi

exec_process(){
	if [ "$process_name" == "s" ]; then
		OLD_IFS="$IFS"
		IFS=$'\n'
		all_file_name=`ls -l |grep .jar| awk '{print $9}'`
		all_name=($all_file_name)
		length=${#all_name[@]}
		
		# 如果jar包数量为0,则退出执行
		if [ "$length" == "0" ]; then
			echo "好像木有jar包哦"
			IFS="$OLD_IFS"
			exit 1
		fi
		# =0: 结束所有jar
		if [ "$process_state" ==  0 ]; then
			for ((i=0;i<${#all_name[@]};i++));
			do
				kill_process ${all_name[$i]}
			done
		fi
		# =1:查询所有jar
		if [ "$process_state" == 1 ]; then
			for ((i=0;i<${#all_name[@]};i++));
			do
				query_process ${all_name[$i]}
			done
		fi
		# =2: 启动所有未启动的jar
		if [ "$process_state" == 2 ]; then
			for((i=0;i<${#all_name[@]};i++));
			do
				pid=`ps -ef | grep ${all_name[$i]} | grep -v "grep" |grep -v "/bin/bash"| awk '{print $2}'`	
				if [ "$pid" == "" ]; then
					start_process ${all_name[$i]}
				fi
			done
		fi
		# =3:重启所有jar
		if [ "$process_state" == 3 ]; then
			# 如果jar数量多于1,则提示选择需要执行的Jar
			if [ $length -gt 1 ]; then
				for((i=1;i<=${#all_name[@]};i++));
				do
					if [ "$i" == 1 ]; then
						echo "请选择要重启的jar包:"
						echo "     a:全部"
					fi
					echo "     $i:${all_name[ $i - 1 ]}"
				done
				read input
				if [ "$input" == "a" ]; then
					echo "即将重启/启动所有jar包"
					for((i=0;i<${#all_name[@]};i++));
					do
						kill_process ${all_name[$i]}
						start_process ${all_name[$i]}	
					done
				else
					exec_process_name=${all_name[ $input - 1 ]}
					echo "即将重启/启动$exec_process_name"
					kill_process $exec_process_name
					start_process $exec_process_name
				fi
			else
				# 如果jar只有一个,则直接结束并重启
				kill_process $all_name
				start_process $all_name
			fi
	
		fi
		# 还原IFS
		IFS="$OLD_IFS"
		# 退出
		exit 1
	fi
	
	# 帮助文档
	if [ "$process_name" == "" -a "$process_state" == "" ]; then
                echo "方式一  cs 进程名 [0:结束服务进程 1:查询服务进程 2:启动服务 3:重启服务 4:nohup启动Jar] w:跟踪阅读文件(默认nohup.out)"
		echo "方式二  csstop/cs0:结束当前目录所有服务  csquery/cs1:查询当前目录所有服务进程  csstart/cs2:启动当前目录所有未启动的服务  csreload/cs3:重启当前目录所有服务 cs4:nohup方式启动jar csw:跟踪阅读"
		echo "方式三 cw [文本名] :根据阅读文件"
		echo " "
		exit 1
	fi
	# 判断进程名是否为空
	if [ "$process_name" == "" ]; then
		echo "请输入进程名!"
		exit 1
	fi
	
	# 若操作值为空,则默认查询
	if [ "$process_state" == 1 ]; then
		query_process $process_name
		exit 1
	fi
	
        # 启动进程
        if [ "$process_state" == 2 ]; then
                start_process $process_name
                exit 1
        fi
	# 结束进程
	if [ "$process_state" == 0 ]; then
		kill_process $process_name
		exit 1
	fi
	# 重启进程
	if [ "$process_state" == 3 ]; then
		kill_process $all_pids
		start_process $process_name
		exit 1	
	fi
}	

# 结束进程
kill_process(){
	process_pids=`ps -ef | grep $1 | grep -v "grep" |grep -v "/bin/bash"| awk '{print $2}'`
		
	OLD_IFS="$IFS"
	IFS=" "
        pids=($process_pids)
        IFS="$OLD_IFS"
	
	for pid in ${pids[@]};do
		kill -9 $pid 1>/usr/null 2>&1
		echo "kill -9 $pid 完成"
	done
}
# 启动进程
start_process(){
	exec_name=$1
	is_jar=${exec_name#*.}
 	p_name=$1
	if [ "$is_jar" == "jar" ]; then
		java -jar $exec_name &
                echo "java -jar $exec_name & 成功"
		
	elif [ "p_name" != "" ]; then
		if [ "$process_nohup" == 1 ]; then
			echo "nohup java -jar $p_name >> nohup.out & 成功!"
			nohup java -jar $p_name >> nohup.out &
			exit 1
		elif [ "$process_nohup" == "" ]; then
                	java -jar ./$p_name &
                	echo "java -jar $exec_name & 成功"
		fi
	elif [ "$process_name" = "redis-server" ]; then
		/usr/bin/redis-server /etc/redis.conf &
                echo "redis-server 启动成功"
	fi
	
}
# 查看进程
query_process(){
	ps -aux | grep $1 | grep -v "grep" | grep -v "/bin/bash"
}

# 执行函数
exec_process

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值