Menu Close

16.6. 사용자 지정 유닛 파일 생성

단위 파일을 처음부터 생성하는 데는 몇 가지 사용 사례가 있습니다. 사용자 지정 데몬을 실행하고, sshd 서비스의 두 번째 인스턴스를 사용하여 사용자 지정 장치 파일 생성에서 몇 가지 기존 서비스의 두 번째 인스턴스를만들 수 있습니다.

반면 기존 단위의 동작을 수정하거나 확장하려는 경우 기존 장치 파일 수정 에서 명령을 사용하십시오.

절차

다음 절차에서는 사용자 지정 서비스를 생성하는 일반적인 프로세스를 설명합니다.

  1. 사용자 지정 서비스로 실행 파일을 준비합니다. 사용자 지정 스크립트 또는 소프트웨어 공급자가 제공하는 실행 파일일 수 있습니다. 필요한 경우 사용자 지정 서비스의 기본 프로세스에 대해 상수 PID를 유지하도록 PID 파일을 준비합니다. 서비스에 대한 쉘 변수를 저장할 환경 파일을 포함할 수도 있습니다. 소스 스크립트가 실행 가능하고( chmod a+x) 대화형이 아닌지 확인합니다.
  2. /etc/systemd/system/ 디렉터리에 유닛 파일을 만들고 올바른 파일 권한이 있는지 확인합니다. root 로 실행:

    touch /etc/systemd/system/name.service
    
    chmod 664 /etc/systemd/system/name.service

    name 을 생성할 서비스 이름으로 바꿉니다. 파일은 실행 파일일 필요가 없습니다.

  3. 이전 단계에서 만든이름.service 파일을 열고 서비스 구성 옵션을 추가합니다. 생성하려는 서비스 유형에 따라 사용할 수 있는 다양한 옵션이 있습니다. 단위 파일 구조를 참조하십시오.

    다음은 네트워크 관련 서비스의 유닛 구성 예입니다.

    [Unit]
    Description=service_description
    After=network.target
    
    [Service]
    ExecStart=path_to_executable
    Type=forking
    PIDFile=path_to_pidfile
    
    [Install]
    WantedBy=default.target

    다음과 같습니다.

    • service_description 은 저널 로그 파일과 systemctl status 명령의 출력에 표시되는 정보적 설명입니다.
    • after 설정 은 네트워크가 실행된 후에만 서비스가 시작되는지 확인합니다. 다른 관련 서비스 또는 대상의 공백으로 구분된 목록을 추가합니다.
    • path_to_executable 은 실제 실행 파일의 경로를 나타냅니다.
    • type=forking 은 fork 시스템 호출을 수행하는 데몬에 사용됩니다. 서비스의 기본 프로세스는 path_to_pidfile 에 지정된 PID를 사용하여 생성됩니다. 중요한 [서비스] 섹션에서 다른 시작 유형을 찾습니다.
    • WantedBy 는 서비스를 시작해야 하는 대상 또는 대상을 지정합니다. 이러한 대상을 실행 수준의 이전 개념을 대체하는 것으로 생각하십시오.
  4. root 로 다음 명령을 실행하여 이름.service 파일이 있음을 systemd 에 알립니다.

    systemctl daemon-reload
    
    systemctl start name.service
    주의

    새 장치 파일을 생성하거나 기존 유닛 파일을 수정한 후 항상 systemctl daemon-reload 명령을 실행합니다. 그러지 않으면 디스크의 systemd 및 실제 서비스 유닛 파일의 상태가 일치하지 않아 systemctl start 또는 systemctl enable 명령이 실패할 수 있었습니다. 참고: 많은 단위가 있는 시스템에서 이 작업은 각 단위의 상태를 직렬화하고 나중에 다시 로드하는 동안 역직렬화해야 하므로 시간이 오래 걸릴 수 있습니다.