# systemd 유닛과 systemctl

> systemd 유닛이 무엇인지, 일반적인 유닛 유형은 무엇인지, 그리고 systemctl을 사용하여 서비스를 시작, 중지, 활성화 및 검사하는 방법을 설명합니다.

systemd 유닛은 대부분의 Linux 배포판의 초기화 시스템인 systemd가 관리하는 구성 객체로, 서비스, 소켓, 타이머, 마운트 등을 포함합니다. 유닛은 /etc/systemd/system/<name>.service와 같은 유닛 파일로 설명되며 systemctl 명령어로 제어됩니다.

## 유닛 유형

.service는 프로그램을 실행하고, .socket은 연결이 도착할 때 서비스를 시작하며, .timer는 일정에 따라 유닛을 실행하고, .mount 및 .automount는 파일 시스템을 처리하며, .target은 multi-user.target과 같은 상태로 유닛들을 그룹화합니다.

## 유닛 파일의 저장 위치

패키지는 /usr/lib/systemd/system(또는 /lib/systemd/system)에 유닛을 설치합니다. 로컬 변경 사항은 우선순위가 더 높은 /etc/systemd/system에 위치해야 합니다. 'systemctl edit <unit>'은 패키지된 파일을 직접 변경하는 대신 드롭인 오버라이드를 생성합니다.

## 일상적인 명령어

'systemctl status <unit>'은 상태와 최근 로그 라인을 보여줍니다. 'start', 'stop', 'restart'는 즉시 작동하며, 'enable'과 'disable'은 부팅 시 시작 여부를 제어하고, 'enable --now'는 두 작업 모두를 수행합니다. 'systemctl --failed'는 실패한 유닛 목록을 나열하며, 'systemctl daemon-reload'는 변경 사항이 있은 후 유닛 파일을 다시 읽어옵니다.

## 실패하는 서비스 확인 방법

1. 실패한 유닛 목록 확인: systemctl --failed
2. 상태 및 최근 메시지 표시: systemctl status <unit>
3. 이번 부팅의 전체 로그 읽기: journalctl -u <unit> -b
4. 설정 수정 후: sudo systemctl restart <unit>

## 주의 사항

- /usr/lib/systemd/system의 파일을 직접 편집하지 말고 'systemctl edit'을 사용하여 패키지된 유닛을 변경하세요. 업데이트 시 파일이 덮어씌워집니다.
- systemd-journald나 dbus와 같이 알지 못하는 유닛은 비활성화하지 마세요.

## 출처

- [systemctl(1)](https://man7.org/linux/man-pages/man1/systemctl.1.html)
- [systemd.unit(5)](https://man7.org/linux/man-pages/man5/systemd.unit.5.html)
- [systemd.timer(5)](https://man7.org/linux/man-pages/man5/systemd.timer.5.html)

최종 업데이트: 2026-10-08
URL: https://raincleaner.eu/ko/wiki/linux/systemd-units
