들어가기 앞서
apt 명령어를 사용하면 실행 파일을 직접 찾아서 실행할 필요가 없다.
현재 등록된 서비스들을 확인하기 위해서는
service --status-all
해당 명령어를 실행하면 등록된 서비스 리스트가 나온다.
+ : 실행중
- : 실행중이지 않음
이 두가지를 의미한다.
Tomcat 종료하기
sudo service tomcat9 stop
하지만, Service 명령어보다는 systemctl 명령어를 사용하는게 좋다.
systemctl 명령어
sudo systemctl list-unit-files : 서비스 전부 확인
sudo systemctl status '특정 서비스' : 특정 서비스 실행 상태 확인
sudo systemctl start '특정 서비스' : 특정 서비스 실행
sudo systemctl stop '특정 서비스' : 특정 서비스 중지
grep 명령어를 이용하여 특정 서비스만 확인하기
sudo systemctl list-unit-files | grep 특정 서비스
즉 | (파이프)는 두 명령어를 연결하여 하나의 명령어로 사용하게 해주는데, 그 중 첫 번째 명령어의 출력이 두 번째 명령어의 입력으로 전달된다.
또 grep 명령어는 특정한 문자열을 검색하는 데 사용된다.
PS (프로세스) 명령어
내가 직접 압축파일을 다운하고 실행파일을 실행하면 Service에 등록되지 않는다.
그럼 PS 명령어를 통해 프로세스를 종료해야한다.
ps -ef : 실행중인 프로세스 목록 전체 확인
여기서 세가지가 중요하다.
UID : 프로세스 주인
PID : 프로세스 ID
C : CPU 사용량
프로세스 종료 명령어
kill -9 PID : 프로세스 강제 종료
kill PID : 안전한 강제 종료
하지만 ps 명령어인 kill로 종료하고 sudo systemctl status '특정 서비스' 명령어를 사용하게 되면 프로세스가 종료 되었음에도 일시정지라고 확인할 수 있다.
Systemctl 명령어로 Tomcat 재시작하기
위 같은 경우에는 restart를 통해 다시 시작해야 프로세스가 정상 작동한다.
* start를 사용하면 절대 다시 시작이 되지 않는다.
sudo systemctl restart '특정 서비스'
즉, systemctl 입장에서는 exit(대기상태) 된것이고
restart로만 실행이 된다.
또는 stop ➡️ start를 통해 프로세스를 다시 Ram에 올릴 수 있다. 종료가 아닌 대기상태로 들어가기 때문이다.
shell 스크립트 팁
sudo kill `ps ef | grep '특정 서비스' | grep -v grep | awk '{print $2}'`
grep : 해당 단어가 포함된 행을 찾는다.
grep -v : 해당 단어가 있는 행을 제외하고 찾는다.
awk : 특정 조건을 출력한다.
백틱(`) : 치환 명령어 -> 감싼 부분을 실행 결과로 치환(맵핑)
즉 ps ef | grep '특정 서비스' | grep -v grep | awk '{print $2}'는 출력을 하는 것인데, 백틱(`)으로 감싸게 되면 치환되어 다른 명령어를 수행할 수 있다.
'인프라' 카테고리의 다른 글
[AWS 무중단 배포] 4. 리눅스 명령어 find || 표준 입출력 (0) | 2024.02.05 |
---|---|
[AWS 무중단 배포] 2. apt를 사용하여 Tomcat 띄우기 (0) | 2024.02.05 |
[AWS 무중단 배포] 1. 리눅스 명령어 (0) | 2024.02.04 |