Jar 패키지 원클릭으로 다시 시작하는 셸 스크립트 및 새 서버 배치 경험
앞말
최근에 회사에서 고객을 위해 새로운 환경을 재배치했습니다. 제가 기초 환경의 배치를 완성했습니다. 배치 과정에서 경험을 정리하고 정원의 친구들에게 공유했습니다.
#
rpm -qa | grep java | xargs rpm -e --nodeps
# 1.8
yum install java-1.8.0-openjdk* -y
#
yum -y install ntp ntpdate
#
ntpdate cn.pool.ntp.org
#
hwclock --systohc
firewall-cmd --zone=public --add-port=80/tcp --permanent
실행이 끝난 후 방화벽 설정을 다시 불러옵니다firewall-cmd --reload
어떤 서버는 내망에 있고 외망 도메인 이름이 비치며 이 포트의 외망을 내망에 개방해야 한다.이것은 서비스 성격에 따라 확정된다.만약 어떤 마이크로서비스가 서비스 간의 인터넷 방문일 뿐이라면.공망에 노출되는 것을 건의하지 않는다Jar 패키지 원클릭 재시작
Java 프로젝트는 Linux 환경에서 일반적으로 War 패키지를 Tomcat 또는jar 패키지에 배치하는 방식으로 Linux에 배치한다. 자동화 배치가 유행하는 오늘날에도 많은 회사들이 수동 배치 방식으로jar 패키지를 배치한다(예를 들어 우리 회사).최근에 우리 회사는 고객을 위해 새로운 환경(새 버전이 새 서버에 출시됨)을 다시 업그레이드했습니다. 제가 운송(rengbao)위(chongqi) 엔지니어를 겸임하여 프로젝트의 배치를 담당합니다.프로젝트가 처음 출시될 때 재부팅 작업은 매우 빈번합니다. 일반적으로 우리는 다음과 같은 명령을 사용합니다.
ps -ef |grep
kill -9 PID
nohup java -jar &
tail -1000f nohup.out
이 네 걸음은 단숨에 이루어지고 손속도가 빠르면 10s 정도면 OK입니다. 그러나 마이크로서비스 항목이 많을 때 입력해야 할 명령 수량은 4n입니다. 한 번은 서버 시간이 정확하지 않습니다. 제가 서버 시간을 재설정하여 시계가 되돌아가고 눈꽃 ID가 생성되지 않습니다.나는 모든 서비스를 단숨에 재개했다. 그것은 시큼하고 시원하다...
그래서 나는 셸 명령을 배워서 간단한 단추로 로그를 다시 시작하고 출력하는 스크립트를 써 보았다
스크립트 내용
#!/bin/bash
# Keats
# https://www.cnblogs.com/keatsCoder/
#
defaultAppName='redis-cli.jar'
appName=''
if [ $1 && $1!=0 ]
then
appName=$1
else
appName=$defaultAppName
fi
echo ">>>>>> : $appName <<<<<
사용 방법
vi/vim 명령을 사용하여jar 패키지가 있는 디렉터리에 새 restart를 만듭니다.sh 파일
vi restart.sh
위의 코드를 복사하여 실행 가능한 파일 권한을 변경합니다
chmod +x restart.sh
스크립트를 실행합니다.para1para2는 옵션입니다.para1은 다시 시작하는 프로젝트의 이름을 지정합니다.para2가 존재할 때 시작만 하고 프로세스를 죽이지 않습니다
./restart.sh [para1] [para2]
향상된 사용 방법
세심한 친구는 스크립트에 변수 default AppName이 있다는 것을 알 수 있습니다. 이것은 기본적으로 다시 시작하는 프로젝트 이름입니다. 일반적인jar 패키지 이름은 자주 수정되지 않기 때문에 기본 응용 프로그램 이름을 수정하는 방식으로 실행할 때 응용 프로그램 이름을 입력하는 절차를 간소화할 수 있습니다.
기본 이름을 수정한 후 시작 모드만 사용하려면
./restart 0 1
첫 번째 매개 변수 0은 응용 이름으로 식별되지 않고 자리 차지 문자로만 사용됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.