본문 바로가기

os/linux

[Linux] 리눅스 서비스 관리 systemctl 명령어

[Linux] 리눅스 서비스 관리 systemctl 명령어

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 리눅스의 서비스 관리 명령어인 systemctl 명령어를 알아보겠습니다.

 

리눅스에서 서비스란 백그라운드에서 실행되고 있는 프로세스를 의미합니다.

 

데몬 프로세스라고도 불리는데 이 둘은 차이가 있다고는 하지만 

 

공부를 하는 입장에서는 큰 차이를 못 느끼기에 백그라운드에서 실행되고 있는 프로세스라는 것 정도로

 

이해하시면 될 것 같습니다.

 

linux-logo
리눅스 로고


systemctl 명령어

 

systemctl 명령어로 서비스를 다루는 모습을 보여드리기 위해서 웹서버를 구출할 때 사용되는 아파치를 설치하겠습니다.

 

$ sudo apt update

 

항상 설치를 하기 전에는 시스템 저장소 업데이트를 실행한 뒤 설치하는 습관을 들이시면 좋습니다.

 

위 명령어를 통해 저장소 업데이트를 마치셨다면 본격적으로 아파치를 설치해 보겠습니다.

 

apt-update
저장소 업데이트

 

$ sudo apt install apache2 -y

설치가 완료되면 아래 명령어로 실행 중 인지 확인합니다.

$ systemctl status apache2

 

systemctl-status-apache2
서비스 상태 확인

 

Loaded - 서비스 유닛이 메모리에 로드되었는지를 보여줍니다.

 

Active - 서비스 유닛이 실행 중 인지를 보여줍니다.

 

Main PID - 기본 프로세스 ID를 보여줍니다.

 

Active 옆에 active (running) 으로 표기되어 있는 것으로 보아 실행되고 있는 것으로 보입니다.

 

curl 명령어를 사용해 웹서버가 제대로 실행되고 있는지 확인해 봅시다.

 

$ curl 127.0.0.1

curl 명령어에 루프백 주소를 입력하고 실행해 보면 html 코드를 확인할 수 있습니다.

 

curl-apache2
curl 명령어

 

이번에는 아파치 서비스를 멈춘 다음 서비스의 상태를 살펴보겠습니다.

 

$ systemctl stop apache2
$ systemctl status apache2

 

systemctl-stop
아파치 서비스 멈춤

 

Active 옆에 active (dead)로 표기되어 있는 것으로 보아 종료된 것으로 보입니다.

 

이때 curl 명령어로 웹서버의 화면을 읽어보면 다음과 같은 상황이 발생합니다.

 

curl-apache
curl 명령어

 

웹서버가 실행되고 있지 않기 때문에 연결 조차 되지 않는 모습입니다.

 

이제 서비스를 다시 실행해 봅시다.

 

이번에는 restart 옵션으로 서비스를 재실행하는 것을 보여드리겠습니다.

 

현재는 아파치 서비스가 종료된 상태입니다.

 

$ systemctl restart apache2
$ systemctl status apache2

 

systemctl-restart
아파치 서비스 재실행

 

위 화면을 보면 설치한 직후에 실행되고 있던 모습과 같은 것을 볼 수 있습니다.

 

서비스를 실행 또는 종료하는데 사용하는 옵션으로 start, stop, restart 가 있습니다.

 

그렇다면 restart는 왜 있는지 의문이 생기기 마련일 겁니다.

 

restart 옵션은 현재 서비스가 실행되고 있는 와중에 서비스의 설정이 변경되었을 경우

 

서비스를 재실행하면서 변경된 설정을 적용하기 위해 존재하는 옵션입니다.

 

또 하나 알아둬야 할 옵션은 reload 옵션입니다. 이는 restart 와 달리 서비스를 종료하지 않고 

 

실행된 상태를 유지하면서 변경된 설정을 적용시키는 옵션입니다.

 

서비스를 잠깐 끌 수 있는 상황에서는 restart 옵션을 사용하고 그렇지 못할 때는 reload 옵션을 권장드립니다.

 

reload 옵션을 사용하는 예시를 살펴봅시다.

 

아파치 웹서버의 루트 디렉터리를 변경해 보겠습니다.

$ cd /etc/apache2
$ sudo vim apache2.conf

파일 내용 중에

<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

를 찾아서

<Directory /var/www/html/test> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

로 수정해 주세요. ( :wq 를 사용해 저장하고 종료 )

 

apache2-conf-modi
아파치 루트 디렉터리 수정

 

$ cd /etc/apache2/sites-available
$ sudo vim 000-default.conf

파일 내용 중에

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

를 찾아서

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/test

로 수정해주세요. ( :wq 를 사용해 저장하고 종료 )

 

apache2-conf-modi-2
아파치 루트 디렉터리 수정

 

이제 지정한 경로에 디렉터리와 index.html 파일을 만들고 아파치 서비스를 reload 해봅시다.

 

$ cd /var/www/html
$ sudo mkdir test
$ cd test
$ sudo vim index.html

파일의 내용

Hello World

저장

$ systemctl reload apache2
$ curl 127.0.0.1

 

systemctl-reload
reload 옵션 사용 예시

 

위 그림에서 보이듯 서비스를 종료하지 않고 변경된 설정을 적용시킬 수도 있습니다.


여기까지 서비스 관리를 위한 systemctl 명령어에 대한 설명이었습니다.

 

리눅스 시스템을 사용하다 보면 서비스를 다뤄야 하는 경우가 비일비재하게 생겨납니다.

 

그렇기 때문에 systemctl 명령어의 사용법을 익혀두시면 큰 도움이 될 것입니다.

 

궁금한 점은 댓글로 남겨주시고 다음에 또 유용한 정보들을 가지고 돌아오겠습니다.

 

감사합니다.

 

 

반응형