#systemd
共 23 篇文章
systemd ConditionPathExists 写两个路径,条件却不满足
ConditionPathExists一条只检查一个路径。按两个都存在或任选其一分别配置,核对drop-in残留及空赋值清除全部条件的范围。
systemd Type=notify 正常退出,启动却报 protocol
成功退出码不能完成notify就绪协议。正常不运行用真实条件提前判断,必要服务保持真实READY及依赖等待,不用假通知隐藏失败。
systemd ExecStartPre 写入 tmpfs,ExecStart 却读不到
TemporaryFileSystem的挂载视图按Exec进程建立。交换运行期数据用明确RuntimeDirectory路径,隔离/etc的动态初始化需同视图包装或受控映射。
加密凭据报 Embedded credential name does not match
加密凭据的内嵌名称须与加载ID一致。明确--name、应用读取路径和系统/用户密钥范围,重命名文件不能重新绑定。
systemd 脚本打不开 /dev/stderr,日志没进 journal
journal的stderr可为Unix套接字,路径存在仍无法重新打开。自己的shell日志用>&2,第三方输出保留诊断、业务内容和失败状态。
daemon fork 后 sd_watchdog_enabled 返回 0
fork子进程可能继承父进程的WATCHDOG_PID。区分helper返回值与NotifyAccess权限,明确主进程交接和唯一心跳负责者。
systemd 启动前台脚本一直等待,最后超时:Type=forking 与进程行为不匹配
前台循环脚本被配置为 Type=forking 后,start 一直等待到超时。按进程实际生命周期选择服务类型,保留就绪判断、停止和恢复要求。
systemd 配置 Restart=always,仍因 Start request repeated too quickly 停止重试
Restart=always 不会绕过启动限流。先找到最早退出原因,再清目标计数并启动;核对生效阈值、重试间隔和业务退出语义。
重启后不再触发:OnUnitInactiveSec
OnUnitInactiveSec需要当前启动中的停用基准。普通周期任务增加初次触发;严格有效期应保留成功时间,不能靠Persistent恢复停用倒计时。
journalctl 找不到上次启动日志:检查 journald 是否只写入 /run
重启后 journalctl 找不到上一轮启动时,排除权限和保留条件,检查 auto 与持久目录关系;保存当前日志,并在计划重启后核对跨启动读取。
systemctl unmask 后仍报 Unit is masked:检查实际 unit 文件
systemctl unmask 后仍被屏蔽时,查 unit 的实际路径、空文件或 /dev/null 链接,再区分管理员屏蔽、软件包策略与自建配置损坏。
systemd 找不到 ${APP}:ExecStart 的程序名不能用环境变量
ExecStart=${APP} 找不到程序时,区分程序名和参数的变量规则,用 drop-in 清除旧命令并写入固定路径,再检查重载、重启结果与回退范围。
ulimit 很高,服务仍报 Too many open files:查实际进程软限制
终端 ulimit 很高而服务报 Too many open files 时,读取实际 PID 软限制,按启动链设置 unit 或应用限制,并核对高编号支持与泄漏。
journalctl vacuum 后仍超过容量:清理只作用于归档日志
journalctl 清理后总占用仍超过 vacuum-size 时,区分活动与归档日志,核对范围,再按保留策略轮转清理和配置长期预算。
systemd 读取 EnvironmentFile 后,路径仍包含 ${BASE} 字面量
EnvironmentFile中的路径含变量名时,区分systemd与shell解析。静态值写完整,动态组合集中到受控启动脚本。
systemd 服务报 200/CHDIR:终端能运行,服务用户却进不了 /root 目录
root 终端可以运行的应用,交给 www-data 服务后报 200/CHDIR。检查工作目录的逐层权限、服务隔离和部署位置,再安全调整启动路径。
systemd 服务写入 /tmp 的文件在终端找不到
应用能读回自己写入 /tmp 的文件,服务器终端却找不到,可能是 systemd 的 PrivateTmp 隔离了临时目录。通过实际进程的目录视图定位文件,再把需要保留的结果迁移到专用状态目录。
systemd-resolved 添加 local 搜索域后把主机名发往单播 DNS
为了让短主机名 printer 自动补成 printer.local,在 resolved.conf 中加入 Domains=local,结果查询被送到普通 DNS 服务器,返回 NXDOMAIN。即使已经设置 MulticastDNS=yes,也没有按预期用 mDNS 找到局域网设备。
systemd 覆盖 ExecStart 后报多条启动命令:drop-in 要先清空旧列表
systemd override 新增 ExecStart 会与原命令累积。用空赋值重置启动列表,检查加载状态并在维护窗口应用与恢复。
systemctl enable 提示没有 installation config,服务仍未开机启用
无 Install 规则的静态单元可能由依赖或 timer、socket 激活。先确认启动入口;自己维护的开机服务再补 WantedBy 并显式启用,分别验证安装与运行状态。


