차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
systemd [2020/12/11 06:05] koovsystemd [2023/03/21 01:24] (현재) koov
줄 4: 줄 4:
 ''Systemd'' 는 Linux 운영 체제 용 시스템 및 서비스 관리자입니다. ''SysV init'' 스크립트와 역 호환되도록 설계되었으며 부팅시 시스템 서비스의 병렬 시작, 데몬의 주문형 활성화 또는 종속성 기반 서비스 제어 논리와 같은 다양한 기능을 제공합니다. **Red Hat Enterprise Linux 7에서 systemd는 기본 init 시스템으로 Upstart를 대체합니다.** ''Systemd'' 는 Linux 운영 체제 용 시스템 및 서비스 관리자입니다. ''SysV init'' 스크립트와 역 호환되도록 설계되었으며 부팅시 시스템 서비스의 병렬 시작, 데몬의 주문형 활성화 또는 종속성 기반 서비스 제어 논리와 같은 다양한 기능을 제공합니다. **Red Hat Enterprise Linux 7에서 systemd는 기본 init 시스템으로 Upstart를 대체합니다.**
  
 +===== 개요 =====
 +
 +  * [[Systemd Unit 옵션]]
 +  * [[Systemd 를 이용한 디렉토리/파일 모니터링 이벤트]]
 +  * [[Systemd journal log 저장]]
 +  * [[Systemd journal log 활용]]
 +
 +===== Systemd 기본 정보 =====
  
 === Unit type === === Unit type ===
줄 81: 줄 89:
 ==== [Service] Section ==== ==== [Service] Section ====
 === [Service] Section keyword === === [Service] Section keyword ===
-^ 지시어           ^ 기술                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ^+^ 지시어               ^ 기술                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ^
 | ''Type''             | ''ExecStart'' 기능 및 관련 옵션에 영향을 미치는 단위 프로세스 시작 유형을 구성합니다.\\ * ''simple'' – 기본값입니다. ''ExecStart''로 시작된 프로세스는 서비스의 주요 프로세스입니다.\\ * ''forking'' – ''ExecStart''로 시작된 프로세스는 서비스의 기본 프로세스가 되는 하위 프로세스를 생성합니다. 시작이 완료되면 상위 프로세스가 종료됩니다.\\ * ''oneshot'' – 이 유형은 ''simple''과 유사 하지만 후속 장치를 시작하기 전에 프로세스가 종료됩니다.\\ * ''dbus'' – 이 유형은 ''simple''과 유사 하지만 주 프로세스가 D-Bus 이름을 얻은 후에 만 ​​시작됩니다.\\ * ''notify'' – 이 유형은 ''simple''과 유사 하지만 ''sd_notify()'' 함수를 통해 알림 메시지를 보낸 후에 만 ​​시작됩니다.\\ * ''idle'' – ''simple''과 유사하게 모든 작업이 완료 될 때까지 서비스 바이너리의 실제 실행이 지연되어 상태 출력과 서비스의 셸 출력이 혼합되는 것을 방지합니다.  | | ''Type''             | ''ExecStart'' 기능 및 관련 옵션에 영향을 미치는 단위 프로세스 시작 유형을 구성합니다.\\ * ''simple'' – 기본값입니다. ''ExecStart''로 시작된 프로세스는 서비스의 주요 프로세스입니다.\\ * ''forking'' – ''ExecStart''로 시작된 프로세스는 서비스의 기본 프로세스가 되는 하위 프로세스를 생성합니다. 시작이 완료되면 상위 프로세스가 종료됩니다.\\ * ''oneshot'' – 이 유형은 ''simple''과 유사 하지만 후속 장치를 시작하기 전에 프로세스가 종료됩니다.\\ * ''dbus'' – 이 유형은 ''simple''과 유사 하지만 주 프로세스가 D-Bus 이름을 얻은 후에 만 ​​시작됩니다.\\ * ''notify'' – 이 유형은 ''simple''과 유사 하지만 ''sd_notify()'' 함수를 통해 알림 메시지를 보낸 후에 만 ​​시작됩니다.\\ * ''idle'' – ''simple''과 유사하게 모든 작업이 완료 될 때까지 서비스 바이너리의 실제 실행이 지연되어 상태 출력과 서비스의 셸 출력이 혼합되는 것을 방지합니다.  |
