systemd-unit

管理 systemd 模板实例之间的排序依赖关系
systemd-unit

管理 systemd 模板实例之间的排序依赖关系

抽象的例子: 我有两个重复任务A,B我想将其设置为systemd服务。由于任务彼此非常相似,因此我使用模板[email protected]; A 和 B 将分别作为该模板的实例运行:[email protected]和[email protected]。 # [email protected] [Unit] Description= myservice %I [Service] Type=oneshot IOSchedulingClass=idle ExecStart=bash -c "echo Starting ...

Admin

使用 python 将通知从一个 systemd 单元发送到另一个 systemd 单元?
systemd-unit

使用 python 将通知从一个 systemd 单元发送到另一个 systemd 单元?

我有一个 systemd 单元“my-app”,它运行我的主 python 应用程序,但我希望它在远程服务器上有新版本时自动更新。检测由同一操作系统上的另一个 python systemd 单元(我们称之为“watch-app”)监视,该单元执行检查、下载并用新文件替换旧文件,并向“my-app”发送通知,以便它可以将其状态更改为“准备更新”之类的状态。 我正在寻找至少执行此任务的最佳策略。我发现通知但它没有清楚地解释如何接收通知,而且我找不到任何相关教程。 也许我走错路了?任何帮助将不胜感激。谢谢 ...

Admin

如何在 systemd 单元文件中指定动态“环境”变量?
systemd-unit

如何在 systemd 单元文件中指定动态“环境”变量?

这$(ls -d...)在 systemd 单元文件中不起作用: [Service] Type=forking Environment="ORACLE_HOME=$(ls -d /usr/lib/oracle/*/client64 | sort -rV | head -n1)" Environment="TNS_ADMIN=$(ls -d /usr/lib/oracle/*/client64/lib/network/admin | sort -rV | head -n1)" 我想避免对 Oracle 客户端版本(目前为 19.19)进行硬编码,以简化更新。...

Admin

systemd 服务无法使用 `tail` 输出到控制台
systemd-unit

systemd 服务无法使用 `tail` 输出到控制台

