systemd의 기본적인 용어 설명

Systemd의 Unit과 Soket에 대한 정리

unit

아래 항목에 대해 정보를 가지고 있는 것을 unit configuration file이라고 한다.

unit file에 적용 할 수 있는 공통적인 configuration option들은
unit file 내에 [Unit]이나 [Install] section에 정의 할 수 있다.
추가로 각각의 unit들은 specific한 section을 가질 수 있는데 service file의
[service]같은 것이다.

각 섹션 중 중요한 것을 알아보면,

[Unit]  
Requires= # 다른 unit들과 dependency를 정의하는 부분.
          # 다른 unit이 activation이 실패하면 같이 실패 됨.

Wants=    # Requires와 같은 기능을 하지만 다른 unit이 activation 실패해도 
          # 영향을 받지 않음. 따라서 다른 unit이 start-up할 때 hooking 하여
          # 같이 실행 될 때 사용함.

Before=   # dependency 있는 unit들을 ordering하는 속성.
After=    # 만약 foo.service unit에 Before=bar.service를 설정하면
          # foo.service가 다 strat-up 될 때 까지 bar.service unit은 delay 됨.
          # 죽, 내 before=로 설정한 unit 전에 실행 시키라는 속성.

[Install] # systemd의 runtime에 interpret되는 것이 아니라 unit을 설치하는 
          # systemd enable/disable command에 의해 영향을 받는 section

WantedBy=   # 이 option을 설정하면 systemlctl enable시 .wants/ .requires/
RequiredBy= # 폴더에 symbolic link를 생성해줌


socket

.socket 확장자를 갖는 unit configuration file로 아래와 같은 정보를 가지고 있다.

Example

Allowing units to be enabled
The following snippet (highlighted) allows a unit (e.g. foo.service)
to be enabled via systemctl enable:

[Unit]
Description=Foo

[Service]
ExecStart=/usr/sbin/foo-daemon>

[Install]
WantedBy=multi-user.target
After running systemctl enable,
a symlink /etc/systemd/system/multi-user.target.wants/foo.service
linking to the actual unit will be created.
It tells systemd to pull in the unit when starting multi-user.target.
The inverse systemctl disable will remove that symlink again.

references