![systemd.unit `RequiresMountsFor=` 및 `ConditionPathIsDirectory=`](https://linux55.com/image/87841/systemd.unit%20%60RequiresMountsFor%3D%60%20%EB%B0%8F%20%60ConditionPathIsDirectory%3D%60.png)
rsync --delete
/mnt/foo 디렉토리에서 원격 서버로 서비스를 작성 하려고 합니다 . 그러나 옵션 때문에 --delete
/mnt/foo가 마운트되지 않는 한 실행하고 싶지 않습니다. 이렇게 하면 원격지에 있는 모든 파일이 삭제될 수 있기 때문입니다.
ConditionX
ConditionPathIsDirectory
이를 구현하는 데 사용되는 지침은 무엇이며(예 : ) RequiresMountsFor=
, 차이점은 무엇입니까(각각의 장점과 단점)?
초안: 이것은 나의 현재 스케치입니다.
RequiresMountsFor=/mnt/foo
그리고
# assuming there is `bar_only_on_foo` subdirectory on monted directory, which does not exis on unmounted one.
ConditionPathIsDirectory=/mnt/foo/bar_only_on_foo
파일 에 추가 .service
:
# /etc/systemd/system/rsync_to_remotey.service
# or : /home/$USER/.config/systemd/user/rsync_to_remotey.service
[Unit]
Description=rsync USER X data to REMOTE Y
[Service]
Type=simple
ExecStart=/home/USERX/rsync_userx_to_remotey.sh
.timer
정확성을 위해 문서 는 다음과 같습니다 .
# /etc/systemd/system/rsync_to_remotey.timer
# or : /home/$USER/.config/systemd/user/rsync_to_remotey.timer
[Unit]
Description=Runs every 30 minutes rsync USER X data to REMOTE Y
[Timer]
OnBootSec=30min
AccuracySec=1h
OnCalendar=*:0/30
Unit=rsync_to_remotey.service
[Install]
WantedBy=multi-user.target
답변1
나는 또한 설명을 찾고 있었고 최근 Raspberry Pi Jessie 이미지의 맨 페이지에서 설명을 제공했습니다.
먼저 여기를 살펴보겠습니다. man 7 systemd
그런 다음 다음을 살펴보겠습니다.
man 5 systemd.unit
다음 콘텐츠가 제공됩니다.
RequiresMountsFor=
공백으로 구분된 절대 경로 목록입니다. 지정된 경로에 액세스하는 데 필요한 설치된 모든 장치의 유형
Requires=
과 종속성을 자동으로 추가합니다.After=
noauto로 표시된 마운트 지점은 자동으로 마운트되지 않으며 이 옵션의 목적에 따라 무시됩니다. 장치에 이러한 설치가 필요한 경우 설치된 장치(
Requires=
및/After=
또는 다른 조합)에 직접 종속성을 추가할 수 있습니다.
맨 페이지 아래로 더 내려가면,
ConditionArchitecture=
,,,,,,,,,,,,,,,,,,,,,,,,,,,ConditionVirtualization=
ConditionHost=
ConditionKernelCommandLine=
ConditionSecurity=
ConditionCapability=
ConditionACPower=
ConditionNeedsUpdate=
ConditionPathExists=
ConditionPathExistsGlob=
ConditionPathIsDirectory=
ConditionPathIsSymbolicLink=
ConditionPathIsMountPoint=
ConditionPathIsReadWrite=
ConditionDirectoryNotEmpty=
ConditionFileNotEmpty=
ConditionFileIsExecutable=
ConditionNull=
장치를 시작하기 전에 지정된 조건이 참인지 확인하십시오. 그렇지 않은 경우 장치 시작을 건너뛰지만 모든 순서 종속성은 여전히 존중됩니다. 오류 상태로 인해 장치가 오류 상태로 전환되지는 않습니다. 대기 중인 시작 작업을 실행하는 동안 조건을 확인하세요.
그만한 가치가 있는 경우 다음을 선택합니다 ConditionPathIsMountPoint=
.
ConditionPathIsMountPoint=
유사ConditionPathExists=
하지만 특정 경로가 존재하고 마운트 지점인지 확인합니다.