我无法正确配置我的 systemd 服务 (systemd 249.11-0ubuntu3.12)。它应该启动一个tail输出到控制台的进程。 Ubuntu 作为 Proxmox VM 运行。 启动时,服务启动但退出且没有有用的输出: × watchbackup.service - Startup Applications Loaded: loaded (/etc/systemd/system/watchbackup.service; enabled; vendor preset: enabled) Active: failed (Res...

Admin

systemd 服务“激活”到底意味着什么?
systemd-unit

systemd 服务“激活”到底意味着什么?

根据文档中的各个条款,“激活”状态是非活动状态和活动状态之间的转换。到目前为止很明显。 但它到底是如何定义的呢? 是什么决定了服务是否不再处于非活动状态而是处于活动状态? 是什么决定了服务是否不再激活而是激活? 我所知道的唯一进入“激活”状态的是脚本ExecStartPre;当它运行时,该服务保持“激活”状态。 是否有其他方法可以使服务保持激活状态? 您能否让该服务启动主服务ExecStart,但仅在可执行文件导致某些特定的“我起来了!”时才考虑该服务处于活动状态?例如事件? ...

Admin

Systemd:只读文件系统中的临时读写文件夹
systemd-unit

Systemd:只读文件系统中的临时读写文件夹

我有一个系统,其中单个主机可以运行多个执行,这些执行使用systemd.执行时可以指定要root到哪个文件夹,例如 RootDirectory=/var/images/some_root 在此路径中有一个 btrfs 只读卷。我希望执行有一个可写的暂存区,但我无法在此 RO 路径中创建文件夹。 我怎样才能做到这一点?有没有办法在此文件系统中挂载临时 RW 文件夹? ...

Admin

Systemd 可执行文件无法从 CacheDirectory 读取文件且权限被拒绝
systemd-unit

Systemd 可执行文件无法从 CacheDirectory 读取文件且权限被拒绝

我有一个每 5 分钟运行一次的 Golang 二进制文件。它应该创建和更新需要写入限制的文本文件。为了运行这个二进制文件,我创建了一个 systemd 服务和一个 systemd 计时器单元。 Systemd 服务使用 DynamicUser。为了实现访问限制,我CacheDirectory在 systemd 中使用指令,以便只有 DynamicUser 可以写入该文件,并且它仅在用户存在时存在。还设置CacheDirectoryMode=644为仅允许具有写入权限的所有者。 当 systemd 服务运行时,它失败并显示 failed to read out...

Admin

systemd 计时器具有长寿命进程,避免重叠
systemd-unit

systemd 计时器具有长寿命进程,避免重叠

我有一个脚本可以扫描任务,并一次完成一个任务,然后退出。执行可以持续 1 秒(无任务)到 2 小时(繁重任务)。随后的运行应尽快开始,以检查剩余/传入的工作。 我希望 systemd 来管理这个。 [Time] OnUnitActiveSec=1 [email protected] 我希望每个服务每 1 秒启动一次(如果尚未运行的话)。应该Type=simple涵盖这个还是我需要Conflicts自己?Type=oneshot与怎么样RemainAfterExit=no?服务单位有太多的选择来满足这个要求......但它们似乎都是错误的。 奖金:...

Admin

启动时,如果是X,则挂载A,否则挂载B
systemd-unit

启动时,如果是X,则挂载A,否则挂载B

上下文如下这另一个问题我的。 TL,DR:我的大部分主文件夹都位于我随身携带的外部驱动器上,并安装在我的各个工作场所和家里。 unionfs /HomeLocal=RW:/mnt/external_drive/HomeRoaming=RW /home通过以下行完成安装fstab: /HomeLocal=RW:/mnt/external_drive/HomeRoaming=RW /home fuse.unionfs auto,suid,exec,nonempty,max_files=32768,allow_other,x-systemd.requires=/m...

Admin

systemd 服务日志中偶尔缺少 ping 输出(标记为错误的单位)
systemd-unit

systemd 服务日志中偶尔缺少 ping 输出(标记为错误的单位)

我正在一个脚本中使用ping,该脚本在 systemd 服务单元中运行。 ping 的输出有时(经常)在单位日志中丢失。即,它丢失了journalctl --user -u MyUnit。 请注意,无论脚本是ping在自己的循环中调用的长时间运行的脚本(变体 1),还是我使用计时器定期启动它(变体 2),我都可以观察到这一点。请注意,我还在额外的文件中记录时间戳,以验证脚本是否实际运行。确实总是如此。 变体1 脚本: $ cat ~/ping_test #!/bin/bash ITERATION=0 while true do echo "Iter...

Admin

systemd 服务启动顺序,但仅在启动时
systemd-unit

systemd 服务启动顺序,但仅在启动时

我的用例与描述的非常相似在这个问题中: 许多定制服务,彼此不依赖。启动时,它们全部同时启动并导致 CPU 和 RAM 负载达到峰值。 我想要做的是为这些服务设置一个特定的启动顺序,这可能就是发明 Before/After systemd 单元选项的目的。 到目前为止,这个问题与上面链接的问题相同。 我不确定的是: 请注意,当两个具有顺序依赖性的单元被关闭时,将应用启动顺序的相反顺序。即,如果一个单元在另一个单元上配置了 After=,则如果两个单元都关闭,则前者会先于后者停止。假设两台设备之间存在任何顺序依赖性,如果一台设备关闭而另一台设备启动,则关闭顺序...

Admin

systemd - 这是如何通过已安装的程序要求服务吗?
systemd-unit

systemd - 这是如何通过已安装的程序要求服务吗?

精华: 我希望 systemd/tmp/some_folder在从各种已安装的软件包和系统服务启动服务之前将特定目录符号链接到(如杯子、吃豆人等),原因是:我不希望他们在我的磁盘上写入日志,或者,换句话说,我想让我的系统尽可能只读。我想在这里问一下我计划的解决方案是否确实是一个解决方案。 细节: 我的发行版是 ArchLinux,这是我想象的解决方案: 让L是我想要需要符号链接的服务列表:( , cups.socket, pacman-filesdb-refresh.service, systemd-logind.service, systemd-time...

Admin

类似生成器的单元会创建另一个单元,并且两个单元都应在引导期间启动;那可能吗?
systemd-unit

类似生成器的单元会创建另一个单元,并且两个单元都应在引导期间启动;那可能吗?

使用配置文件将一些旧式服务转换为systemd单元,我编写了一个类似生成器(即:实际上不是 systemd 生成器)的服务,它创建(取决于配置文件)一些服务和需要这些服务的目标。目标应该在引导期间启动(在生成器运行之后)。 我这样做的原因不是使用普通的 systemd 生成器单元是相当有限的。 在正在运行的系统中进行测试时,一切似乎都正常,但重新启动后目标并未启动。通常手动启动目标就足够了。 以下是我的发电机组的基本内容: [Unit] Description=instance generator Wants=nss-user-lookup.target t...

Admin

为什么systemctl status显示未来的时间和剩余时间?
systemd-unit

为什么systemctl status显示未来的时间和剩余时间?

当我们发出“ systemctl status”时,我们通常会在输出中得到一行显示状态以及处于该状态的时间。 就像:(我几分钟前发布的) Active: active (running) since Wed 2023-11-22 01:56:06 CST; 10h ago 但是,当系统时间为 01:19:27 CST 时,同一服务碰巧收到以下行 Active: active (running) since Wed 2023-11-22 **01:56:06** CST; 36min **left** 为什么“since”后面的时间是将来时?为什么它显示“...

Admin

waylock - 在挂起时触发屏幕锁,但在休眠时不触发?
systemd-unit

waylock - 在挂起时触发屏幕锁,但在休眠时不触发?

其原理与中相同这个问题- 由于我已经在简历中输入了磁盘加密密码,因此我不想也解锁我的屏幕。我希望屏幕锁定器仅在挂起时触发。 目前我正在使用 systemd 服务文件/etc/systemd/system/user/suspend@service,如上所述在 Arch 维基百科中- # systemctl --user enable [email protected] [Unit] Description=Suspend actions Before=suspend.target [Service] User=%I Environment=XDG_...

Admin