Rain WikiWindows · Linux · Android

systemd 유닛과 systemctl

서비스systemd 사용 배포판

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

1유닛 유형

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

2유닛 파일의 저장 위치

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

3일상적인 명령어

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와 같이 알지 못하는 유닛은 비활성화하지 마세요.

출처

  1. systemctl(1) man7.org
  2. systemd.unit(5) man7.org
  3. systemd.timer(5) man7.org

최종 검토: