중지/마운트 해제 시 마운트 장치를 삭제할 때 자동으로 마운트 지점 생성

중지/마운트 해제 시 마운트 장치를 삭제할 때 자동으로 마운트 지점 생성

systemd나는 자동으로 생성된 마운트 지점 도 자동으로 삭제될 것이라는 잘못된 가정하에 작업하고 있었습니다 . 마운트 지점이 아직 존재하지 않는 경우 마운트 장치에 대한 마운트 지점을 생성하는 방법을 배웠을 때 장치가 마운트되기 전과 마운트 해제된 후에 마운트 지점이 생성되고 삭제되는 systemdmacOS처럼 동작한다는 것을 알았습니다 ./Volumes

내 Linux 설정 중 하나는 마운트 장치를 통해 구성되거나 fstab특정 순간에 어느 것이 더 좋아 보이는지에 따라 tmpfs를 에 마운트합니다 /mnt. 이것은 내 것과 동일합니다 /Volumes. 내 장착 장치는 /mnt/<mount point name>각각의 장착 지점 역할을 합니다. /dev/cdrom에 마운트하는 것이 그 예입니다 . (측면 요청: 누군가 mount 와 같은 도구를 사용하여 /mnt/cdrom루트가 아닌 마운트를 수행하는 방법을 알려줄 수 있다면 좋을 것입니다 .)udisksctl/mnt

마운트된 장치가 "중지"될 때 자체 마운트 지점을 호출 하는 각 마운트된 장치 파일에 추가할 수 있는 지시문 형식으로 솔루션을 찾으려고 했지만 rmdir콘텐츠를 찾은 검색 결과에는 명확한 내용이 없습니다. ExecStop설치유닛을 인식할 수 없습니다 systemctl.

systemd이러한 상황에서 개발자를 위한 특별한 솔루션이 있기를 바랍니다 .

답변1

이 작업을 수행하는 기본 제공 방법은 모르지만 서비스 템플릿 파일을 사용하여 수행할 수 있습니다.

# /etc/systemd/system/[email protected]
[Unit]
Description=Remove mount point when stopped
Before=%i.mount
PartOf=%i.mount

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=rmdir %f

[Unit]그런 다음 장치가 설치된 섹션 에 다음 줄을 추가할 수 있습니다 .

Wants=cleanup-mount-point@%N.service

그 중 %N마운팅 유닛의 이름은 %i위 서비스 템플릿의 이름이 됩니다.

또는 모험을 즐기고 싶다면 포함된 파일을 사용하여 설치된 모든 장치에 적용할 수 있습니다.

# /etc/systemd/system/mount.d/10-cleanup-mount-points.conf
[Unit]
Wants=cleanup-mount-point@%i.service

관련 정보