排序
跨地域传输慢,开 BBR 拥塞控制并验证生效
传输慢先确认内核支持 BBR,4.9 以上才有。 查当前算法和可用列表两个内核项。 临时切换只改运行时,重启就丢。 写进 /etc/sysctl.d 下的 conf 文件才持久。 验证用 ss -ti,看连接是否标了 bbr...
报 fork 失败或资源暂时不可用,先看进程数上限
fork 失败先查进程数上限,不是内存不够。 当前用户看 ulimit -u,这是软限制。 系统级看 pid_max 和 threads-max 两项。 临时放开只影响当前会话,退出即失效。 永久改 /etc/security/limits.d...
命令可能卡住不返回,用 timeout 限定最长运行时间
命令卡住不返回,套一层 timeout 兜底。 timeout 30s 命令,超时先发 TERM 信号。 进程不理 TERM 就加 -k,宽限几秒再 KILL。 脚本里判断退出码,124 表示已超时。 需要真实退出码就加 --preser...
只给某个用户单独开目录权限,用 setfacl 别动属主
别改属主属组,用 ACL 给单个用户加权限。 执行 setfacl -m u:alice:rx 目录路径。 递归加 -R,新建文件要默认 ACL 才继承。 默认 ACL 写 d:u:alice:rx,新建自动继承。 用 getfacl 核对,文件...
只跑一次的任务别塞进 crontab,用 at 安排
临时任务用 at 排一次,别硬塞进 crontab。 先确认 atd 服务在跑,systemctl status atd 看状态。 at 10:30 回车后逐行敲命令,Ctrl+D 提交。 atq 看队列,atrm 加编号撤销。 输出默认发本地邮...
终端中文全变问号,检查 locale 和 LANG 设置
中文变问号,多半是 locale 没设 UTF-8。 先看 locale,LANG 为空或是 C 就中了。 用 locale -a 查有没有 zh_CN.utf8。 缺就装语言包,Debian 跑 locale-gen。 RHEL 系装 glibc-langpack-zh。 ...
用 ssh -R 把内网服务临时映射到公网机器
内网机器主动连出去,公网机就能反向访问它的端口。 命令写 ssh -R,冒号左边是公网机端口,右边是内网地址。 默认只绑本地回环,外部访问不到,这是最常见的卡点。 公网机 sshd 打开 GatewayPo...
新建的用户不能 sudo,把它加进 sudo 组
用 root 或有 sudo 权限的账号执行,把用户加进 sudo 组。 -aG 里的 a 不能省,否则会把用户从其他附加组踢掉。 改完让该用户重新登录,组关系要重开会话才生效。 用 id 或 groups 看一眼,输出...
用 smartctl 提前看硬盘健康状态和重分配扇区
先装 smartmontools,Debian 系用 apt,RHEL 系用 dnf。 查健康总评跑 smartctl -H,通过会写 PASSED。 再看属性表里的重分配扇区计数,非零就要备份。 机械盘关注待映射扇区和寻道错误率。 SSD...
开机默认进了旧内核,改 GRUB 的默认启动项
默认项改 /etc/default/grub 的 GRUB_DEFAULT。 序号从 0 开始数,对应菜单里第几项。 也可以填 saved,记住上次手动选的那项。 改完必须重建配置,别手改 grub.cfg。 Debian 系跑 update-grub...
同网段有 IP 冲突,用 arping 找出重复的地址
同网段两台机配了同一个 IP,表现是随机丢包、SSH 掉线。 在网关或交换机上看 ARP 表,会看到同一地址两个 MAC。 用 arping 指定网卡发请求,回复里 MAC 不一致就是冲突。 扫全网段用 arp-scan...
半夜自动升级把服务重启了,关掉无人值守更新
半夜重启多半是自动升级干的。 先看 /etc/apt/apt.conf.d/20auto-upgrades。 把引号里的 1 全改成 0,定期更新和升级都停。 服务名是 unattended-upgrades,用 systemctl 禁掉。 最后查一遍定时...
/tmp 里的旧文件不会自己清,用 tmpfiles 规则管起来
旧文件堆着没人管,靠手工 rm 迟早会忘。 在 /etc/tmpfiles.d 建一个 conf,文件名随意。 规则五列:类型、路径、权限、属主、时限。 类型写 d 是目录,时限写 7d 就是七天没动就删。 清理由 sy...
用 lsof 查是哪个进程占着文件或端口
文件或端口被占用,先定位是哪个进程拿着它。 lsof 后面跟文件路径,直接列出打开该文件的进程。 查端口用 -i 加协议和端口号,占用方一目了然。 输出里看 PID 和 COMMAND 两列,再决定杀还是等...
用 dd 测磁盘真实写入速度,注意别覆盖有用数据
测顺序写入速度最直接的办法是 dd 写零。 of 指向一个新建的空文件,绝不能写成设备。 加 oflag=direct 绕过缓存,数字才接近真实。 bs 给 1M,count 给两千就是测两 GB。 报告里的速度换算成 M...
用 watch 定时刷新命令输出,盯住变化
watch 默认两秒刷一次,直接跟上要盯的命令。 间隔用 -n 改,写 0.5 就是半秒刷一次。 加 -d 高亮变化前后的差异,一眼看出哪里动了。 命令里有管道或引号,整条用双引号包住再传。 加 -t 去掉...
用 heredoc 在脚本里写多行文本或批量喂给命令
heredoc 用一对自定义标记包裹多行文本,<<EOF 开头,结尾单独一行写 EOF。 标记必须顶格写,前后不能有空格,否则会报未找到结束符。 写文件用 cat 加重定向,把内容喂给命令则接在命令...
用 split 切分大文件,再用 cat 合并回去
split 切完得到 xaa、xab 这类序列文件,后缀自己定更清楚。 按大小切用 -b,按行数切用 -l,按段数切用 -n。 留足磁盘空间,切一份等于多占一份容量。 合并用 cat 按通配符顺序拼,先确认没有...
用 ps 树形视图理清进程的父子关系
ps 默认按 PID 排序,看不出谁拉起了谁。 加 --forest 用缩进画树,PPID 列就是父进程号。 从根往下看,异常的一串进程通常挂在同一个父底下。 定位到父进程后,用 pstree -p 看它下面的完整成...
用 nc 临时监听一个端口,验证两端是否通
一端监听一端连接,两边能互发字符就说明链路是通的。 监听侧写 nc -l 9000,前台阻塞,等对端连进来。 老版本 netcat 要写成 nc -l -p 9000,别漏 -p。 只想探端口用 nc -vz 目标IP 9000,卡住...
定时脚本可能重复执行,用 flock 加文件锁
任务偶尔跑超时,下一次又启动,两份脚本同时改同一批数据。 最省事的办法是给命令套一层 flock,用文件当锁。 加 -n 是拿不到锁就立刻退出,不堆积任务。 想让后来者等一会儿,用 -w 指定等待...
频繁提示输 sudo 密码,调整免密有效期
sudo 默认记住密码约十五分钟,超时再问。 想改时长,用 sudo visudo 编辑 /etc/sudoers。 加一行 Defaults timestamp_timeout=30,单位分钟。 设成 0 是每次都要密码,负数永久免密,风险大别...
Ubuntu 用 netplan 把网卡改成静态 IP
Ubuntu 17.10 之后网络配置统一收在 netplan 里。 改错会直接断网,动手前先备份一份,并留个本地终端。 配置文件在 /etc/netplan/ 下,后缀是 yaml。 改完先跑 netplan try 验证,超时没确认会...
下载完文件先校验哈希,确认没被截断或篡改
同一份文件用 sha256sum 算出的值和对端公布的一致,才算下载完整。 校验值一般和安装包放在同一目录,后缀是 .sha256 或在下载页公布。 带上 -c 参数把校验文件喂给它,会自动逐行比对并报 OK ...
用 diff 生成补丁文件,再用 patch 打到目标机器上
用 diff -u 生成统一格式补丁,带上下文,patch 容错更好。 命令是 diff -u 旧文件 新文件 > 改动.patch,路径按需保留。 目标机上用 patch -p1 < 改动.patch,-p 后的数字是剥掉几层路径...
控制 hosts 文件和 DNS 的解析先后顺序
决定这个顺序的是 /etc/nsswitch.conf 里的 hosts 那一行。 默认写法是 files dns,先查本机 hosts 再走 DNS 查询。 想让 DNS 优先就换成 dns files,但内网同名记录会被外部覆盖。 只改一行就...
批处理抢光 CPU 和磁盘,用 nice 和 ionice 降优先级
nice 调 CPU 调度优先级,范围 -20 到 19,数值越大越让路。 磁盘 I/O 用 ionice 调,class 2 表示 best-effort。 级别 0 到 7,越大越谦让,idle 级别则是完全空闲才跑。 已经在跑的进程用 ren...
用 systemctl –failed 找出开机没起来的服务并定位原因
systemctl --failed 先列出所有失败单元,一眼看到是谁没起来。 按单元名查日志:journalctl -u 单元名 -b 只看本次开机。 再看 status 里的退出码和 cat 打印的单元定义,定位依赖或路径问题。...
内网服务器连不上源站,给 yum 和 apt 配代理
yum 和 dnf 只认配置文件里的 proxy 项,环境变量不生效。 在 yum.conf 的 main 段加一行 proxy=http://代理IP:3128。 apt 在 apt.conf.d 下新建文件,写 Acquire 的 http 代理项。 配完先用 cu...
改 SSH 监听端口后连不上,防火墙和 SELinux 都要同步
确认改的是生效的那个配置文件,conf.d 里的同名项会覆盖主文件。 防火墙放行新端口:firewalld 用 --add-port,ufw 用 allow。 开了 SELinux 还得把新端口登记成 ssh_port_t,否则拒绝监听。 ...


