| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 주니어개발자
- 직장인점심
- 코딩
- 성수볼거리
- Linux
- 헤드퍼스트디자인패턴
- docker
- 객체지향프로그래밍
- 성수맛집
- 개발자
- DesignPattern
- 객체지향
- 오브젝트
- 헤드퍼스트
- 성수직장인
- JAVA개발자
- 독서일지
- 디자인패턴
- 책읽기
- 성수핫플
- 직장인
- 성수
- 독서
- JavaScript
- 클린코드
- IntelliJ
- Java
- 상속
- 깨끗한코드
- 책너두
- Today
- Total
런타임노트
[Linux] jar 파일 실행하는 shell script 뜯어보며 작성하기 본문
작성 목적 : 포트 80이 이미 사용되고 있으면 kill 하고 해당 jar 파일을 실행한다.
#!/bin/bash
# port 80 check
PORT=80
CHECK_PORT=$(sudo netstat -ntlp | grep :$PORT)
if [ -n "$CHECK_PORT" ]; then
# killi80 port pid
PID=$(echo "$CHECK_PORT" | awk 'NR==1 {print $7}' | gawk -F '/' '{print $1}')
echo "Port $PORT is already in use. Killing process $PID"
sudo -S kill -9 $PID
fi
# Jar file run
cd ~/wallet-view-2/target
nohup sudo java -jar app-0.0.1-SNAPSHOT.jar > log.out 2>&1 &
echo "wallet-view-2 started on port $PORT."
PORT=80
⇒ 변수 PORT는 80 이라고 선언
CHECK_PORT=$(sudo netstat -ntlp | grep :$PORT)
⇒ netstat -ntlp . 현재 시스템에서 열린 파일 및 네트워크 연결 정보 나열
이 명령어는 특정 포트를 사용 중인 프로세스나 파일을 찾는 데 자주 사용된다.
(주로 시스템 관리 및 디버깅 목적으로 활용)
if [ -n "$CHECK_PORT" ]; then
⇒ -n 옵션 : not null의 의미. 문자열이 비어 있지 않은 경우에 true 를 나타내는 조건문의 옵션
ex)
if [ -n "$변수나 명령" ]; then
# 조건이 참일 때 실행할 명령
fi
⇒ $CHECK_PORT 부분이 비어있지 않은 경우 == 80번 포트를 사용 중인 프로세스들이 있는 경우
PID=$(echo "$CHECK_PORT" | awk 'NR==1 {print $7}' | gawk -F '/' '{print $1}')
⇒ echo "$CHECK_PORT" : CHECK_PORT 변수의 값들을 출력하라.
⇒ awk는 텍스트 데이터를 처리하고 보고서를 생성하기 위한 강력한 텍스트 처리 도구 및 프로그래밍 언어.
텍스트 파일이나 스트림의 각 줄을 읽고 원하는 패턴을 찾아 특정 작업을 수행하는 데에 활용됨.
ex) awk의 일반적 구조
awk '패턴 { 액션 }' 파일이름
awk는 패턴-액션 구조를 가지고 있다.
각 줄에 대해 패턴이 일치하면 해당 패턴에 대한 액션을 수행한다.
여기서 '패턴'은 일치시킬 패턴이며, '액션'은 해당 패턴이 일치할 때 수행할 명령 또는 작업입니다.
ex)
awk '/pattern/ { print $1 }' 파일이름
이 명령어는 'pattern'이라는 텍스트 패턴이 포함된 각 줄에서 첫 번째 필드를 출력
⇒ NR==1 는 첫 번째 줄 이라는 의미.
⇒ $7는 일곱 번째 필드 라는 의미
awk 'NR==1 {print $7}'
⇒ NR==1 패턴일 때 print $7 해라.
⇒ 첫번 째 줄에서 일곱 번째 필드를 출력해라
=> 출력하면 나는 12345/java 이런식으로 나옴 (pid번호/java)
그럼 뒤에 /java 문자열 자르기
gawk -F '/' '{print $1}'
> log.out
⇒ 표준 출력을 log.out 파일로 리다이렉션한다. == 프로그램이 표준 출력을 콘솔이 아니라 파일에 기록하도록 하는 것
2>&1
⇒ 표준 에러를 표준 출력으로 리다이렉션한다. == 표준 출력과 표준 에러를 동일한 파일에 기록하도록 하는 것.
'Linux' 카테고리의 다른 글
| [Linux] touch 명령어 (0) | 2023.11.16 |
|---|---|
| [Linux] awk와 gawk의 차이점 (0) | 2023.11.09 |
| [Linux] tar / tar.gz / zip 압축 및 압축 해제 (0) | 2023.09.12 |
| [Linux] $ pwd --version 했을 때, invalid option 뜨는 이유 (0) | 2023.09.04 |
| [Linux] scp 이용하여 다른 서버로 파일 보내기(단일파일, 복수파일, 디렉토리) (0) | 2023.08.29 |