systemd-creds:把密钥交给服务,而不落到磁盘上
systemd-creds 把密钥加密绑定到本机(或 TPM),只有 systemd 才能在服务启动时解密。LoadCredentialEncrypted= 通过私有 tmpfs 的 $CREDENTIALS_DIRECTORY 把明文交给服务——明文不上磁盘、不进环境变量、不进 /proc。真实输出,诚实标注局限。
用现代方式托管与调度任务:unit、timer、资源限制与 journald。
12 篇文章
systemd-creds 把密钥加密绑定到本机(或 TPM),只有 systemd 才能在服务启动时解密。LoadCredentialEncrypted= 通过私有 tmpfs 的 $CREDENTIALS_DIRECTORY 把明文交给服务——明文不上磁盘、不进环境变量、不进 /proc。真实输出,诚实标注局限。
一篇带真实输出的 systemd-networkd 与 NetworkManager 对比:.network 声明式文件对比 nmcli 连接配置文件、同一份静态 IP 的两种写法、各自如何供 DNS 给 systemd-resolved,以及为什么两个一起跑是坏主意。
Restart=on-failure 只能处理真正退出的进程,挂死的进程系统完全无感知。本文用真实的 systemd journal 输出演示如何用 WatchdogSec 加 sd_notify 心跳捕获卡死的服务,并覆盖 StartLimitBurst 崩溃循环保护与 Type=notify 就绪语义。
systemd-resolved 是大多数系统早已在跑、却被悄悄绕开的本地缓存存根解析器,监听 127.0.0.53。一篇结合 resolvectl、缓存、分流 DNS、DNS over TLS 与 mDNS 的实战走读,全部输出来自一台 Arch 主机。
在一台真实的 Arch 主机上实操 journalctl:按 unit、优先级、时间过滤,实时跟踪日志,读取 _SYSTEMD_UNIT、_PID 等日志字段,写入自定义字段,用 -o json 做脚本化统计,以及用 --disk-usage 和 vacuum 管理 journald 日志保留。
把 systemd socket 激活讲透:由 systemd 持有监听 socket(ListenStream),在第一个连接到来时才启动服务,并通过 sd_listen_fds 把 fd 传给它。全部是 systemctl --user 的真实输出,含 .socket/.service 配对、systemd-socket-activate 演示,以及诚实的取舍。
在一台真实的 Arch Linux 笔记本上完整走一遍 Linux 启动过程:UEFI 固件与 ESP、GRUB、内核与 initramfs、作为 PID 1 的 systemd、sysinit → basic → multi-user → graphical 的 target 链、用 systemd-analyze 看启动耗时,以及一份排查慢启动与启动失败的实战手册。
我真正会用到的 systemd unit file 指令:ExecStart、EnvironmentFile、User、After 与 WantedBy 的区别、Restart=on-failure 与启动次数上限、Type=simple/exec/oneshot 的差别、journal 日志、定时器,以及用 systemctl edit 写 drop-in、用 systemd-analyze verify 抓出一个真实报错并当场修好。
如何在不弄坏服务的前提下给 systemd 单元做沙箱:真正重要的那些旋钮(NoNewPrivileges、ProtectSystem=strict、PrivateTmp、SystemCallFilter、CapabilityBoundingSet、dynamic user)、用 systemd-analyze security 量化、用 LoadCredential 管密钥的增量工作流,以及单元被弄坏后如何测试与回滚。
一篇务实的 systemd 定时器与 cron 对比:同一个任务分别写成 crontab 一行和 .service + .timer 一对,涵盖 journalctl 日志、Persistent=true 补跑、OnCalendar 语法、RandomizedDelaySec、资源限制、环境变量处理,以及 systemd-analyze calendar 技巧——最后诚实聊聊什么时候 cron 依然是对的。
一份可直接复制的 Linux 服务器安全清单:从建非 root 管理员用户开始,做 SSH 加固、默认拒绝的防火墙、fail2ban、自动安全更新、sysctl 与时间基础、nginx 加固响应头、日志轮转,以及经过验证的异机备份。文末还列出不该做的事与失联后的恢复回滚办法。
Docker 不是运行服务的唯一方式。我用 nginx 做反向代理、systemd 单元与定时器做守护和调度、flock 做单飞任务,再用符号链接完成原子部署,在一台 VPS 上托管多个站点和定时任务。文末也诚实聊聊哪些情况下你确实应该直接用容器,并附上可直接复制的配置。