Systemd를 사용하면 다음에 설명된 대로 템플릿 단위를 만들 수 있습니다.시스템 장치.
템플릿 셀에서는 많은 변수를 사용할 수 있습니다.
나는 다음에 관심이 있습니다 "%j"
:
이는 마지막 "-"와 접두사 이름 끝 사이의 문자열입니다.
"접두사 이름"도 정의됩니다.
인스턴스화된 셀의 경우 셀 이름의 첫 번째 "@" 문자 앞에 오는 문자열입니다.
나는 확신한다무엇그것들은 불분명하다왜그들은 존재합니다.
나는 그들이 동일한 서비스의 여러 버전을 실행하고 있다고 추측합니다. 이것이 어떻게 사용되는지에 대한 실제 사례는 무엇입니까?
답변1
.d/
장치 옆에 있는 디렉터리에 추가 설정이 있을 수 있습니다 . 예를 들어 foo.service
로 확장할 수 있습니다 foo.service.d/*.conf
.
템플릿 단위는 인스턴스와 템플릿이라는 두 개의 디렉터리를 사용하므로 [email protected]
두 디렉터리 모두에서 확장됩니다.[email protected]/*.conf
그리고 [email protected]/*.conf
. 이를 통해 셀의 모든 인스턴스 크기를 한 번에 조정할 수 있습니다. 두 경우 모두 장치와 확장 구성은 %i를 사용하여 "ttyS1" 비트를 얻을 수 있습니다.
그러나 일부 유닛은 템플릿화할 수 없습니다. 예를 들어 슬라이스(cgroup을 나타냄)는 user-<UID>.slice
대신 이름이 지정됩니다 user@<UID>.slice
. 왜냐하면 이러한 유닛의 이름은파일 시스템 경로(대시는 슬래시에 매핑되므로 "user-123.slice"는 "user.slice"의 하위입니다).
모든 개별 사용자 슬라이스를 구성할 수 있는 것이 바람직했기 때문에(예: 각 슬라이스에 x%의 메모리 제공) 클래스 경로 이름을 사용하는 유닛에 대해 유사한 메커니즘이 추가되었습니다. 위의 getty 예와 유사하게 유닛은 user-1000.slice
양쪽에서 확장될 수 있습니다.user-1000.slice.d/
그리고 user-.slice.d/
, 후자의 일반 디렉토리에 있는 파일은 %j를 사용하여 "1000" 비트를 얻을 수 있습니다.
마지막 예는 기본 시스템 설치에서 실제로 사용됩니다.
$ systemctl cat user-1000.slice
# /usr/lib/systemd/system/user-.slice.d/10-defaults.conf
[Unit]
Description=User Slice of UID %j
답변2
한 가지 예는 이름에서 경로를 참조하는 시스템 장치일 수 있습니다. 이러한 단위에서는 가 /
다음으로 대체됩니다 -
(그리고 선행은 -
제거됩니다). 예를 들어, 설치 단위의 /home/muru
이름은 입니다 home-muru.mount
. 마찬가지로 다음을 실행하면 다른 경로 기반 단위 이름을 볼 수 있습니다 systemctl list-units
.
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-virtual-misc-rfkill.device loaded active plugged /sys/devices/virtual/misc
sys-devices-virtual-tty-ttyprintk.device loaded active plugged /sys/devices/virtual/tty/
sys-module-configfs.device loaded active plugged /sys/module/configfs
sys-subsystem-net-devices-eth0.device loaded active plugged SMSC9512/9514 Fast Ethern
sys-subsystem-net-devices-wlan0.device loaded active plugged /sys/subsystem/net/device
많은 경우 경로의 마지막 구성 요소(예: 로 지정된 부분 %j
)가 셀 내에서 유용할 수 있습니다. 실제로 그 이름을 사용하는 사람이 있는지는 모르겠지만, 예를 들어 %j
, 또는 유사한 디렉토리에 대한 설정 단위 생성기의 사용자 이름을 얻는 것이 편리할 수 있습니다./home
/run/user