跳到正文
我每天真的会敲的那几条 Linux 命令
我每天真的会敲的那几条 Linux 命令

我每天真的会敲的那几条 Linux 命令

Linux 命令成千上万,日常管服务器真正高频的就那么几组。这篇不堆大全,只记我每天真的会敲的,以及为什么是这几组——对应「喘不喘、谁占了、日志说什么」三件事。

速读#

这篇不是 Linux 命令大全,只收我管服务器时真的高频会敲的几组。登上机器先问三件事:喘不喘、谁占了、日志说什么;htopssjournalctl 这些命令只是服务这三个问题。

登服务器先问三句#

问题含义
喘不喘机器负载正常吗?
谁占了端口 / 进程冲突在谁那?
日志说什么服务自己告诉我什么?

命令会忘,问题不会。先有问题再有命令,顺序反过来就成了背大全。

喘不喘#

Terminal window
htop # 交互式看 CPU/内存/进程(需 apt install htop)
uptime # 负载三个数:1 / 5 / 15 分钟平均
df -h # 磁盘
free -h # 内存
du -sh ./* # 当前目录下各项大小

htop 用得最多:比自带 top 好看,F6 排序、F9 杀进程。apt install htop 是我到手后第一条命令。

负载数字要对着核数读:1 核的机器 load 1.0 就是满载,0.2 和 2.0 是两个世界。三个数从左到右是 1、5、15 分钟的平均——左低右高说明高峰刚过去,左高右低说明事情正在变糟,同样的数字,方向不同结论相反。

du -sh ./* 管磁盘:Docker overlay2、没清的日志、忘删的备份——磁盘满是最常见告警原因之一。df -h 告诉你「满了」,du 负责回答「被谁吃了」——一个看整体水位,一个逐层往下挖,配合着用。

日志本身也是磁盘大户。journal 占多少、怎么收,它自己就能管:

Terminal window
journalctl --disk-usage # 日志占了多少
journalctl --vacuum-size=200M # 收缩到上限内

谁占了#

Terminal window
ss -tulnp # 所有监听端口及进程
ss -tulnp | grep 80 # 只看 80
kill <PID> # 先优雅退出(SIGTERM)
kill -9 <PID> # 强制(SIGKILL,最后手段)

ssnetstat 的现代替代。参数其实拆得开:t tcp、u udp、l 只看监听、n 显示数字端口不反解、p 带上进程——但记不住也没关系,当一个整体背下来就行。加服务、改 Nginx、排查「端口已被占用」,第一个动作往往是它。

kill 的顺序是纪律:先发默认的 SIGTERM,给进程一个体面收尾的机会(写完缓冲、释放锁、断开连接),确认它不理会再上 -9——SIGKILL 由内核直接回收,进程连遗言都没有。上来就 -9,等于剥夺进程善后的机会。

日志说什么#

Terminal window
journalctl -u myapp -f # 实时跟 systemd 服务日志
journalctl -u myapp --since today # 只看今天
tail -f /var/log/nginx/error.log # 文件日志

-f 是 follow。部署后盯着它滚,看到正常请求一行行过,就知道服务在跑——可观测给我的真实价值。

为什么优先 journalctl#

自己部署的东西多用 systemd 守护,日志归 journalctl 统一收;Nginx 这类自己写文件的才用 tail -f

统一收日志,是 systemd 给可观测面的红利——不用每个服务自己管重定向、切割和落盘位置,-u 服务名 一个入口全找到。

高频小抄#

需求命令
磁盘满了找大文件du -sh ./* | sort -h
谁占了端口ss -tulnp | grep <端口>
实时看服务日志journalctl -u <服务> -f
看最近的报错journalctl -p err --since today
日志占了多少磁盘journalctl --disk-usage

留下的不是命令清单,是三问框架:喘不喘、谁占了、日志说什么——登任何服务器先问这三句。

版权许可

CC BY-NC-SA 4.0 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

相关文章

s1oopX

登录 s1oopX