管服务器这事,大部分时候就是那几个操作反复用。这篇整理了我日常运维中最常用的命令和操作,都是实战中总结出来的。
# 创建新用户并设置家目录 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 # 修改文件所有者
现在大多数 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
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
系统管理没有什么炫技的操作,就是把基础的东西做扎实。权限别乱给,日志要会看,磁盘定期检查,防火墙别忘开。做好这些,大部分问题都能避免。