systemd
.service
시작해야 하는 스크립트를 작성 중입니다.뒤쪽에/etc/fstab
CIFS 네트워크 위치는 /mnt/
부팅 시 마운트됩니다.
스크립트는 OpenVPN 종속성 스크립트가 먼저 시작될 때까지 기다리지만 설치가 완료될 때까지 기다리기도 합니다.
/etc/systemd/system/my-daemon.service:
[Unit]
Description=Launch My Daemon
After=network.target vpn-launch.service
Requires=vpn-launch.service
systemd.mount
줄에 추가하려고 시도했지만 After=network.target vpn-launch.service systemd.mount
원하는 결과를 얻지 못했습니다.
답변1
/etc/fstab
CIFS 네트워크 위치는/mnt/
부팅 시 마운트됩니다.
전혀 그렇지 않다. 이것을 올바르게 하면 나머지는 제자리에 있게 될 것입니다.
마운팅은 systemd에 의해 처리됩니다(생성됨).설치단위다음과 같은 이름이 지정됩니다 mnt-wibble.mount
. 다음 명령의 출력에서 실제 이름을 볼 수 있습니다.
systemctl list-units --type=mount
다른 단위와 마찬가지로 자세히 볼 수 있습니다.
systemctl status
매우 간단합니다. 설치 장치가 시작된 후에 장치를 시작하도록 명령해야 합니다.
After=network.target vpn-launch.service mnt-wibble.mount
추가 읽기
답변2
두 답변 모두 정확하지만 토론을 찾을 때 진행 방법에 대한 몇 가지 지침과 예가 누락되어 토론에 2센트를 추가하고 싶었습니다.
- 파일 시스템 추가
/etc/fstab
mount -a
fstab에 언급된 모든 파일 시스템 유형을 마운트합니다.- 생성된 시스템 단위 찾기: (
systemctl list-units | grep '/path/to/mount' | awk '{ print $1 }'
로 끝나는 항목을 반환해야 함.mount
) - 발견된 마운트 유닛을 파일
After=
의 명령문 에 추가합니다.*.service
다음은 부팅 시 서비스를 시작하는 예입니다 my-daemon
. 네트워크가 준비된 후 CIFS 공유가 마운트되고 /mnt/cifs
서비스 vpn-launch
가 시작됩니다.
/etc/fstab
//servername/sharename /mnt/cifs cifs defaults,some,other,options 0 0
참고: fstab 옵션에 추가해야 할 수도 있습니다 nofail
(예: 외장 드라이브를 사용하는 경우). 그렇지 않으면 장치가 연결되지 않으면 머신이 부팅되지 않습니다. 바라보다ArchWiki의 fstab 기사
/etc/systemd/system/my-daemon.service
[Unit]
Description=Launch My Daemon
Requires=vpn-launch.service mnt-cifs.mount
After=network.target vpn-launch.service mnt-cifs.mount
[Service]
ExecStart=/path/to/my-daemon
[Install]
WantedBy=multi-user.target
부팅 시 서비스가 시작되도록 서비스를 활성화하는 것을 잊지 마세요.systemctl enable my-daemon
이는 다른 파일 시스템(NFS, HDD 등)에도 적용됩니다.
이미 언급했듯이 두 답변 모두 정확하므로 모두가 읽어 보시기 바랍니다. 하지만 제 경우에는 몇 가지 예를 통해 시간을 절약할 수 있을 것입니다.
업데이트(2019-06-25):
- 외부 드라이브를 사용할 때 부팅 잠금을 방지하기 위해 fstab 옵션에 대한 참고 사항이 추가되었습니다.
- 성공적으로 마운트되지 않은 경우 cifs 마운트가 시작되지 않는 원인 목록
mnt-cifs.mount
에 추가되었습니다.Requires=
my-daemon.service
답변3
죄송합니다. 아직 댓글을 달 수 없습니다.
JdeBP가 말했듯이 파일 시스템 마운트를 정렬해야 합니다. 설치된 장치의 이름을 예측하거나 (units 섹션에서) 다음을 사용할 수 있습니다.
RequiresMountsFor=/absolute/path/of/installation
이 옵션은 서비스를 시작하기 전에 경로에 액세스할 수 있도록 적절한 *.mount 단위에 대한 종속성을 만듭니다. 모든 시스템 버전에서 작동하지 않을 수 있지만 지난 6개월 정도 CentOS 7 시스템에서 사용해 왔습니다.
답변4
@bm-bergmotte: 지도해 주셔서 감사합니다. 많은 도움이 되었습니다. 나에게는 내가 넣어야 작동합니다.
After=network.target vpn-launch.service mnt-cifs.mount
Requires=vpn-launch.service mnt-cifs.mount
"mnt-cifs.mount"를 "필요"에 해당 순서대로 넣지 않으면 재부팅/시작되지만 장치가 마운트되지 않은 경우 서비스는 계속 시작됩니다. 디바이스가 설치되어 있지 않은 경우 추가로 "필수"로 설정하면 서비스 시작 전에 디바이스를 설치하게 됩니다.