Linux服务器运维命令速查手册(全新整理)
一、系统基础信息查看
接手一台新机器,第一件事就是摸清底细,别想着干活。
uname -a # 内核版本
cat /etc/os-release # 系统发行版信息
hostnamectl # 主机名 + 系统概览
uptime # 运行时长 + 系统负载
CPU这块,lscpu看个大概就够了,想深挖再去翻 /proc/cpuinfo。一般情况不用看那么细。
lscpu
cat /proc/cpuinfo
mpstat -P ALL # 看核心实时使用率,排查 CPU 不均衡的很好用
内存的话,free -h是最常用的,简单直接,htop我个人更喜欢,颜色好看,信息也全,装了就别卸。
free -h
cat /proc/meminfo
htop
磁盘与挂载,df -hT是必查的,lsblk看设备结构,findmnt用得少但偶尔挺有用。
df -hT
lsblk
mount | column -t
findmnt
二、文件与目录管理
这部分没什么好说的,基本功,天天用。
ls -lh
mkdir -p dir/subdir
touch file
cp -a src dst # -a 这个参数要记住,香得很
mv -f src dst # 移动覆盖,支持文件改名
rm -rf dir # 这个命令使用之前多想一秒,真的
查找和统计,find是个好东西,就是参数多,记不住很正常,用的时候查一下就行。
find / -name "*.log"
du -sh * # 看哪个目录占地方,排查磁盘满了必用
wc -l file
stat file
权限这块,说实话很多人只记得 chmod 755 和 644,其实够用了。
chmod 755 file
chown -R user:group file
ls -l username
权限速记:r=4 w=2 x=1,755 就是 rwxr-xr-x,644 是 rw-r--r--,背不下来就这样推算。
三、用户与权限管理
useradd username
passwd username
usermod -aG wheel username # 加 wheel 组,RHEL 系给 sudo 权限用这个
userdel -r username # -r 会连家目录一起删,注意
umask / /etc /last
sudo 免密这个配置,生产环境要谨慎,测试环境随意。
visudo
# 添加一行
username ALL=(ALL) NOPASSWD:ALL
四、进程与服务管理
进程查看这几个命令,ps aux 和 grep 配合用是最常见的姿势。
ps aux
ps -ef | grep nginx
htop
杀进程,正常情况用 kill PID 就够了,kill -9 是最后手段,别动不动就 -9。
kill PID
kill -9 PID
pkill nginx
systemd 这套,现在基本标配了,记住这几个就行:
systemctl start/stop/restart/status nginx
systemctl enable nginx # 开机启动,单看服务是否启动别忘了加这个
systemctl daemon-reload
systemctl list-units --type=service
五、网络与端口排查
这一块,坦白讲运维日常出现频率最高的场景,端口不通、服务起不来、网络抖动,基本都要用到这些。
ip a
ip r
nmcli device status
端口监听,ss 比 netstat 快,新系统推荐用 ss,老系统 netstat 也没问题。
ss -lntup
netstat -lntup
lsof -i:8080 # 找占用 8080 端口的进程,直接用这个
连通性测试,ping 是最基础的,curl -I 测 HTTP 响应很好用,traceroute 排查路由问题。
ping 8.8.8.8
traceroute www.baidu.com
curl -I http://127.0.0.1
抓包,tcpdump 这个工具,不用每天用,但关键时刻能救命。
tcpdump -i eth0 port 80
tcpdump -i any host 1.1.1.1
六、磁盘、LVM 与存储
fdisk -l # GPT 分区用 parted,fdisk 对大硬盘支持不太好
parted /dev/sdb
mkfs.xfs /dev/sdb1 # 格式化文件系统,记得先备份
fsck -y /dev/sdb1
LVM 这套,扩容是最常用的场景,顺序别搞错:
pvcreate /dev/sdb
vgcreate vg0 /dev/sdb
lvcreate -L 10G -n lvdata vg0
lvcreate -l +100%FREE -n lvdata vg0
lvextend -L +5G /dev/mapper/vg0-lvdata # 最后这步别忘,不然空间还是没扩进去
xfs_growfs /dev/mapper/vg0-lvdata
七、日志与问题定位
出了问题先看日志,这是铁律,不管什么情况先看日志再说。
journalctl -xe # 出问题第一时间跑这个
journalctl -u nginx # 看某个服务的日志
journalctl --since "1 hour ago" # 看最近一小时的日志,日志太多的时候很有用
常见日志路径,记几个最常用的就行:
| 日志文件 | 用途 |
|---|---|
/var/log/messages |
系统通用日志(RHEL 系) |
/var/log/syslog |
系统通用日志(Debian 系) |
/var/log/secure |
SSH 登录 / 认证日志 |
/var/log/nginx/ |
Nginx 访问 + 错误日志 |
/var/log/audit/audit.log |
SELinux 审计日志,SELinux 拦了东西来这查 |
tail -f /var/log/messages # 实时跟踪,排障时开着很有用
tail -n 100 file.log
八、软件包管理
RHEL 系现在基本都用 dnf 了,yum 也还能用,底层其实差不多。
dnf install nginx
dnf update
dnf list installed
dnf provides /usr/bin/netstat # 不知道某个命令在哪个包里,用这个查
Ubuntu / Debian:
apt update # 装东西之前先 update,这个习惯要有
apt install nginx
apt upgrade
apt list --installed
九、防火墙与安全
firewalld,RHEL 系默认的,--permanent 参数别忘,不加的话重启就没了。
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
iptables,老系统还在用,iptables -F 清空规则这个操作要小心,远程操作的话可能把自己踢出去。
iptables -L -n
iptables -F
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 谨慎
SELinux,很多人遇到莫名其妙的权限问题,第一反应是 setenforce 0,这个能解决问题但不是好习惯,生产环境还是要摸清原因。
getenforce
setenforce 0
semanage port -l
十、计划任务
crontab 格式:分时日月周命令,记不住就用在线工具生成,没什么丢人的。
crontab -e
crontab -l
0 2 * * * /usr/bin/sh/backup.sh # 每天凌晨 2 点做备份
at 用得少,但偶尔需要一次性定时任务的时候挺方便:
at 21:00
atq
atrm 1
十一、性能排障
top / htop # 磁盘 I/O 有问题,先跑这个
iostat -x 1
vmstat 1 # 看 CPU 负载,比 top 更适合看问题
sar -n DEV 1
抽象思路,我觉得这个顺序很重要,很多人上来就看应用日志,其实应该先从系统层面往下走:
负载 → CPU → 内存 → 磁盘 → 网络 → 应用 → 日志
按这个顺序来,基本不会走太多弯路。
十二、高频命令组合
这几个组合,说实话比单个命令更实用,直接背下来。
# 找出占用 80 端口的进程
ss -lntup | grep 80
# 找出大于 1G 的大文件,排查磁盘满了用这个
find / -type f -size +1G
# 查看系统负载记录,服务被打爆的时候看看这个
last
# 检查服务器是否被打垮,服务卡的时候先看这组问题第一步
uptime && free -h && df -h
# 看哪个进程吃内存最多
ps aux --sort=-%mem | head -20
# 看哪个 IP 连接最多,被 CC 了用这个
netstat -an | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c | sort -rn | head -20