systemctl
systemctl이라는 서비스 제어 명령어가 있습니다.
service라는 명령어도 있지만 service명령어는 systemctl의 wrapper script입니다. 그렇기 때문에 systemctl이 권장되는 것 같습니다.
다음명령어로 system에 등록된 서비스 목록을 전부 볼 수 있다.
sudo systemctl list-unit-files | grep <service Name>
위 명령어로 서비스 목록을 보고 사용하려는 프로그램이 현제 사용중인지 아닌지도 체크할 수 있습니다.
프로세스 실행 명령어
systemctl start <service name>
ps
ps -ef 명령어를 통해 실행중인 프로세스에 대해서 다 볼 수 있습니다.
프로세스 종료 명령어
- kill -l
위 명령어로 종료방법에 대한 리스트를 볼 수 있다.
위 리스트 중에 sigterm을 통해서 안전하게 종료할 수 있다.
ps -ef 로 kill하려는 프로세스를 찾은후 다음 명령어로 프로세스를 종료한다.
sudo kill <pid>
위 명령어를 사용한후 systemctl로 해당 프로세스를 검색해보면
systemctl status <종료한프로세스명>
systemctl의 상태는 exit 상태로 돼 있는데 이 말은 즉 systemctl을 통해서 종료한것이 아니라 systemctl입장에서는 종료된지 모르는 것이기때문에 다시 해당 서비스를 실행시키 위해서는 다음 명령어로 실행시켜 줍니다.
systemctl restart <서비스명>
왜 systemctl로 하지 않을까?
systemctl로 종료되지 않을때가 있을때 강제종료를 하거나 서비스로 등록이 안돼 있는 프로세스가 있을 수 있다. 예를 들어 직접 압축파일을 다운받아서 압축을 풀고 실행했을때라던지 하는 경우이다.
shell script 사용시 pid가 필요한 경우가 생길 수 있다.
ps ef 활용
ps -ef | grep tomcat8 | grep -v(제외명령) grep | awk(공백을 기점으로 배열에 토크나이징해준다.) '{print $2}'
첫번째 파이프라인 : 프로세스 목록 가져오기
두번째 파이프라인 : tomcat8만 그랩하기
세번째 파이프라인: 결과에서 필요없는부분 제외하기
네번째 파이프라인: 위 사진에서 공백을 기준으로 파싱해서 배열에 넣어준다. 위 예에서는 다음과 같이 변환됩니다.
[tomcat8, 3335, 1 , 1, 13:39, ? .....]
이렇게 위 명령어에서 pid tomcat8의 pid를 가져 올수 잇는데 이때 백틱은 치환명령어로 감싼 부분을 실행결과로 변환해 주는데 이를 활용할 수 있다.
kill `ps -ef | grep tomcat8 | grep -v grep | awk '{print $2}'`
위와같이 script를 짤때 pid를 파싱해서 가져 와서 활용할 수 있다.
'LINUX' 카테고리의 다른 글
Linux/ubuntu PPA 퍼스널 패키지 아카이브(개인저장소) (1) | 2023.02.04 |
---|---|
Linux/process (0) | 2021.11.13 |
Linux/root password 관리 &GRUB bootloader (0) | 2021.11.13 |
Linux/filesystem&mount(2) 파티션에 마운트걸기/logical partition만들기 (0) | 2021.11.11 |
Linux/filesystem& mount (1) /하드디스크 추가하기 (0) | 2021.11.10 |