Grz*_*cki 9 systemd systemd-timer
我即将将该rsync --delete
目录 /mnt/foo 的服务写入远程服务器。但是,由于--delete
选项的原因,除非挂载 /mnt/foo,否则我不想运行它,因为这可能会导致删除远程上的所有文件。
用ConditionX
(例如ConditionPathIsDirectory
)和RequiresMountsFor=
指令实现什么,有什么区别(每个的优缺点)?
草稿:这是我目前的草图:
RequiresMountsFor=/mnt/foo
Run Code Online (Sandbox Code Playgroud)
对比
# 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
Run Code Online (Sandbox Code Playgroud)
添加到.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
Run Code Online (Sandbox Code Playgroud)
为了正确起见,这里是.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
Run Code Online (Sandbox Code Playgroud)
小智 7
我也在寻找一个解释,最近 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=
但验证某个路径是否存在并且是挂载点。
归档时间: |
|
查看次数: |
12725 次 |
最近记录: |