Linux 系统
共 111 篇文章
rsync 升级后远程路径多了引号,报 change_dir 失败
rsync3.2.4开始保护远端参数,变量内额外引号可能成为真实路径字符。修正路径值与本地引用,审慎评估old-args和受限shell。
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、应用读取路径和系统/用户密钥范围,重命名文件不能重新绑定。
find 把 -exec 末尾改成 + 后报 missing argument:{} 必须紧挨结束符
GNU find 的批量 -exec 要求唯一的 {} 紧挨 +。用 GNU mv -t 调整目标目录位置,或保留逐文件形式,先明确搜索范围与冲突处理。
rsync --append-verify 跳过了大小不变的已修改文件
append-verify仍跳过等长目标,不适用于改写中的磁盘镜像。稳定源后移除追加模式,按普通选择和私有partial-dir恢复,并验收内容与可恢复性。
GNU sed 同时使用 -n 和 -i 后文件变空
GNU sed 的 -n 关闭自动打印,-i 将输出写回原文件;删行脚本没有打印剩余行时会得到空文件。先预览完整输出、保留独立备份,再修正选项。
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恢复停用倒计时。
Bash 开启 set -e 后计数一次就退出:((count++)) 返回了什么
Bash set -e 下从零开始的后置自增会返回状态1,解释算术值与命令成功的区别,并按用途改成赋值与检查边界。
grep -f 的模式文件含空行,结果匹配全部输入
GNU grep 从模式文件读到空行时,会用空模式匹配全部输入。区分空行、正常末尾 LF 与空文件,过滤模式输入并保留匹配方式和退出状态约定。
journalctl 找不到上次启动日志:检查 journald 是否只写入 /run
重启后 journalctl 找不到上一轮启动时,排除权限和保留条件,检查 auto 与持久目录关系;保存当前日志,并在计划重启后核对跨启动读取。
nixos-anywhere 上传密钥时报 Too many authentication failures
nixos-anywhere 在上传安装密钥前尝试多把 agent 身份,耗尽连接认证次数。核对上传分支的 SSH 参数,用单次环境或 IdentityAgent 限制 agent,并区分连接测试与会覆盖磁盘的安装命令。
Bash local 接收命令输出后,失败状态变成 0
Bash 函数用 local 接收命令替换时,声明成功会覆盖子命令失败状态。分开声明和赋值,立即保存状态,并处理部分输出及调用者的错误传播。
rsync 3.5.0:/dev/stdin 报 ENOENT
3.5.0可能无法打开管道上的/dev/stdin和stdout,3.5.1已修复。清单改用files-from=-,日志要单独核验,退出0不代表采集成功。


