파일 시스템을 마운트하기 전과 마운트 해제한 후에 systemd가 자동으로 프로그램을 호출하기를 원합니다 mount /mnt/test
(여기에서 테스트하기 위해 실제 환경에서 기본 장치의 잠금을 해제하기 위해 cryptsetup
).echo
그리고 /etc/systemd/system/stickbak-encryption.service
:
[Unit]
Description=stickbak encryption
Before=mnt-test.mount
StopWhenUnneeded=true
[Service]
Type=oneshot
ExecStart=/bin/echo Unlock device.
RemainAfterExit=true
ExecStop=/bin/echo Lock device.
[Install]
RequiredBy=mnt-test.mount
그리고 /etc/fstab
(일부):
/dev/$DEVICE /mnt/test auto noauto 0 0
systemctl start mnt-test.mount
이는 (데몬이 다시 로드되고 서비스가 활성화된 후) 및 systemctl stop mnt-test.mount
(루트로) 별도로 작동합니다.
mount /mnt/test
그러나 On은 systemctl status mnt-test.mount stickbak-encryption
후자의 서비스가 이고 inactive (dead)
, 전자가 임을 보여준다 active (mounted)
.
/bin/mount
호출 시에도 존중되는 종속성을 어떻게 설정할 수 있나요 ? 장착된 장치의 상태 표시가 mount /mnt/test
로 전환된 것으로 나타나 ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto
므로 systemd에 분명히 알립니다.
답변1
최근에도 같은 질문을 스스로에게 물어봤지만 곧 그렇지 않다는 것을 깨달았습니다.
mount
명령줄 프로그램을 사용할 때 systemd는 장치 mount
읽기 /etc/fstab
(또는 명령줄에서 옵션 가져오기) 및 마운트와 관련되지 않습니다. systemd 마운트 장치를 시작하면 systemd에 의해 해결되고 내부적으로 mount 시스템 호출을 사용하여 마운트를 수행합니다.
그래서 systemd는 당신이 그것을 사용할 때 개입할 방법이 없습니다 mount
.
그건 그렇고, using과 systemd 사이에는 흥미로운 차이점이 있습니다. 즉, mount
Systemd /etc/fstab
는 파일을 구문 분석하고 사용되는 설치 단위를 생성합니다. 이렇게 하면 mount
필요한 것보다 적은 수의 인수를 허용합니다.
systemd를 사용하는 경우에는 장치와 마운트 지점만 제공하면 되지만, mount
파일 시스템, 옵션 등 더 많은 옵션이 필요합니다.