linux에서 service를 조작하는 방법에는 어떤게 있을까요?
먼저 linux에서 프로그램이 어떻게 동작하는지 살펴보겠습니다.
linux에서는 여러가지 프로그램들이 돌아갑니다. 그것들을 service 라고 말하며 대부분 daemon 형태입니다.
(daemon이란 한번 수행되고 끝나는 service가 아닌 background 에서 지속적으로 돌아가는 service를 의미합니다.)
이런 daemon들을 관리하는 daemon또한 존재했고 처음에는 init이란 daemon이 이 역할을 수행했지만 시간이 지나면서 기능이 추가된 systemd가 이 역할을 대신하게 되었습니다. (systemd 의 d가 daemon을 의미합니다.) 그리고 이 systemd를 컨트롤하는 명령어가 systemctl 입니다.
즉 우리는 systemctl 명령어와 옵션을 통해 linux에서 돌아가는 여러 프로그램들을 관리할 수 있는 것 입니다.
systemctl --version 명령어를 통해 설치된 systemd의 버전을 확인해 보겠습니다.
239-45 버전의 systemd가 설치된 것을 알 수 있습니다.
systemd가 실행되고 있는지 확인해 보겠습니다.
systemd는 가장 먼저 실행되어 다른 프로세스들을 실행시키기 때문에 PID 1번으로 실행되고 있음을 알 수 있습니다.
다음은 현재 linux에서 실행되는 service목록을 살펴보겠습니다.
이제부터 systemctl 명령어를 사용해 보겠습니다.
systemctl -all 명령어로 전체 service 목록을 확인할 수 있고 service의 정보를 보고싶을땐 systemctl status 명령어로 확인합니다.
방화벽 서비스인 firewalld를 system status 명령어를 통해 확인해 보았습니다.
active : 현재 실행되고 있음
enabled : 부팅시 자동실행
임을 의미합니다.
만약 서비스를 멈추고 싶다면 systemctl stop [서비스명] 명령어를 입력하면 됩니다.
서비스를 멈춘 뒤 systemctl status로 정말로 멈췄는지 확인해보곘습니다.
Active: incactive 로 비활성화 되어있습니다.
서비스를 다시 실행시키고 싶다면 systemctl start [서비스명] 명령을 사용하면 됩니다
다시 active 된 모습입니다. 하단에 나오는 로그는 systemctl 을 통해 해당 서비스에 어떤 명령을 내렸는지 확인할 수 있는 로그입니다.
재부팅하고 싶다면 systemctl restart [서비스명] 을 사용하면됩니다.또한 프로세스 종료 명령어인 kill [PID] 를 통해 서비스를 종료할 수도 있지만 systemctl 명령어를 통해 종료하는게 더 안전한 방법입니다.
systemctl reload 은 서비스를 재설정하는 명령어 입니다. systemctl restart와 비슷한 기능을 하지만 차이점은
reload 명령어는 PID가 바뀌지 않는다는 것입니다.
초기상태 PID = 13695
systemctl reload 실행 후
PID = 13695
systemctl restart 실행 후
PID = 13894
systemctl mask / unmsk 명령어
mask 명령어는 비슷한 기능을 하는 서비스들끼리의 충돌을 방지하기 위해 사용합니다.
ex) firewalld & iptables, network & network manager
systemctl mask 명령이 수행되면 service 파일의 symbolic link가 /dev/null에 생성됩니다.
/dev/null 은 일종의 file이며 null file입니다. 리눅스 OS상에서 블랙홀과 같은 역할을 하고
보통 로그파일 내용을 지우거나 출력내용을 줄이는데 사용되는 디렉토리입니다.
systemctl mask 명령이 실행되면 unmask 명령어로 해제하기 전까지는 systemctl의 다른 명령어가 먹히지 않는 상태가 됩니다.
'linux' 카테고리의 다른 글
kick start 를 사용해서 linux 설치하기 (0) | 2025.01.15 |
---|---|
[Linux] configure and secureSSH (0) | 2023.06.26 |