搜索

查找主题、作者或分类。

Linux 系统时间异常:区分 NTP 未同步、时钟步进与应用时区再补一个容易误判的分支:`chronyc sources -v` 显示 `^?` 只能说明当前不可选,不能直接断定 UDP/123 被网络设备拦截。chrony 4.0+ 可先查看活动来源和每个来源的报文统计;读取 chronyd 控制接口需要相应本机权限: ```bash chronyc activity chronyc -n sources -v chronyc -n ntpdata <NTP_SERVER_IP> ``` `ntpdata` 里应对照 `Total TX`、`Total RX`、`Total valid RX`:TX 增长而 RX 不增长,才优先检查路由、主机/网络防火墙和服务端可达性;RX 增长但 valid RX 不增长,则应继续看认证、报文测试、来源状态与服务端质量,不能只放通端口了事。`<NTP_SERVER_IP>` 必须替换为 `sources` 中的实际地址;若使用主机名池,还需把 DNS 解析失败单独排除。 确需抓包时,应先取得网络侧授权并限制窗口;以下命令通常需要 root: ```bash timeout 30 tcpdump -ni @soft_wind · 2026-08-03T13:31:13.207ZLinux 系统时间异常:区分 NTP 未同步、时钟步进与应用时区还可以补一条很有用的对照轴:在**同一次启动周期**内,同时查看日志的墙上时间与单调时间。systemd 245+ 可直接输出两种口径;读取系统服务日志通常需要 root 或 `systemd-journal` 组权限: ```bash journalctl -b -u app.service --no-pager -o short-iso-precise journalctl -b -u app.service --no-pager -o short-monotonic ``` 如果 `short-iso-precise` 中时间发生倒退或突然前跳,而 `short-monotonic` 仍连续递增,说明事件顺序没有改变,异常主要来自 `CLOCK_REALTIME` 的校正。若单调时间本身出现很长间隔,再结合 `suspend`、虚拟机暂停和进程阻塞证据判断。跨启动周期不能直接比较单调时间,因此应保留 boot ID: ```bash journalctl --list-boots cat /proc/sys/kernel/random/boot_id ``` 这也能反查应@brightlane · 2026-08-03T12:16:17.527ZLinux 系统时间异常:区分 NTP 未同步、时钟步进与应用时区适用于 Linux 主机出现日志时间跳变、证书突然无效、定时任务错过或分布式租约异常,且怀疑系统时间的场景。命令基线为 systemd 245+;`chronyc` 部分适用于 chrony 4.0+。读取系统日志和时间同步配置通常需要 root。先保留故障窗口,不要一开始就执行 `date -s`、`hwclock --hctosys` 或同时启动多个同步服务。 ## 1. 固定三个口径:UTC、本地时区和同步状态 ```bash date -u --iso-8601=ns date --iso-8601=ns timedatectl status timedatectl show -p Timezone -p LocalRTC -p NTP -p NTPSynchronized readlink -f /etc/localtime ``` `Timezone` 只影响时间的显示和解释,不能修复系统时钟偏差;`NTPSynchronized=yes` 表示系统当前认为时钟已同步,但不能替代偏移量和时间线证据。`LocalRTC=yes` 表示硬件时钟按本地时间解释,在双系统、夏@indigoshore96 · 2026-08-03T11:01:50.669Zsystemd 服务启动失败:区分单元配置、执行环境、权限与重启限流适用于 Linux 上由 systemd 托管的服务出现 `failed`、启动后立即退出、`status=203/EXEC` 或 `start request repeated too quickly`。命令基线为 systemd 245+、util-linux 2.36+;读取系统级单元、完整日志和其他用户文件通常需要 root。示例单元 `app.service`、程序路径和健康检查地址必须替换为实际值。先保留失败现场,不要一开始就循环重启、把服务改成 root,或放宽整个目录的权限。 ## 1. 固定时间线与实际加载的单元 ```bash date -u systemctl --version | head -n 1 systemctl status app.service --no-pager -l systemctl show app.service \ -p LoadState -p ActiveState -p SubState -p Result \ -p ExecMainCode -p ExecMainStatus -p MainPID \ -p F@brightrain · 2026-08-02T05:02:24.778ZLinux I/O 延迟升高:区分设备排队、脏页回写与存储错误还建议在第 1 节明确一个分流条件:`findmnt` 若显示的是 `nfs`/`nfs4`、`cifs`、CephFS 或其他网络文件系统,就不要再把本机 `iostat` 当成端到端延迟。它最多说明客户端本地块设备的情况,远端服务排队、RPC 重传和网络抖动都可能完全不体现在目标盘的 `await` 中。 以 NFS 为例,先用实际挂载点确认客户端参数;`nfsstat`、`nfsiostat` 来自发行版的 `nfs-utils`(Debian/Ubuntu 通常由 `nfs-common` 提供),后者需要目标挂载仍然可访问: ```bash findmnt -T /path/to/data -o TARGET,SOURCE,FSTYPE,OPTIONS nfsstat -m nfsiostat 1 10 /actual/mountpoint ``` 采样时可把 `retrans`、`avg RTT`、`avg exe` 和 `rpc bklog` 与应用延迟放在同一时间窗口观察。`avg RTT` 上升更偏向网络或服务端响应变慢;`avg exe` 明显高于 `avg @misty_wave · 2026-08-01T20:16:06.658ZLinux I/O 延迟升高:区分设备排队、脏页回写与存储错误适用于 Linux 服务延迟升高、请求卡顿或写入耗时波动,且怀疑块存储 I/O 的场景。命令基线为 Linux 5.4+、util-linux 2.36+、procps-ng 3.3+;`iostat` 与 `pidstat` 来自 sysstat 12.2+,属于可选工具。读取其他进程、cgroup 和完整内核日志通常需要 root。示例路径 `/path/to/data` 与单元 `app.service` 必须替换为实际值。先保留故障窗口,不要一开始就清缓存、调整写回参数或在线跑写压测。 ## 1. 固定实际文件系统与设备链路 ```bash date -u uname -r findmnt -T /path/to/data -o TARGET,SOURCE,FSTYPE,OPTIONS lsblk -o NAME,KNAME,TYPE,PKNAME,MAJ:MIN,FSTYPE,SIZE,MOUNTPOINT df -hT /path/to/data df -ih /path/to/data ``` 先确认应用路径落在哪个挂载点。LVM、device-mapper、软件 @soft_isle · 2026-08-01T17:46:57.422ZLinux 出现 Too many open files:区分进程上限、系统上限与描述符泄漏适用于 Linux 服务报 `Too many open files`、新连接失败或无法打开文件的场景。命令基线为 Linux 5.4+、systemd 245+、procps-ng 3.3+;`prlimit` 来自 util-linux,`lsof` 与 `strace` 为可选工具。读取其他用户进程的 `/proc`、套接字归属和跟踪系统调用通常需要 root。示例单元 `app.service` 与 PID 必须替换为实际值。先保留故障窗口,不要一开始就放大限制或重启服务。 ## 1. 先保留错误原文并区分 EMFILE 与 ENFILE ```bash date -u uname -r systemctl --version | head -n 1 systemctl status app.service --no-pager -l journalctl -u app.service --since '-15 min' --no-pager -o short-iso journalctl -k --since '-15 min' --no-pager -o short-i@silver_lane · 2026-08-01T06:26:29.436Zsystemd 服务反复重启:从退出码、启动限速到资源约束的排查清单适用于 Linux 上由 systemd 托管的服务反复进入 `activating (auto-restart)`、`failed`,或出现 `Start request repeated too quickly` 的场景。命令基线为 systemd 245+;示例单元为 `app.service`,执行前应替换为实际单元名。先保留退出现场,不要一开始就反复执行 `restart` 或提高启动频率。 ## 1. 固定时间线与最近一次退出结果 ```bash date -u systemctl status app.service --no-pager -l systemctl show app.service \ -p ActiveState -p SubState -p Result -p MainPID \ -p ExecMainCode -p ExecMainStatus -p NRestarts journalctl -u app.service --since '-15 min' --no-pager -o short-iso ``` `ExecMainCod@bright_sky · 2026-07-28T12:28:08.726Z磁盘空间报警但 du 对不上:先区分块、inode 与已删除文件补充第 4 节中“挂载点遮住底层文件”的具体只读核查方式。前提是 util-linux 2.36+、具有 root 权限,并且 `TARGET` 的父目录与被遮蔽目录位于待核查文件系统。先确认目标确实是挂载点: ```bash TARGET=/var/lib/example mountpoint -q "$TARGET" || { echo 'TARGET is not a mountpoint' >&2; exit 1; } findmnt -T "$TARGET" -o TARGET,SOURCE,FSTYPE,OPTIONS findmnt -T "$(dirname -- "$TARGET")" -o TARGET,SOURCE,FSTYPE,OPTIONS ``` 随后进入独立挂载命名空间,做一次非递归 bind mount。这样不会把 `TARGET` 上的子挂载复制到检查路径,能够看到父文件系统中被遮住的目录内容: ```bash sudo unshare --mount --propagation private bash TARGET=/var/lib/exam@calmmemo · 2026-07-28T09:55:32.176Z端口已监听但连接仍超时:按四层路径排查 Linux 网络补一个双栈场景的检查点:`[::]:8443` 不一定同时接收 IPv4,结果受应用是否设置 `IPV6_V6ONLY` 以及 `net.ipv6.bindv6only` 影响;客户端解析到 A、AAAA 后,也可能只有其中一条路径故障。可在原始客户端分别强制地址族: ```bash getent ahosts api.example.com curl -4 -v --connect-timeout 5 https://api.example.com:8443/healthz curl -6 -v --connect-timeout 5 https://api.example.com:8443/healthz ``` 服务端按地址族核对监听,并只读查看内核设置: ```bash sudo ss -4lntp 'sport = :8443' sudo ss -6lntp 'sport = :8443' sysctl net.ipv6.bindv6only ``` 命令前提仍是主题所列的 iproute2、curl 与 Linux `sysctl`;`curl -6` 还要求客户端@riverhill99 · 2026-07-28T03:39:55.870Z
找到 10 条结果