양쪽 이전 판 이전 판 다음 판 | 이전 판 |
systemd_unit_옵션 [2020/12/11 06:44] – koov | systemd_unit_옵션 [2023/09/05 01:45] (현재) – koov |
---|
* ''Requires='' - 상위 의존성을 구성한다. 목록의 유닛이 정상적일 경우 유닛이 시작된다. (필요 조건) | * ''Requires='' - 상위 의존성을 구성한다. 목록의 유닛이 정상적일 경우 유닛이 시작된다. (필요 조건) |
* ''RequiresOverridable='' - ''Requires='' 옵션과 유사하다. 하지만 이 경우 **사용자에 의해서** 서비스가 시작하는데 상위 의존성이 있는 유닛 구동에 실패 하더라도 이를 무시하고 유닛을 시작한다. (즉 상위 의존성을 무시한다.) 자동 시작의 경우 적용 되지 않는다. | * ''RequiresOverridable='' - ''Requires='' 옵션과 유사하다. 하지만 이 경우 **사용자에 의해서** 서비스가 시작하는데 상위 의존성이 있는 유닛 구동에 실패 하더라도 이를 무시하고 유닛을 시작한다. (즉 상위 의존성을 무시한다.) 자동 시작의 경우 적용 되지 않는다. |
* ''Requisite='', ''RequisiteOverridable='' - ''Requires='' 와 "RequiresOverridable=" 와 유사하다. 상위 의존성 유닛이 시작되지 않은 경우 즉시 실패를 반환한다. | * ''Requisite='', ''RequisiteOverridable='' - ''Requires='' 와 ''RequiresOverridable='' 와 유사하다. 상위 의존성 유닛이 시작되지 않은 경우 즉시 실패를 반환한다. |
* ''Wants='' - ''Requires='' 보다 다소 완화된 옵션이다. 상위 의존성의 유닛이 시작되지 않더라도 전체 수행과정에 영향을 끼치지 않는다. 이 옵션은 하나의 유닛을 다른 유닛과 연계할 경우 사용하게 된다. (충분 조건) | * ''Wants='' - ''Requires='' 보다 다소 완화된 옵션이다. 상위 의존성의 유닛이 시작되지 않더라도 전체 수행과정에 영향을 끼치지 않는다. 이 옵션은 하나의 유닛을 다른 유닛과 연계할 경우 사용하게 된다. (충분 조건) |
* ''BindsTo='' - ''Requires='' 와 매우 유사하다. systemd 개입 없이 갑작기 서비스가 사라진 경우 (가령 NIC 가 물리적 장애가 난 경우) 해당 유닛도 같이 중지 하도록 설정하도록 한다. | * ''BindsTo='' - ''Requires='' 와 매우 유사하다. systemd 개입 없이 갑작기 서비스가 사라진 경우 (가령 NIC 가 물리적 장애가 난 경우) 해당 유닛도 같이 중지 하도록 설정하도록 한다. |
* ''Conflicts='' - 역의 관계를 설정한다. 만일 **유닛1** 의 ''Conflicts='' 설정이 **유닛2** 로 되어 있다면 **유닛1**이 시작된 경우 **유닛2**가 중지되고, **유닛1**이 중지된 경우 **유닛2**가 시작한다. 이 옵션은 ''After='' 와 ''Before='' 옵션과는 독립적으로 작동한다. 각 서비스가 반대의 역활을 하거나 혹은 보조적인 서비스 역활을 수행한다면 서비스 실행 관리에 편리할 것 같다. | * ''Conflicts='' - 역의 관계를 설정한다. 만일 **유닛1** 의 ''Conflicts='' 설정이 **유닛2** 로 되어 있다면 **유닛1**이 시작된 경우 **유닛2**가 중지되고, **유닛1**이 중지된 경우 **유닛2**가 시작한다. 이 옵션은 ''After='' 와 ''Before='' 옵션과는 독립적으로 작동한다. 각 서비스가 반대의 역활을 하거나 혹은 보조적인 서비스 역활을 수행한다면 서비스 실행 관리에 편리할 것 같다. |
* ''Before='', ''After='' - 유닛 시작의 전후 관계를 설정한다. 해당 설정은 ''Requires='' 설정과는 독립적이다. ''Before='' 에 나열된 유닛이 시작되기 전에 실행하고 ''After='' 은 해당 유닛이 시작된 이후 나열된 유닛이 실행한다. 이 설정은 시스템이 종료(shutdown) 될때는 역으로 작동하게 된다. | * ''Before='', ''After='' - 유닛 시작의 전후 관계를 설정한다. 해당 설정은 ''Requires='' 설정과는 독립적이다. ''Before='' 에 나열된 유닛이 시작되기 전에 실행하고 ''After='' 은 해당 유닛이 시작된 이후 나열된 유닛이 실행한다. 이 설정은 시스템이 종료(shutdown) 될때는 역으로 작동하게 된다. |
* ''OnFailure='' - 해당 유닛이 **실패** 상태가 되면 수행할 유닛 목록 (예 "/" 파일 시스템 마운트 실패시 복구 모드 수행) | * ''OnFailure='' - 해당 유닛이 **실패** 상태가 되면 수행할 유닛 목록 (예 ''/'' 파일 시스템 마운트 실패시 복구 모드 수행) |
* ''PropagatesReloadTo='', ''ReloadPropagatedFrom='' - 리로드(reload) 명령을 다른 유닛에게 전달하거나 혹은 전달받아 해당 유닛도 리로드(reload)하게 된다. | * ''PropagatesReloadTo='', ''ReloadPropagatedFrom='' - 리로드(reload) 명령을 다른 유닛에게 전달하거나 혹은 전달받아 해당 유닛도 리로드(reload)하게 된다. |
* ''RequiresMountsFor='' - 절대 경로로 지정하여 유닛을 구동하는데 필요한 마운트 목록을 자동으로 구성하여 ''Requires='', ''After='' 을 수행한다. 즉 필요한 마운트 경로가 준비되어 있는지 점검하고 마운트를 미리 진행한다. | * ''RequiresMountsFor='' - 절대 경로로 지정하여 유닛을 구동하는데 필요한 마운트 목록을 자동으로 구성하여 ''Requires='', ''After='' 을 수행한다. 즉 필요한 마운트 경로가 준비되어 있는지 점검하고 마운트를 미리 진행한다. |
* ''ExecStart='' - 구동 명령어(스크립트)을 선언한다. 실행 명령어는 반드시 절대 경로 또는 변수(${STRINGS} 따위) 로 시작해야 한다. 다중 명령어를 지원한다. 예제는 아래와 같다. | * ''ExecStart='' - 구동 명령어(스크립트)을 선언한다. 실행 명령어는 반드시 절대 경로 또는 변수(${STRINGS} 따위) 로 시작해야 한다. 다중 명령어를 지원한다. 예제는 아래와 같다. |
<code> | <code> |
ExecStart="commnad 1; command 2; command 3” 또는 | ExecStart="commnad 1; command 2; command 3" 또는 |
ExecStart="commnad 1” | ExecStart="commnad 1" |
ExecStart="command 2” | ExecStart="command 2" |
</code> | </code> |
* ''ExecStop='' - 중지 명령어(스크립트)를 선언한다. ''ExecStart='' 동일하게 사용하면 된다. 중지 방식은 ''KillMode='' 로 지정된다. | * ''ExecStop='' - 중지 명령어(스크립트)를 선언한다. ''ExecStart='' 동일하게 사용하면 된다. 중지 방식은 ''KillMode='' 로 지정된다. |
* ''TimeoutStopSec='' - 옵션을 중지하는데 대기하는 시간을 설정한다. 기본값은 ''90초(90s)''로 위의 ''TimeoutStartSec='' 옵션과 동일하게 ''TimeoutStopSec=0'' 으로 설정하면 무한정 리턴값을 기다리게 된다. ''TimeoutStopSec'' 옵션에 설정된 값 안에 종료되지 않으면 SIGKILL 시그널을 보내서 강제로 종료하게 된다. | * ''TimeoutStopSec='' - 옵션을 중지하는데 대기하는 시간을 설정한다. 기본값은 ''90초(90s)''로 위의 ''TimeoutStartSec='' 옵션과 동일하게 ''TimeoutStopSec=0'' 으로 설정하면 무한정 리턴값을 기다리게 된다. ''TimeoutStopSec'' 옵션에 설정된 값 안에 종료되지 않으면 SIGKILL 시그널을 보내서 강제로 종료하게 된다. |
* ''TimeoutSec='' - ''TimeoutStartSec='' 와 ''TimeoutStopSec='' 을 동시에 설정한다. | * ''TimeoutSec='' - ''TimeoutStartSec='' 와 ''TimeoutStopSec='' 을 동시에 설정한다. |
* ''WatchdogSec='' - 유닛이 시작된 이후 유닛 상태 감시(keep-alive ping)할때의 상태 값을 리턴하는데 대기하는 시간을 설정한다. ''Restart='' 옵션이 ''on-failure'', ''always'' 인 경우 유닛을 자동으로 재시작하게되고 이때 ''WatchdogSec='' 설정을 해주어야 한다. 기본값은 "0" 으로 유닛 상태 감시를 사용하지 않는다. | * ''WatchdogSec='' - 유닛이 시작된 이후 유닛 상태 감시(keep-alive ping)할때의 상태 값을 리턴하는데 대기하는 시간을 설정한다. ''Restart='' 옵션이 ''on-failure'', ''always'' 인 경우 유닛을 자동으로 재시작하게되고 이때 ''WatchdogSec='' 설정을 해주어야 한다. 기본값은 ''0'' 으로 유닛 상태 감시를 사용하지 않는다. |
* ''Restart=[no|on-success|on-failure|on-watchdog|on-abort|always]'' - 유닛이 죽었을때나 혹은 ''WatchdogSec='' 만큼의 시간 동안 응답이 없는 경우 재시작한다. ''ExecStartPre='', ''ExecStartPost=', ''ExecStopPre='', ''ExecStopPost='', ''ExecReload='' 에 설정된 유닛의 경우에는 포함되지 않는다. 즉 해당 유닛에만 해당된다. | * ''Restart=[no|on-success|on-failure|on-watchdog|on-abort|always]'' - 유닛이 죽었을때나 혹은 ''WatchdogSec='' 만큼의 시간 동안 응답이 없는 경우 재시작한다. ''ExecStartPre='', ''ExecStartPost='', ''ExecStopPre='', ''ExecStopPost='', ''ExecReload='' 에 설정된 유닛의 경우에는 포함되지 않는다. 즉 해당 유닛에만 해당된다. |
* ''no'' (기본값), 유닛을 다시 시작하지 않는다. | * ''no'' (기본값), 유닛을 다시 시작하지 않는다. |
* ''on-success'' 는 유닛이 정상적으로 종료되었을 때만 재시작한다. 종료시에 ''0'' 값을 리턴하여 종료되었거나 ''SIGHUP'', ''SIGINT'', ''SIGTERM'', ''SIGPIPE'' 등과 같은 시그널 또는 ''SuccessExitStatus=' 설정에서 지정된 리턴 코드 목록에 따른 시그널에 대해서 모두 성공으로 인식해 재시작을 하게 된다. | * ''on-success'' 는 유닛이 정상적으로 종료되었을 때만 재시작한다. 종료시에 ''0'' 값을 리턴하여 종료되었거나 ''SIGHUP'', ''SIGINT'', ''SIGTERM'', ''SIGPIPE'' 등과 같은 시그널 또는 ''SuccessExitStatus='' 설정에서 지정된 리턴 코드 목록에 따른 시그널에 대해서 모두 성공으로 인식해 재시작을 하게 된다. |
* ''on-failure'' 유닛이 비정상적으로 종료되었을때 재시작한다. 리턴값이 ''0'' 이 아닌 경우, core dump 와 같이 비정상적인 시그널을 받고 종료된 경우, 타임 아웃값내 응답이 없는 경우 등일때 재시작 하게 된다. | * ''on-failure'' 유닛이 비정상적으로 종료되었을때 재시작한다. 리턴값이 ''0'' 이 아닌 경우, core dump 와 같이 비정상적인 시그널을 받고 종료된 경우, 타임 아웃값내 응답이 없는 경우 등일때 재시작 하게 된다. |
* ''on-watchdog'' ''WatchdogSec='' 에 설정된 시간내 응답이 없는 경우에만 재시작 한다. | * ''on-watchdog'' ''WatchdogSec='' 에 설정된 시간내 응답이 없는 경우에만 재시작 한다. |
| |
===== 참조링크 ===== | ===== 참조링크 ===== |
| * https://www.freedesktop.org/software/systemd/man/systemd.unit.html |
| * https://www.freedesktop.org/software/systemd/man/systemd.service.html |
* https://fmd1225.tistory.com/93 | * https://fmd1225.tistory.com/93 |
| |
| |