-| ''ExecStart''        | 장치가 시작될 때 실행할 명령 또는 스크립트를 지정합니다. ''ExecStartPre'' 와 ''ExecStartPost''는 ''ExecStart'' 전, 후에 실행되는 사용자 지정 명령을 지정합니다. ''Type=oneshot''는 순차적으로 실행되는 여러 사용자 지정 명령을 지정할 수 있습니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +| ''ExecStart''        | 장치가 시작될 때 실행할 명령 또는 스크립트를 지정합니다. ''ExecStartPre'' 와 ''ExecStartPost''는 ''ExecStart'' 전, 후에 실행되는 사용자 지정 명령을 지정합니다. ''Type=oneshot''는 순차적으로 실행되는 여러 사용자 지정 명령을 지정할 수 있습니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
-| ''ExecStop''         | 장치가 중지 될 때 실행할 명령 또는 스크립트를 지정합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                +| ''ExecStop''         | 장치가 중지 될 때 실행할 명령 또는 스크립트를 지정합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
-| ''ExecReload''       | 장치를 다시로드 할 때 실행할 명령 또는 스크립트를 지정합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +| ''ExecReload''       | 장치를 다시로드 할 때 실행할 명령 또는 스크립트를 지정합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
-| ''Restart''          | 이 옵션을 사용하면 ''systemctl''명령에 의한 깨끗한 중지를 제외하고 프로세스가 종료 된 후 서비스가 다시 시작됩니다 .                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +| ''Restart''          | 이 옵션을 사용하면 ''systemctl''명령에 의한 깨끗한 중지를 제외하고 프로세스가 종료 된 후 서비스가 다시 시작됩니다 .                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
-| ''RemainAfterExit''  | ''True''로 설정하면 모든 프로세스가 종료 된 경우에도 서비스가 활성 상태로 간주됩니다. 기본값은 ''False''입니다. 이 옵션은 ''Type=oneshot''가 구성된 경우 특히 유용 합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |+| ''RemainAfterExit''  | ''True''로 설정하면 모든 프로세스가 종료 된 경우에도 서비스가 활성 상태로 간주됩니다. 기본값은 ''False''입니다. 이 옵션은 ''Type=oneshot''가 구성된 경우 특히 유용 합니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 
 +| limit                | LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=, LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=, LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=, LimitRTTIME=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  
 ==== [Install] Section ==== ==== [Install] Section ====
줄 101: 줄 110:
 ===== 사용자 Unit ===== ===== 사용자 Unit =====
 <WRAP center round alert 60%> <WRAP center round alert 60%>
-현재 RHEL7 이상 버전에서는 이 방법이 작동하지 않습니다. RedHat 정책에 따라 사용자 Unit은 지원고 지 않습니다.+현재 RHEL7 이상 버전에서는 이 방법이 작동하지 않습니다. RedHat 정책에 따라 사용자 Unit은 비활성화 있습니다.
 RHEL8은 지원된다고 되어있으나 사실상 사용하기 어려운 실정입니다. 관련 내용은 아래 링크를 참고하시기 바랍니다. RHEL8은 지원된다고 되어있으나 사실상 사용하기 어려운 실정입니다. 관련 내용은 아래 링크를 참고하시기 바랍니다.
  
줄 124: 줄 133:
 <WRAP prewrap> <WRAP prewrap>
 <code vim> <code vim>
-    [Unit] +[Unit] 
-    Description=JBoss EAP Systemctl script +Description=JBoss EAP Systemctl script 
-    After=NetworkManager.service+After=NetworkManager.service
  
-    [Service] +[Service] 
-    Type=forking +Type=forking 
-    ExecStart=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh start +ExecStart=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh start 
-    ExecStop=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh stop +ExecStop=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh stop 
-    ExecReload=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh restart +ExecReload=/opt/server/jboss-eap-6/bin/init.d/jboss-as-standalone.sh restart 
-    PIDFile=/var/run/jboss-as/jboss-as-standalone.pid+PIDFile=/var/run/jboss-as/jboss-as-standalone.pid
  
-    TimeoutStartSec=600 +TimeoutStartSec=600 
-    TimeoutStopSec=600    +TimeoutStopSec=600    
  
-    [Install] +[Install] 
-    WantedBy=multi-user.target+WantedBy=multi-user.target
 </code> </code>
 </WRAP> </WRAP>
줄 160: 줄 169:
   * https://www.freedesktop.org/software/systemd/man/systemd.directives.html   * https://www.freedesktop.org/software/systemd/man/systemd.directives.html
   * https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files   * https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
 +
 +
 +===== 참고사례 =====
 +==== kavita ====
 +백그라운드 프로세스 동작 시키는 스크립트
 +
 +<WRAP prewrap>
 +<code vim>
 +[Unit]
 +Description=Kavita Daemon
 +
 +[Service]
 +User=root
 +WorkingDirectory=/Kavita
 +Type=simple
 +ExecStart=/Kavita/Kavita
 +PIDFile=/Kavita/Kavita.pid
 +Restart=on-failure
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +</WRAP>
 +
  
  
  • systemd.1607666735.txt.gz
  • 마지막으로 수정됨: 2020/12/11 06:05
  • 저자 koov