메타코딩 유튜브를 참고하여 정리한 내용입니다.
nohup java -jar *.jar > mylog.out &
: 웹 서버 표준 출력을 mylog.out
로 설정하기
다른 터미널에서 접속하여 mylog.out
파일 확인하기 (tail -f mylog.out
)
nohup java -jar v1-0.0.1-SNAPSHOT~1.jar &
을 실행한다.
v1-0.0.1-SNAPSHOT~1.jar
라는 실행 파일이 존재하지 않아 ERROR
가 발생한다.
현재 에러와 표준 출력 실행 결과 (nohup.out 에 저장됨)
🔔 현재는 nohup.out으로 출력된다.
(1) 에러 출력 : 2
(2) 표준 출력 : 1
nohup java -jar 파일명 1>log.out 2>err.out
: 표준 출력 1은 log.out
, 에러 출력 2은 err.out
➡️ 나누는 이유 : 배포를 위해서 작성했던 모든 명령어들을 스크립트로 작성할 것이다. 이때 자동화가 필요하다. 스크립트 파일 실행시 이때까지 한 내용들을 한 번에 실행되게 할 것이다.
이때, 실행이 되지 않는다면, 에러 로그를 확인한다.
이때, 실행이 잘된다면, 표준 출력 로그를 확인한다.
✔️ error가 발생했을 때
cat error.out
입력시, Error: Unable to access jarfile v1-0.0.1-SNAPSHOT.jarr
파일에 접근할 수 없다고 출력된다.cat log.out
입력시 아무 것도 출력되지 않는다.
✔️ 정상적으로 실행될 때
cat error.out
: 출력된 내용이 없다.cat log.out
: 정상적으로 서버가 실행되며, 출력 결과를 볼 수 있다.
이와 같이 할시,
error.out
파일을 확인하면 된다!log.out
을 확인하면 된다.log.out
확인할 때 끝부분만 확인하는 방법 : tail -f log.out
timedatectl list-timezones | grep Seoul
: 서울 시간sudo timedatectl set-timezone Asia/Seoul
: 서울 시간을 timedatectl
에 설정한다.
- 이전까지는
ps -ef
에서 확인했었다.- 이제는 프로그램 코드를 작성하여, 실행시킬 것이다!
✔️ echo
터미널에서 표준 출력하기
ex)
ps -ef | grep *.jar
입력시
*.jar
을 가진 실행 파일을 출력한다.여기서 grep
을 가진 녀석을 제외시키려면?
ps -ef | grep *.jar | grep -v grep
이다!
그리고, 제외시킨 녀석의 PID를 알고 싶다면?
현재 제외시킨 녀석의 프로세스 정보이다.
ubuntu 63869 63049 2 12:12 pts/0 00:00:06 java -jar v1-0.0.1-SNAPSHOT.jar
ps -ef | grep *.jar | grep -v grep | awk '{print $2}'
을 입력하면, 해당 프로세스 PID를 출력한다.
근데, 입력 내용이 되게 복잡하다!
대책 사항으로
🔔 프로세스 ID(PID)를 찾을 때 사용하기 좋은 명령어
pgrep -f *.jar
✏️ pgrep
vi spring-stop.sh
: 스크립트를 작성한 파일 실행
Springboot Stop.....
를 출력하라SPRING_PID=$(pgrep -f *.jar)
$(명령어)
: 명령어의 결과를 리턴한다. SPRING_PID
에 명령어(pgrep -f *.jar
)결과를 입력한다. SPRING_PID=63956
와 같이 입력된다. (63956
은 PID
이다.)echo $SPRING_PID
$변수
: 변수의 값을 출력 혹은 실행한다. kill -9 $SPRING_PID
$SPRING_PID
: 프로세스 번호가 저장되어 있다.
실행파일로 만들어줘야 한다. (현재 실행 파일이 아니다.)
u : rw → rwx
(파일 소유자에게 실행 권한 주기)
./spring-stop.sh
으로 실행시
echo
출력 내용, PID
가 출력되며 종료되었다.netstat -nlpt
로 출력해보니 8080번 port
가 없어졌다!