서비스나 서비스 그룹을 관리하는 것은 현대 Linux PC에서 번거로울 수 있습니다. 즉, 무엇을 하는지 확실하지 않은 경우입니다. 다행히도, Ubuntu Systemctl이 Linux PC에서 서비스를 관리하는 데 도움이 됩니다.
이 튜토리얼에서는 다양한 systemctl
명령을 실행하여 Ubuntu PC에서 Systemd 서비스를 관리하는 방법을 배우게 됩니다.
준비되셨나요? 시작해 봅시다!
필수 준비물
이 튜토리얼은 실습 중심으로 진행되지만 특별한 도구는 필요하지 않습니다. Ubuntu 16 이상 버전이면 어디서든 사용할 수 있습니다. 이 튜토리얼에서는 Ubuntu 20.04.3 LTS 버전을 사용합니다.
Ubuntu Systemctl이란?
Ubuntu systemctl 명령을 실행하기 전에 먼저 Systemctl이 무엇인지 알아야 합니다. Systemctl은 systemd 및 시스템 서비스를 제어하고 관리하는 명령줄 유틸리티입니다.
간단히 말해, Systemctl은 Linux 커널이 부팅된 후 컴포넌트를 초기화하기 위한 systemd init 시스템의 제어판 또는 서비스 관리자입니다. Systemctl은 서비스를 관리하기 위해 사용할 수 있는 라이브러리, 데몬 및 유틸리티의 모음입니다.
서비스를 효과적으로 관리하려면 다음과 같은 다양한 서비스 상태를 알아야 합니다:
- 사용 가능 – 시스템 부팅 시 서비스가 구성되어 시작됨을 나타냅니다.
- 사용 안 함 – 시스템 부팅 시 서비스가 시작되지 않도록 구성되어 있음을 나타냅니다.
- 활성 – 서비스가 현재 실행 중인 상태임을 나타냅니다.
- 비활성 – 서비스가 현재 실행되고 있지 않지만 일부 응용 프로그램이 해당 서비스를 시작하려고 할 때 시작될 수 있음을 나타냅니다.
모든 서비스 나열
이제 서비스의 다양한 상태를 알았으므로 아마도 Ubuntu PC의 모든 서비스 목록을 보고 싶을 것입니다. 모든 서비스를 나열하면 서비스 관리를 준비하는 데 도움이 되는 몇 가지 정보가 제공됩니다.
터미널을 열고 아래 명령을 실행하여 서비스 단위(--type=service
)로 구성된 모든 서비스(활성, 실행 중, 종료 또는 실패)의 목록을 표시합니다.
이 튜토리얼에서 나중에 관리하려는 목록에서 서비스 중 하나를 선택하고 UNIT 이름(예: apache2)을 메모합니다. 스페이스바를 눌러 아래로 스크롤하거나 “Q” 키를 눌러 명령을 종료합니다.
그런데 여기에 Linux 셸 스크립팅에 대한 좋은 안내서가 있습니다.

서비스 목록 특정 상태로
모든 서비스를 나열하는 대신에, 서비스 목록을 좁히고 싶을 수도 있습니다. 그렇다면, --state
매개변수를 추가하면 됩니다. 이 매개변수는 지정한 특정 상태의 서비스를 필터링하므로 작동합니다.
아래 명령어 중 하나를 실행하여 모든 활성 서비스를 나열하세요 (--type=service --state=active
), 실행 중인 서비스와 종료된 서비스를 모두.

마찬가지로, 종료된 서비스 또는 실행 중인 서비스만 나열하려면 상태 값을 active
에서 running
또는 exited
로 변경하십시오. 다음 명령어에서와 같이:


활성화된 서비스 목록
활성, 실행 중, 종료된 서비스를 나열하는 것 외에도 grep
명령어를 사용하여 활성화되고 비활성화된 서비스를 나열할 수도 있습니다.
아래 명령어 중 하나를 실행하여 (list-unit-files
) 비활성화된
또는 활성화된
서비스를 나열하세요 (--type=service
).
아래에 표시된 활성화된 서비스를 주의 깊게 살펴보세요. 나중에 서비스를 비활성화할 때 필요하게 될 것입니다. 그러나 이 튜토리얼에서는 데모용으로 acpid.service를 사용합니다. acpid는 고급 구성 및 전원 인터페이스(ACPI) 이벤트를 지원하는 확장 가능한 데몬입니다.

서비스 속성 나열
서비스를 나열하는 것 외에도 서비스의 속성을 확인할 수 있습니다. 서비스 속성을 파악하면 문제 해결, 프로세스의 매개변수 또는 재시작 동작에 유용합니다.
아래 명령을 실행하여 서비스(acpid.service
)의 속성을 key=value 형식으로 표시
합니다.

