차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
systemd [2020/12/11 05:09] koovsystemd [2023/03/21 01:24] (현재) koov
줄 3: 줄 3:
  
 ''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 ===
줄 80: 줄 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 ====
줄 100: 줄 110:
 ===== 사용자 Unit ===== ===== 사용자 Unit =====
 <WRAP center round alert 60%> <WRAP center round alert 60%>
-현재 RHEL7 이상 버전에서는 이 방법이 작동하지 않습니다. RedHat 정책에 따라 사용자 Unit은 지원고 지 않습니다. +현재 RHEL7 이상 버전에서는 이 방법이 작동하지 않습니다. RedHat 정책에 따라 사용자 Unit은 비활성화 있습니다. 
-활성화 는 방법은 [[RHEL7 systemd user 활성화]] 문서를 참고하시기 바랍니다.+RHEL8은 지원된다고 되어있으나 사실상 사용기 어려운 실정입니다. 관련 내용은 아래 링크를 참고하시기 바랍니다. 
   * https://access.redhat.com/solutions/3461241   * https://access.redhat.com/solutions/3461241
   * https://access.redhat.com/solutions/3523861   * https://access.redhat.com/solutions/3523861
 +  * https://access.redhat.com/solutions/4661741
 +  * https://access.redhat.com/solutions/5101061
 +
 +일반 사용자가 sudo 명령어로 특정 서비스만 정지/기동 가능하게 설정하기
 +  * https://access.redhat.com/solutions/1293513
 +
 +Debian/Ubuntu 계열은 잘 동작합니다. :)
 </WRAP> </WRAP>
  
줄 115: 줄 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>
줄 146: 줄 164:
 </WRAP> </WRAP>
  
-=== 서비스가 항상 실행되도록 하기 === 
  
 +===== 참조링크 =====
 +  * https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd
 +  * https://www.freedesktop.org/software/systemd/man/systemd.directives.html
 +  * https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
 +
 +
 +===== 참고사례 =====
 +==== kavita ====
 +백그라운드 프로세스 동작 시키는 스크립트
  
 <WRAP prewrap> <WRAP prewrap>
-<code bash+<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> </code>
 </WRAP> </WRAP>
  
- 
-===== 참조링크 ===== 
-  * https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd 
-  * https://www.freedesktop.org/software/systemd/man/systemd.directives.html 
-  * https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files 
  
  
  • systemd.1607663369.txt.gz
  • 마지막으로 수정됨: 2020/12/11 05:09
  • 저자 koov