AWS/aws CICD-metacoding

리눅스 프로세스, 서비스 명령어

MDanderson 2024. 8. 10. 00:53

apt 명령어로 설치하면 서비스에 등록된다. 그러면 실행파일을 직접 찾아서 실행할 필요가 없다

 

service --status-all 하면  실행중인 서비스는 +로 표시되서 나온다.

 

sudo service tomcat8 stop

sudo service tomcat8 start

sudo service tomcat8 restart

netstat -nlpt 로 8080포트 돌아가는지 확인

 

service 명령어는 systemctl의 wrapper script 이다

service 대신에 systemctl를 사용하자

 

sudo systemctl list-unit-files | grep tomcat8  -서비스 목록

sudo systemctl status tomcat8   -상태확인

 

sudo systemctl stop tomcat8 

sudo systemctl start tomcat8 

 

@sudo systemctl stop [프로그램명] 로 종료 하지 않고 kill을 쓰는 이유?

1. 종료가 안될경우가 생길수있음 -> 직접 강제종료해야함

2. 서비스로 등록이 안되어있는 프로세스가 있을 수 있다 (내가 직접 압축파일을 다운받고 압축풀고 실행파일 실행한 경우)

 

ps -ef  실행중인 프로세스 확인

 

@종료

kill -l 종료옵션보기

kill -9 PID 강제종료 - 프로세스를 안전하게 종료시키려면 가급적 사용하지 말자

sudo kill -15 PID  또는 sudo kill PID : 안전한 종료 ( systemctl입장에서는 exit된 것이고 안전한 종료후 restart로만 실행된다 왜냐하면 systemctl 입장에서는 종료가 아닌 중지 상태가 된다)

 

kill PID로 종료된 톰캣을 다시 시작할려면 start로는 동작이 안된다. restart해야함

sudo systemctl restart tomcat8 (stop한후 start한거랑 똑같다)

 

컨트롤c를 해서 종료하는것은 kill -2 PID 와 같다. 

 

 

@작동중인 톰캣을 찾아 종료하는 명령어

 

ps -ef | grep tomcat8 | grep -v grep | awk '{print $1}'

-v (제외옵션)

-v grep :grep이 들어간거는 제외해달라는말

awk : 공백을 기준으로 분리하여 토큰화

'{print $1}' : 1번째로 나오는 필드값 (tomcat8)

$2면 PID값을 의미하겠지 

 

이를 응용하면

 

sudo kill `ps -ef | grep tomcat8 | grep -v grep | awk '{print $2}'`

 

`백틱은 치환명령어 `으로 감싼부분을 실행결과로 치환한다

 

 

@8080포트로 돌아가는거 가져와서 종료하기

sudo netstat -nlpt | grep :8080 | awk '{print $7}' | cut -d'/' -f1 | xargs -r sudo kill -9

 

cut -d'/' -f1: '/'로 구분된 문자열에서 첫 번째 항목(PID)만 가져옵니다

xargs -r sudo kill -9: 추출한 PID에 대해 강제 종료(kill -9) 명령을 실행합니다.

 

xargs는 표준 입력에서 데이터를 받아서 특정 명령어의 인수로 전달하는 유용한 프로그램입니다. 즉, 표준 입력으로 들어온 데이터를 가공하여 다른 명령어의 인수로 사용할 수 있게 해줍니다. xargs를 사용하면 파이프라인이나 리다이렉션을 통해 받은 입력을 여러 개의 명령어로 나누어 실행할 수 있습니다.

 

-r 옵션은 xargs의 동작을 조정하는 특별한 옵션 중 하나로, **"비어 있는(즉, 아무 입력도 없는 경우) 입력이 들어오면 명령을 실행하지 않는다"**는 의미를 가집니다. 이는 불필요하게 명령을 실행하는 것을 방지하여 더욱 안정적인 스크립트 실행을 돕습니다.

-r 옵션의 사용 이유

  • 불필요한 오류 메시지 방지: -r 옵션이 없으면, xargs는 아무런 입력도 받지 않았을 때도 지정된 명령을 실행하려 시도합니다. 이때 명령은 실패하거나 예상치 못한 동작을 할 수 있습니다.
  • 효율성: 불필요한 명령 실행을 방지함으로써 스크립트의 효율성을 높일 수 있습니다.

'AWS > aws CICD-metacoding' 카테고리의 다른 글

리눅스 표준 입출력  (0) 2024.08.11
리눅스 링크  (0) 2024.08.10
리눅스 그룹 변경  (0) 2024.08.10
리눅스 권한  (0) 2024.08.10
리눅스 apt 와 ppa저장소 이용한 프로그램 설치  (0) 2024.08.09