이제 특정 서비스 속성만 찾고 있다면 속성 이름과 함께 -p
플래그를 전달할 수 있습니다.
아래 명령을 실행하여 서비스(acpid.service
)의 MainPID
속성을 표시
합니다.

특정 서비스 관리
서비스 나열의 기본 사항을 알았으니, 특정(단일) 서비스를 관리하는 시간입니다. systemctl stop
및 start
명령을 실행하여 특정 서비스를 관리합니다.
Apache 서비스 (apache2)는 다음 데모에 사용되지만 “모든 서비스 나열” 섹션에서 참고한 서비스를 자유롭게 관리할 수 있습니다. 하지만 서비스를 중지하거나 시작하기 전에 서비스의 상태를 확인해야 합니다.
터미널에서 아래 명령을 실행하여 apache2
서비스의 상세 정보를 확인할 수 있습니다.
아래에서 apache2 서비스가 활성화되어 실행 중인 것을 볼 수 있습니다.

서비스 상태를 확인하는 데에는 sudo 비밀번호 입력이 필요하지 않습니다. 서비스 상태를 변경하지 않기 때문입니다. 그러나 서비스를 시작, 중지 또는 다시 시작하려면 sudo 명령을 선행하고 sudo 비밀번호를 입력해야 합니다.
서비스 중지
백그라운드에서 실행 중인 서비스를 중지하려면 systemctl stop 명령을 사용해야 합니다. 아래 명령을 실행하여 apache2 서비스를 중지합니다.
여러 서비스를 동시에 중지하려면 다음과 같이 각 서비스를 공백으로 구분하여 지정하십시오:
sudo systemctl stop sshd apache2
. 이 명령에서는 sshd 및 apache2 서비스를 동시에 중지합니다.
이제 이전과 같이 systemctl status 명령을 실행하여 apache2 서비스가 중지되었는지 확인합니다.
아래에서 apache2 서비스의 상태가 비활성 (종료됨)으로 변경되어 있는 것을 확인할 수 있습니다. 이는 서비스가 중지되었음을 나타냅니다.

서비스 시작
이제 서비스가 전혀 실행되지 않는 것을 알게 되면 어떻게 시작할까요? 서비스를 중지하는 명령과 비슷한 명령인 systemctl start
명령을 실행합니다. 아래 명령을 실행하여 apache2
서비스를 시작
하세요.
여러 서비스를 중지하는 것과 마찬가지로, 하나의 명령 줄에서 여러 서비스를 시작할 수도 있습니다. 다음과 같이
stop
명령을start
명령으로 바꾸세요:sudo systemctl start sshd apache2
이제 systemctl status
명령을 한 번 더 실행하여 apache2
서비스가 실행 중인지 확인하세요.
아래와 같이 active (running) 상태가 표시된다면 서비스가 다시 가동되어 작동 중인 것입니다.

서비스를 중지하는 대신 서비스를 바로 재시작하려면
systemctl restart
명령을 사용하세요. 다음과 같이 입력하세요:sudo systemctl restart apache2
서비스의 활성화 또는 비활성화
시스템 부팅 시 시작하거나 시작을 방지하려는 특정 서비스가 있는 경우 systemctl enable
또는 disable
명령을 실행하는 것이 가장 좋습니다.
enable
하위 명령은 시스템의 기본 시작 설정을 구성하며, disable
하위 명령은 서비스가 시스템 부팅 시 실행되지 않도록 합니다.
systemctl
명령을 실행하여 “Listing Enabled Services” 섹션에서 확인한 서비스인 acpid.service
를 disable
하십시오. 명령을 실행하려면 sudo 암호를 입력하십시오.

이제 acpid.service가 OS-directed configuration 및 Power Management (OSPM)을 지원하므로 다시 활성화해야 합니다. 서비스를 활성화하는 명령은 서비스를 비활성화하는 것과 유사합니다.
systemctl
명령을 실행하여 acpid.service
를 enable
하는 것입니다. 이 명령은 시스템에서 서비스를 기본 시작 설정으로 다시 등록합니다.

결론
이 튜토리얼에서는 Ubuntu systemctl
명령을 실행하여 서비스를 빠르게 중지, 시작 또는 재시작할 수 있는 방법을 알아보았습니다. 또한 systemctl
명령을 사용하여 하나뿐만 아니라 여러 서비스를 동시에 관리할 수 있다는 것을 배웠습니다.
이 새로운 지식을 활용하여 Ubuntu 시스템에서 서비스를 자동화하는 것은 어떨까요?