Linux服务器运维命令速查手册(全新整理)

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 755644,其实够用了。

chmod 755 file
chown -R user:group file
ls -l username

权限速记:r=4 w=2 x=1755 就是 rwxr-xr-x644rw-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 auxgrep 配合用是最常见的姿势。

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

端口监听,ssnetstat 快,新系统推荐用 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
本文链接:https://www.orcy.net.cn/4331.html,转载请附上原文出处链接

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注