systemctl 개요
systemd는 시스템의 시작(부팅) 과정을 관리하고, 시스템 부팅 후 백그라운드에서 실행되는 모든 서비스(데몬)를 제어하는 init 시스템입니다. `systemctl`은 이러한 systemd의 기능을 명령줄에서 조작할 수 있도록 해주는 인터페이스입니다. 과거의 `service`, `chkconfig`, `reboot`, `shutdown` 등의 여러 명령어가 `systemctl` 하나로 통합되었습니다.
systemd 유닛(Unit) 이해
systemd는 관리하는 모든 것을 '유닛(Unit)'이라는 개념으로 추상화합니다. 각 유닛은 특정 서비스, 마운트 지점, 장치 등을 나타냅니다. 가장 흔히 다루는 유닛 유형은 `서비스 유닛(.service)`, `소켓 유닛(.socket)`, `마운트 유닛(.mount)`, `장치 유닛(.device)`, `타겟 유닛(.target)` 등입니다. 보통 `.service` 확장자는 생략하고 사용합니다.
systemctl의 주요 역할
- 서비스 상태 확인: 실행 중인 서비스, 활성화된 서비스, 실패한 서비스 등을 파악합니다.
- 서비스 제어: 서비스를 시작, 중지, 재시작, 리로드(설정 다시 읽기)합니다.
- 서비스 자동 실행 설정: 시스템 부팅 시 서비스가 자동으로 시작되도록 설정하거나 해제합니다.
- 시스템 전원 관리: 시스템을 재시작, 종료, 절전 모드로 전환합니다.
- 유닛 파일 관리: 유닛 파일의 위치, 종속성 등을 확인하고 수정합니다.
주요 systemctl 명령어 옵션
`systemctl` 명령어는 서비스 관리, 시스템 전원 제어, 유닛 파일 관리 등 다양한 기능을 위한 풍부한 옵션을 제공합니다. 대부분의 서비스 관련 명령어는 `sudo` 권한이 필요합니다.
1. 서비스 상태 및 제어
2. 서비스 자동 실행 설정
3. 시스템 전원 관리
4. 유닛 파일 및 목록
생성된 명령어:
명령어를 조합해 보세요.
설명:
`systemctl` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`systemctl` 명령어의 다양한 활용 예시들을 통해 systemd 기반 시스템에서 서비스를 효과적으로 관리하는 방법을 익혀보세요.
웹 서버 (Nginx) 서비스 상태 확인
systemctl status nginx.service
Nginx 웹 서버가 현재 실행 중인지, 비활성 상태인지, 오류가 발생했는지 등 상세 정보를 확인합니다.
MySQL 서비스 시작
sudo systemctl start mysql.service
MySQL 데이터베이스 서비스를 시작합니다.
SSH 서비스 재시작
sudo systemctl restart sshd.service
SSH(Secure Shell) 서비스를 재시작합니다. 설정 파일 변경 후 적용할 때 유용합니다.
Apache 웹 서버 자동 시작 설정
sudo systemctl enable apache2.service
시스템 부팅 시 Apache 웹 서버가 자동으로 시작되도록 설정합니다.
모든 활성 서비스 목록 확인
systemctl list-units --type=service --state=active
현재 시스템에서 'active' 상태(실행 중이거나 준비 완료)인 모든 서비스 유닛을 나열합니다.
systemd를 통한 시스템 재시작
sudo systemctl reboot
가장 권장되는 방식으로 시스템을 안전하게 재시작합니다.
특정 서비스 유닛 파일 내용 보기
systemctl cat redis-server.service
Redis 서비스의 systemd 유닛 파일(예: `/etc/systemd/system/redis.service`) 내용을 확인하여 서비스의 동작 방식을 이해합니다.