%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B6%80%ED%8C%85%20%EC%8B%9C%20tmpfs%20%ED%8F%B4%EB%8D%94%20%EB%A7%88%EC%9A%B4%ED%8A%B8.png)
현재 Debian 9.5와 이 fstab
파일을 사용하고 있습니다:
# /etc/fstab: static file system information.
#
/dev/mmcblk1p1 / ext4 noatime,errors=remount-ro 0 1
tmpfs /var/volatile tmpfs defaults,x-mount.mkdir 0 0
이제 폴더가 /var/volatile
없으면 생성됩니다( x-mount.mkdir
). /var/volatile/subfolder
성공적인 설치 프로세스 후 하위 폴더(예:)를 생성하는 올바른 방법은 무엇입니까?
systemd가 시작이 완료될 때까지 작업을 계속하기 전에 이 하위 폴더를 생성하고 싶습니다.
답변1
systemd를 탐색한 후 나는 놀라운 발견을 우연히 발견했습니다. systemd가 이미 이에 대한 솔루션을 제공하므로 이 문제를 처리하기 위해 사용자 정의 서비스를 만들 필요가 없다는 것이 밝혀졌습니다.systemd-tmpfiles
. 이는 임시 디렉터리와 파일을 관리하는 구조화되고 구성 가능한 방법입니다.
https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
/etc/tmpfiles.d/volatile-subfolder.conf
다음 내용으로 파일을 생성하면 됩니다.
d /var/volatile/subfolder 0755 root root - -
그리고 다시 로드하세요.
답변2
이 문제를 해결하는 한 가지 방법은 새로운 시스템 서비스를 생성(또는 기존 서비스를 수정)하여 tempfs에 이 디렉터리를 생성하는 단위 지시어를 /var/volatile
사용하는 것입니다.After=local-fs.target
[Unit]
Description=Tempfs initialize
After=local-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder
[Install]
WantedBy=multiuser.target
그것을 추가한 /etc/systemd/system/tmpfsinit
다음 일반적인 systemctl daemon-reload && systemctl enable tempfsinit
.
또는 사용자 정의 systemd 서비스가 이미 있는 경우에는 After
단위 지시어와 명령을 추가하여 ExecStartPre
명령에 필요한 하위 디렉터리를 생성할 수도 있습니다.