-
date 显示的时间差了 8 小时:一次时区、UTC 与时钟同步的复盘
一台新装的 CentOS 服务器 date 显示 UTC 比北京时间慢 8 小时,我一行 timedatectl set-timezone Asia/Shanghai 把时区改对了,可没多久业务同事炸了:数据库里改时区之前就存好的老订单时间全错了晚了 8 小时,我根本没碰过那些数据怎么会跟着变。排查梳理:timedatectl 看到时区原本是 UTC,改成 Asia/Shanghai 后 date…- 2
- 0
-
load 飙到 50 但 CPU 几乎空闲:一次 D 状态进程与 load average 的复盘
监控报警一台 8 核服务器 load average 飙到 50 多还在涨,我以为 CPU 要烧了 top 一看 CPU 却 95 空闲根本没进程烧 CPU,负载极高加 CPU 极闲自相矛盾。排查梳理:uptime 看 load 1 分钟 51,top 看 %Cpu id 95 空闲 us sy 加起来不到 5,ps -eo state 统计发现 48 个 D 状态进程,列出来全在访问一个 NFS…- 0
- 0
-
手动能跑 crontab 跑出来却是空的:一次 cron 运行环境的复盘
一个数据库备份脚本 backup.sh 我手动 bash 跑完全正常生成几百 MB 的备份文件,挂进 crontab 每天凌晨 2 点自动跑,跑出来的备份文件却是 0 字节空的,脚本一个字没改手动对 cron 错。排查梳理:grep CROND /var/log/cron 确认 cron 确实在 2 点执行了任务,在 crontab 行尾加 > /tmp/x.log 2>&1 …- 0
- 0
-
rm 删了文件 df 空间却没释放:一次硬链接与 inode 引用计数的复盘
服务器根分区快满了,我 rm 掉一个确认没用的 5GB 大文件 bigdata.bin,df 一刷新磁盘 Used 纹丝不动一个字节都没释放,ls 确认文件确实没了,du 也显示 /data 目录少了 5GB,可整个磁盘的 df 就是不动,文件既被删了又没被释放。排查梳理:删之前 ls -l 看那个文件第二列的链接数发现是 2 不是 1,stat 显示 Links 2,find / -inum 用…- 0
- 0
-
chmod 777 了还是 Permission denied:一次目录 x 权限与路径解析的复盘
上线一个服务启动报 Permission denied 读不到 /data/secure/conf/app.yaml,我直接把那个文件 chmod 777 改到不能再开放,重启还是一字不差的 Permission denied,切到运行账号手动 cat 也是被拒,一个 777 的文件全世界可读却读不了它。排查梳理:用 namei -l 把整条路径每一级权限列出来,发现 /data/secure 这…- 0
- 0
-
kill -9 杀不掉的进程:一次僵尸进程与父进程收尸的复盘
监控报警一台服务器进程数从两百多涨到三千多还在涨,ps aux 满屏 defunct,kill -9 一个个砸过去纹丝不动,Linux 里最狠的强制信号集体失效。排查梳理:ps 的 STAT 那列是 Z 即 Zombie 僵尸,数了一下 3100 个,看僵尸的父进程 PPID 全是 8000 一个不停 fork worker 的调度服务且它活得好好的;僵尸进程是已经退出已经死了的进程代码不跑了内存…- 0
- 0
-
free -h 显示内存快满了是内存泄漏吗:一次 Linux 内存认知的复盘
一台 16G 内存的服务器跑着 Java 服务,free -h 一看 used 那列写着 15G,只剩 1G,我第一反应内存泄漏熬夜导堆分析,结果 Java 堆才 2G 很健康,所有进程内存加起来才 4G,中间那 10 多个 G 谁吃了。排查梳理:lsof 排除已删文件句柄,/proc/meminfo 看到 11G 在 Cached 页缓存,free -h 的 available 一列写着 13G…- 0
- 0
-
SSH 报 REMOTE HOST IDENTIFICATION HAS CHANGED:一次主机密钥与中间人警告的复盘
重装一台服务器系统后 IP 没变再 SSH 连它,屏幕炸出一整屏 @@@ 警告 WARNING REMOTE HOST IDENTIFICATION HAS CHANGED 还说有人可能正在窃听你这是中间人攻击,连接被直接拒绝。排查梳理:重装系统时 /etc/ssh/ 下的主机密钥被重新生成,IP 还是这个 IP 但这台机器的主机密钥已是全新一把和 known_hosts 里的旧存根对不上;这个吓…- 3
- 0
-
磁盘还有空间却报 No space left on device:一次 inode 耗尽的复盘
一个写大量小文件的消息服务疯狂刷 No space left on device 新文件写不进,df -h 一看根分区只用了 58% 还剩 42G 空着,空间明明有为什么报没空间。排查梳理:lsof grep deleted 排除了已删文件句柄占空间,df -i 一看 inode 用满了 IUse 100%,那个目录里 580 万个几 KB 的小临时文件正好把 inode 总数耗尽;一个文件系统有…- 0
- 0
-
脚本手动跑正常放进 crontab 就 command not found:一次环境变量加载顺序的复盘
一个调 aws 命令的备份脚本,手动 bash backup.sh 跑得好好的文件传上去了,写进 crontab 每天凌晨跑日志里却报 aws command not found,同一个脚本同一台机器一个标点没改。排查梳理:我手动跑时 PATH 含 /usr/local/bin 找得到 aws,让 cron 打印它的 PATH 只有 /usr/bin:/bin 没有 /usr/local/bin …- 0
- 0
-
Too many open files 改了 ulimit 还是报:一次文件描述符上限的复盘
一个 systemd 管的 Java 服务在流量高峰刷 Too many open files,登服务器 ulimit -n 查到 1024 改成 65535,重启服务还是报,又改了 /etc/security/limits.conf 加 nofile 65535 重启还是报,能改的地方全改了服务死守 1024 不放。排查梳理:文件描述符上限不是一个全局开关它是每个进程各自的一份属性进程启动时从父…- 0
- 0
-
fstab 写错一行服务器再也起不来:一次开机救援模式的复盘
三个月前给服务器加了块数据盘挂到 /data 并写进 /etc/fstab 让它开机自动挂当时 df 验过挂载正常,三个月没碰过它机房停电重启后服务器起不来 SSH 连不上,控制台 VNC 看到卡在 emergency mode 要 root 密码。排查梳理:我在 fstab 里用设备名 /dev/sdb1 指定那块数据盘三个月前它确实叫 sdb1,但 /dev/sdX 不是盘的固有属性它由内核每…- 0
- 0
-
服务器时间差了 8 小时:一次 Linux 时区配置与时间认知的复盘
新买的云服务器配了个每天凌晨 3 点跑的归档任务 cron 写的 0 3 * * *,上线第二天发现它竟在上午 11 点跑撞上业务高峰,登服务器敲 date 显示的时间比北京时间整整慢 8 小时。排查梳理:服务器时间一点没错它连着 NTP 对时指向的绝对时刻和手机分毫不差,差的不是时间是时区这台云主机出厂默认时区是 UTC,同一个时刻用 UTC 这把尺子读是 19 点用北京时间 UTC+8 读是次…- 0
- 0
-
服务器一重启我的服务就挂:一次 systemd 启动顺序与依赖的复盘
把自写的 Java 应用做成 systemd 服务设了开机自启它要连本机 MySQL,手动 systemctl restart myapp 永远成功连试十几次稳如磐石,可服务器整机重启后 myapp 十有八九是 failed 日志清一色连数据库 Connection refused 手动一启又立刻好。排查梳理:systemd 不是从上往下跑的开机脚本,它为了开机快会把没声明先后关系的服务并行同时启…- 0
- 0
-
为了连数据库我把端口开到公网:一次 SSH 端口转发该早点学会的复盘
在笔记本上装了数据库客户端想连服务器 MySQL 连不上,搜到一句把 bind-address 改成 0.0.0.0 就能远程连了照做能连了,几天后数据库里多出一张 README_TO_RECOVER 表是勒索信数据被下载清空。排查梳理:服务启动要 bind 到一个地址 127.0.0.1 只有本机能连 0.0.0.0 是所有网卡含公网谁都能连,MySQL 默认 bind 127.0.0.1 是一…- 0
- 0
-
rsync 一跑备份全没了:一次 --delete 与源目录未挂载的事故复盘
配了个每晚自动跑的备份脚本核心一行 rsync -av --delete 把数据盘 /mnt/databak 镜像到 /backup/db,跑了大半年稳稳当当,某天要从备份捞数据打开 /backup/db 发现几百个文件全没了空的,翻日志昨晚那次成功了没一个 error 却把备份全删了。排查梳理:rsync 不是 cp,cp 是把源叠加到目标 rsync 带 --delete 是镜像让目标变得和源…- 0
- 0
-
文件中文全是乱码:一次 Linux 字符编码与字节转换的排查复盘
同事用微信发来一个 order.csv 让导数据库,存到 Linux 服务器上 cat 一看满屏鬼画符一个中文都认不出,以为文件传坏了让重发还是乱,可同事说他用 Excel 打开公司名地址清清楚楚全是好好的中文,同一个文件他说正常我说乱码。排查梳理:文件里存的从来不是字是一串字节 0 到 255 的数字,字节本身没有意义要把字节变成人能读的字符必须有一本叫编码的翻译词典,GBK 这本词典说 b9 …- 0
- 0
-
云盘扩容了 df 还是旧的:一次 Linux 磁盘分区与文件系统扩容的复盘
根分区快满了在云控制台把系统盘从 50G 扩到 100G 显示扩容成功,SSH 上去 df -h 看根分区还是 50G,等过也重启过多出来的 50G 就是用不上。排查梳理:一块盘的可用空间是三层套起来的物理磁盘包着分区分区包着文件系统里层永远不超过外层,云控制台扩容只扩了最外层物理磁盘 vda 变 100G,中间的分区 vda1 大小记在磁盘分区表里云盘扩容根本不改分区表所以分区还是 50G,文件…- 0
- 0
-
rpm 说装好了程序却跑不起来:一次 Linux yum 依赖与 --nodeps 强装的复盘
在 CentOS 7 上装一个第三方监控 agent,yum install 报一串依赖缺失装不上,急着上线就用 rpm -ivh --nodeps --force 强行装上了,rpm -q 查得到以为装好了,几天后 agent 启动失败日志报 error while loading shared libraries libssl.so.10 cannot open shared object f…- 0
- 0
-
服务器重启后 IP 没了:一次 Linux 网络运行时状态与持久化配置的复盘
一台 CentOS 7 内网服务器一个月前用 ip addr add 192.168.1.50/24 dev eth0 配好了固定 IP,ping 通服务正常稳跑一个月,机房断电检修统一重启后这台机器彻底失联,接显示器进去看 eth0 上没有任何 IP,而 ifcfg-eth0 配置文件里写的还是 BOOTPROTO=dhcp 根本没有那个静态地址。排查梳理:Linux 配置分两层运行时状态活在内…- 0
- 0
-
手敲能跑脚本里却 command not found:一次 Linux PATH 与 shell 环境的排查复盘
写了个部署脚本里有一行 node build.js,手动一行行执行 node 跑得好好的,挂进 crontab 自动跑就报 deploy.sh: line 8: node: command not found。可手敲 node -v 清清楚楚回 v18.16.0,which node 也指出它在 /root/.nvm 下。同一台机器同一个 node,我能用 cron 不能用。排查梳理:shell …- 0
- 0
-
df 说磁盘满了 du 却找不到空间:一次 Linux 幽灵文件占用磁盘的复盘
一台日志服务器根分区告警满了,df -h 显示 / 用了 49G 只剩 1G,可 du -sh /* 把所有目录加起来才 13G,中间 36G 凭空消失,不属于任何一个看得见的文件。lsof | grep deleted 一查,一个已被删除的 app.log.1 体积 35G 还被 java 进程开着。排查梳理:du 沿目录树累加有名字的文件,df 直接问文件系统用了多少数据块,一个文件只要数据块…- 2
- 0
-
改完 sudoers 谁都 sudo 不了:一次 /etc/sudoers 语法错误锁死的复盘
给同事的 deploy 账号加几条 sudo 权限,直接 vi /etc/sudoers 末尾敲了一行,保存退出。随手一个 sudo whoami 屏幕弹出 sudo: parse error in /etc/sudoers near line 92,后面跟着 no valid sudoers sources found, quitting——sudo 整个瘫了。想 sudo vi 改回来,这命令…- 3
- 0
-
程序一启动就报 cannot open shared object file:一次 Linux 动态链接库路径的排查复盘
一个同事编译好的程序拷到新机器上,一启动就报 error while loading shared libraries: libdp.so.6: cannot open shared object file。可这个 .so 文件 find 一下明明就在 /opt/dataproc/lib,大小权限全正常,亲手 cat 也读得出来。ldd 一看 libdp.so.6 显示 not found,LD_…- 7
- 0
Linux教程
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!
























