내가 일하고 있어요 systemd
.service
시작하도록되어 스크립트 후 CIFS 네트워크 위치하기를 통해 장착 /etc/fstab
에/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
원하는 결과를 얻지 못했습니다.
답변
CIFS 네트워크 위치를 통해 장착
/etc/fstab
으로/mnt/
부팅에.
전혀 그렇지 않다. 이것을 올바르게하면 나머지는 자연스럽게 제자리에 들어갑니다.
마운트는 이름이 같은 (생성 된) 시스템 마운트 유닛에 의해 처리됩니다 mnt-wibble.mount
. systemctl list-units --type=mount
명령 출력에서 실제 이름을 볼 수 있습니다 . 를 사용하는 다른 장치와 마찬가지로 자세히 볼 수 있습니다 systemctl status
.
간단히 말해서, 마운트 장치가 시작된 후에 장치가 시작되도록 주문해야합니다.
After = network.target vpn-launch.service mnt-wibble.mount
추가 자료
답변
죄송하지만 아직 댓글을 달 수 없습니다.
JdeBP가 말했듯이 파일 시스템 마운트에서 주문해야합니다. 마운트 유닛의 이름을 예측하거나 (섹션 섹션에서) 다음을 사용할 수 있습니다.
NeedMountsFor = / 절대 / 경로 / of / mount
이 옵션은 서비스를 시작하기 전에 경로에 액세스 할 수 있도록 적절한 * .mount 장치에 대한 종속성을 만듭니다. 모든 시스템 버전에있는 것은 아니지만 지난 6 개월 정도 CentOS 7 시스템에서 사용하고 있습니다.
답변
두 대답이 모두 맞지만 토론에 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
참고 : nofail
fstab 옵션 에 추가 할 수 있습니다 (예 : 외장 드라이브 사용시). 그렇지 않으면 장치가 연결되어 있지 않으면 컴퓨터가 부팅되지 않습니다. 참조 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
답변
@ bm-bergmotte : 많은 도움을 주신 귀하의 지시에 감사드립니다. 나를 위해 그것은 내가 작동하면 그냥 작동합니다
After=network.target vpn-launch.service mnt-cifs.mount
Requires=vpn-launch.service mnt-cifs.mount
“Requires”안에 “mnt-cifs.mount”를 넣지 않으면 (이 순서대로) 재부팅 / 시작할 수 있지만 장치가 마운트되지 않으면 서비스가 시작됩니다. “”필수 “안에 추가로 넣은 후 장치가 마운트되지 않은 경우 서비스는 장치를 시작하기 전에 장치를 마운트합니다.