小编Kei*_*ith的帖子

系统单元文件中 Wants= 与 WantedBy= 的最佳实践

据我从systemd的文档中可以看出,Wants=WantedBy=执行相同的功能,除了前者放在依赖单元文件中,反之亦然。(那个,并WantedBy=创建unit.type.wants目录并用符号链接填充它。)

来自DigitalOcean:了解系统单位和单位文件

WantedBy=指令...允许您以与Wants=[Unit]部分中的指令类似的方式指定依赖关系。不同之处在于该指令包含在辅助单元中,允许列出的主要单元保持相对清洁。

它真的只是保持单元文件“干净”吗?使用这两个指令的最佳实践是什么?也就是说,如果服务阿尔法“想”的服务测试版,我什么时候应该用Wants=beta.servicealpha.service和什么时候应该更喜欢WantedBy=alpha.servicebeta.service

systemd systemd-unit

8
推荐指数
1
解决办法
2060
查看次数

rsync --del 或 --delete

基于联机帮助页:

--删除期间--del

请求在传输发生时逐步完成接收方的文件删除。每个目录的删除扫描是在检查每个目录的更新之前完成的,因此它的行为类似于更高效的 --delete-before,包括在更新任何每个目录的过滤器文件之前进行删除。该选项首先在 rsync 2.6.4 版本中添加。有关文件删除的更多详细信息,请参阅 --delete (隐含的)。

还有--delete-before--delete-after。我不太明白这些和 之间的区别--delete--delete如果不是之前、期间或之后,什么时候删除文件?

文档还说:

因此,当连接两端至少为 3.0.0 时,指定 --delete 时的默认删除模式现在为 --delete-during(使用 --del 或 --delete-during 来请求这种改进的删除模式)明确)。

我想这意味着--del旨在取代--delete。有什么理由使用--deleteover--del吗?使用--del小于 3.0.0 的连接会导致问题吗?(我假设这是 rsync 版本)。

rsync

7
推荐指数
1
解决办法
9412
查看次数

当 ListenAddress 设置为 Wireguard VPN IP 时,SSH 无法启动

wg0假设我有一个名为的wireguard 网络10.0.0.1/24。我使用 systemd 在启动时启动它:

# systemctl enable wg-quick@wg0
Run Code Online (Sandbox Code Playgroud)

我希望 sshd 仅侦听wireguard 地址 ,10.0.0.1而不是0.0.0.0。所以我设置ListenAddress/etc/ssh/sshd_config

ListenAddress  10.0.0.1
#ListenAddress  ::
AddressFamily  inet
Run Code Online (Sandbox Code Playgroud)

注意我设置了地址族,因为我在这里仅使用 IPv4 而不是 IPv6。我认为如果不设置,ssh将继续监听::IPv6。

如果我保存配置并重新启动 sshd,效果很好。但是服务器重新启动后,尽管在 systemd 中启用了 ssh,但仍无法启动。系统日志输出告诉我们原因:

sshd[xxx]: error: Bind to port 22 on 10.0.0.1 failed: Cannot assign requested address.
Run Code Online (Sandbox Code Playgroud)

显然,我们有一个竞争条件,即 sshd 在 Wireguard 接口准备好之前尝试(但失败)启动。

显而易见的解决方案是编辑/etc/systemd/system/sshd.service并添加wg-quick@wg0为依赖项。After=然而, 、Wants=、 或的组合并Requires=不能解决问题。似乎wg-quick@wg0报告它已经完成,尽管网络接口实际上还没有准备好。

systemd sshd wireguard

3
推荐指数
1
解决办法
3350
查看次数

标签 统计

systemd ×2

rsync ×1

sshd ×1

systemd-unit ×1

wireguard ×1