Linux 系统管理实用指南

系统管理 · 运维经验

管服务器这事,大部分时候就是那几个操作反复用。这篇整理了我日常运维中最常用的命令和操作,都是实战中总结出来的。

用户与权限管理

# 创建新用户并设置家目录
sudo useradd -m -s /bin/bash username

# 设置密码
sudo passwd username

# 将用户添加到 sudo 组
sudo usermod -aG sudo username

# 查看用户所属的组
groups username

# 修改文件权限(常用)
chmod 755 script.sh      # 所有者可读写执行,其他人可读可执行
chmod 600 config.yml     # 仅所有者可读写
chown user:group file    # 修改文件所有者

systemd 服务管理

现在大多数 Linux 发行版都用 systemd 管理服务,这几个命令必须熟练。

# 启动 / 停止 / 重启服务
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

# 查看服务状态
sudo systemctl status nginx

# 设置开机自启 / 取消自启
sudo systemctl enable nginx
sudo systemctl disable nginx

# 查看所有正在运行的服务
systemctl list-units --type=service --state=running

# 查看服务日志
journalctl -u nginx -f            # 实时跟踪
journalctl -u nginx --since today  # 今天的日志

磁盘与存储

# 查看磁盘使用情况
df -h

# 查看当前目录大小
du -sh *

# 找出占空间最大的目录
du -ah /var | sort -rh | head -20

# 查看磁盘分区
lsblk

# 查看 inode 使用情况(文件数满了也会导致无法写入)
df -i
磁盘空间不足时,先用 du 定位大文件,常见的空间杀手:日志文件(/var/log)、Docker 镜像、包管理缓存。

网络排查

# 查看网络接口信息
ip addr show

# 查看端口监听情况
ss -tlnp

# 测试端口连通性
nc -zv 192.168.1.1 80

# 查看路由表
ip route

# DNS 查询
dig example.com
nslookup example.com

# 抓包分析(需要 tcpdump)
sudo tcpdump -i eth0 port 80 -n

日志排查

出了问题先看日志,这是排查问题的第一步。

# 实时查看系统日志
tail -f /var/log/syslog

# 查看最近的认证日志(登录、sudo 等)
tail -100 /var/log/auth.log

# 用 journalctl 按时间筛选
journalctl --since "2024-01-01 00:00:00" --until "2024-01-02 00:00:00"

# 查看内核日志(硬件问题排查)
dmesg | tail -50

# 搜索日志中的关键词
grep -i "error\|fail\|critical" /var/log/syslog | tail -30

系统资源监控

# 查看 CPU 和内存使用(实时)
top
htop           # 更友好的界面,需安装

# 查看内存使用
free -h

# 查看 CPU 信息
lscpu

# 查看系统运行时间和负载
uptime

# 查看谁在登录系统
w
last | head -10

防火墙(UFW)

Ubuntu/Debian 系统推荐用 UFW,比直接写 iptables 规则简单很多。

# 启用防火墙
sudo ufw enable

# 查看状态和规则
sudo ufw status numbered

# 放行端口
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 删除规则(按编号)
sudo ufw delete 3

# 只允许特定 IP 访问 SSH
sudo ufw allow from 192.168.1.100 to any port 22

系统管理没有什么炫技的操作,就是把基础的东西做扎实。权限别乱给,日志要会看,磁盘定期检查,防火墙别忘开。做好这些,大部分问题都能避免。