Service

wwiki
이동: 둘러보기, 검색

/lib/systemd/system : .service, .socket파일 경로 (enable시키면 링크파일 생성-> /etc/systemd/system/multi-user.target.wants/xxxx.service)

/usr/lib/systemd/user: user영역 .service파일(데비안 계열에서만 존재, enable 하면 ~/.config/systemd/user/multi-user.target.wants/에 링크생성), root로 실행권한은 없는 듯하다.

/etc/init.d/

서비스 파일[편집 | 원본 편집]

[Unit][편집 | 원본 편집]

Requires[편집 | 원본 편집]

상위 의존성을 구성한다. 목록의 유닛이 정상적일 경우 유닛이 시작된다. (필요 조건), network-online.target docker.service

Wants[편집 | 원본 편집]

"Requires=" 보다 다소 완화된 옵션이다. 상위 의존성의 유닛이 시작되지 않더라도 전체 수행과정에 영향을 끼치지 않는다. 이 옵션은 하나의 유닛을 다른 유닛과 연계할 경우 사용하게 된다. (충분 조건)

Before, After[편집 | 원본 편집]

유닛 시작의 전후 관계를 설정한다. 해당 설정은 "Requires=" 설정과는 독립적이다. "Before=" 에 나열된 유닛이 시작되기 전에 실행하고 "After=" 은 해당 유닛이 시작된 이후 나열된 유닛이 실행한다. 이 설정은 시스템이 종료(shutdown) 될때는 역으로 작동하게 된다.

[Service][편집 | 원본 편집]

RestartSec[편집 | 원본 편집]

재시작 명령을 수행할때 중지 이후 다시 시작하는데 대기(sleep)하는 시간을 설정한다. 기본값은 "100ms" 이다. 각각 “min”, “s”, “ms” 단위로 설정한다. 해당 설정은 Restart= 옵션이 있는 경우에만 적용된다.

Restart[편집 | 원본 편집]

[no|on-success|on-failure|on-watchdog|on-abort|always]

유닛이 죽었을때나 혹은 "WatchdogSec=" 만큼의 시간 동안 응답이 없는 경우 재시작한다. "ExecStartPre=", "ExecStartPost=", "ExecStopPre=", "ExecStopPost=", "ExecReload=" 에 설정된 유닛의 경우에는 포함되지 않는다. 즉 해당 유닛에만 해당된다.

"no" (기본값), 유닛을 다시 시작하지 않는다.

"on-success" 는 유닛이 정상적으로 종료되었을 때만 재시작한다. 종료시에 "0" 값을 리턴하여 종료되었거나 SIGHUP, SIGINT, SIGTERM, SIGPIPE 등과 같은 시그널 또는 "SuccessExitStatus=" 설정에서 지정된 리턴 코드 목록에 따른 시그널에 대해서 모두 성공으로 인식해 재시작을 하게 된다.

"on-failure" 유닛이 비정상적으로 종료되었을때 재시작한다. 리턴값이 "0" 이 아닌 경우, core dump 와 같이 비정상적인 시그널을 받고 종료된 경우, 타임 아웃값내 응답이 없는 경우 등일때 재시작 하게 된다.

"on-watchdog" "WatchdogSec=" 에 설정된 시간내 응답이 없는 경우에만 재시작 한다.

"on-abort" 지정되지 않은 리턴값을 받은 경우 재시작을 한다.

"always" 종료 상태 등과 무관하게 무조건 재시작한다. (사용자가 중지해도 시스템이 다시 띄우게 된다. 설정된 유닛 중지 시 주의가 필요하다.)

WorkingDirectory[편집 | 원본 편집]

프로세스의 작업 디렉토리를 지정한다. 별도의 지정이 없으면 유닛은 "/" 디렉토리를 작업 디렉토리로 사용한다. 특정 디렉토리에서 실행해야하는 프로세스에서 필요하다.

SyslogFacility[편집 | 원본 편집]

로그 사설을 설정할 수 있다. "kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0, local1, local2, local3, local4, local5, local6, local7" 등의 값으로 설정 가능하다.

SyslogIdentifier[편집 | 원본 편집]

User[편집 | 원본 편집]

서비스를 실행할 사용자를 지정한다.

www-data

CPUQuota[편집 | 원본 편집]

CPU할당량을 %로 제한한다.

LimitCORE[편집 | 원본 편집]

기본값은 infinity로 숫자형식의 값을 변경해서 코어수를 제한한다. systemctl status 명령으로 CGroup의 프로세스 아이디가 설정한 코어수+1임을 확인할 수 있다.

[Install][편집 | 원본 편집]

systemctl enable [service name] 명령 실행할 때 참조한다.

WantedBy[편집 | 원본 편집]

이 서비스가 어떤 전제 조건 하에서 실행되는 지를 결정하는 프로퍼티이다.

  • network.target : network가 active 되었을 때, 여러 네트워크가 있을 때 하나만 활성화되어서 실행된다.
  • multi-user.target : runlevel3 환경이 셋업될 때
  • network-online.target : network가 online