Linux 云服务器运维必备命令速查手册
快速结论
- 掌握本文约 60 条核心命令,可以处理 90% 的日常运维场景
- 首先学会:SSH 登录、文件操作、进程管理、日志查看
- 出问题时:先看日志(
tail -f /var/log/),再看资源(top/df -h) - 命令不熟时,用
man <命令>或<命令> --help查看帮助
一、SSH 远程连接
# 基础 SSH 登录
ssh root@your-server-ip
# 指定端口(默认 22,建议修改为其他端口)
ssh -p 2222 root@your-server-ip
# 使用密钥文件登录(更安全)
ssh -i ~/.ssh/my_key.pem root@your-server-ip
# 保持连接不断开(心跳设置)
ssh -o ServerAliveInterval=60 root@your-server-ip
# 通过跳板机登录内网服务器
ssh -J jump@jump-host.com root@internal-server-ip
# 复制文件到服务器(SCP)
scp local_file.txt root@your-server-ip:/remote/path/
# 从服务器下载文件
scp root@your-server-ip:/remote/file.txt ./local/
# 使用 rsync 同步目录(增量同步,更高效)
rsync -avz --progress ./local-dir/ root@your-server-ip:/remote-dir/SSH 免密登录与公钥配置
# 1. 本地生成密钥对(ed25519 更短更安全;一路回车即可)
ssh-keygen -t ed25519 -C "notes@laptop"
# 2. 把公钥上传到服务器(自动写入 authorized_keys)
ssh-copy-id root@your-server-ip
# 没有 ssh-copy-id 时手动追加
cat ~/.ssh/id_ed25519.pub | ssh root@your-server-ip \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# 3. 修正权限(权限过宽会被拒绝登录)
ssh root@your-server-ip "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
# 4. 验证:不再提示输入密码即成功
ssh root@your-server-ip确认密钥能登录后,再考虑关闭密码登录(顺序反了会把自己锁在门外):
# 服务器上编辑 /etc/ssh/sshd_config
# 设置 PubkeyAuthentication yes、PasswordAuthentication no
sudo systemctl reload sshd # Debian/Ubuntu 为 ssh云厂商控制台一般也支持创建密钥对并绑定实例,新建机器时直接选密钥登录更省事。SSH 加固的整体策略(端口、安全组、Fail2ban)见云服务器安全加固指南。
二、系统信息查看
# 查看系统版本
cat /etc/os-release
uname -a # 内核版本
lsb_release -a # 发行版信息
# 查看 CPU 信息
lscpu # CPU 架构详情
nproc # CPU 核心数
cat /proc/cpuinfo | grep "model name" | head -1
# 查看内存使用
free -h # 人类可读格式
cat /proc/meminfo | head -10
# 查看磁盘使用
df -h # 各分区使用情况
du -sh /var/log/ # 指定目录大小
du -sh /* 2>/dev/null | sort -rh | head -20 # 最大目录排行
# 查看系统运行时间和负载
uptime # 运行时长 + 平均负载
w # 当前登录用户和系统负载
# 查看系统时间
date
timedatectl # 含时区信息三、文件和目录管理
# 基础文件操作
ls -lah # 列出文件(含隐藏文件,人类可读大小)
cp -r /src/dir /dst/dir # 递归复制目录
mv old_name new_name # 移动/重命名
rm -rf /path/to/dir # 强制删除目录(谨慎使用!)
# 查找文件
find /var/log -name "*.log" -mtime -7 # 7天内修改的 .log 文件
find / -size +100M 2>/dev/null # 大于 100MB 的文件
which nginx # 查找可执行文件路径
locate nginx.conf # 快速查找(需要 updatedb)
# 文件内容查看
cat /etc/hosts # 查看全部内容
less /var/log/syslog # 分页查看(q 退出)
tail -f /var/log/nginx/access.log # 实时追踪日志
tail -n 100 /var/log/syslog # 最后 100 行
head -n 50 /etc/nginx/nginx.conf # 前 50 行
grep "ERROR" /var/log/app.log | tail -20 # 过滤错误日志
# 文件权限
chmod 755 /var/www/html # 修改权限(所有者读写执行,其他读执行)
chmod +x deploy.sh # 添加执行权限
chown -R www-data:www-data /var/www/html # 修改所有者
ls -la /etc/nginx/ # 查看权限详情
# 压缩与解压
tar -czf backup.tar.gz /var/www/html/ # 压缩目录
tar -xzf backup.tar.gz -C /restore/ # 解压到指定目录
zip -r backup.zip /var/www/ # ZIP 压缩
unzip backup.zip -d /restore/ # ZIP 解压四、进程管理
# 查看进程
ps aux # 所有进程详情
ps aux | grep nginx # 过滤特定进程
pgrep nginx # 获取进程 PID
pidof nginx # 同上
# 实时进程监控
top # 实时资源占用(q 退出,M 按内存排序,P 按CPU排序)
htop # 更友好的 top(需安装:apt install htop)
iotop # 磁盘 I/O 实时监控
# 终止进程
kill PID # 发送 SIGTERM 信号(优雅终止)
kill -9 PID # 强制终止(SIGKILL)
killall nginx # 按进程名终止所有同名进程
pkill -f "python app.py" # 按匹配条件终止
# 后台运行
nohup ./my_script.sh & # 后台运行,关闭终端不停止
screen -S myapp # 创建命名 screen 会话
screen -r myapp # 恢复 screen 会话
tmux new -s myapp # 创建 tmux 会话(推荐)
tmux attach -t myapp # 恢复 tmux 会话
# 服务管理(systemd)
systemctl status nginx # 查看服务状态
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 平滑重载配置
systemctl enable nginx # 设置开机自启
systemctl disable nginx # 取消开机自启
systemctl list-units --type=service # 列出所有服务
journalctl -u nginx -f # 实时查看服务日志
journalctl -u nginx --since "1 hour ago" # 查看近 1 小时日志五、网络诊断
# 网络连通性测试
ping -c 4 google.com # Ping 测试(4次)
traceroute google.com # 路由追踪
mtr google.com # 实时路由监控(需安装)
# DNS 查询
nslookup example.com # DNS 解析
dig example.com # 详细 DNS 信息
dig example.com MX # 查询 MX 记录
host example.com # 简单 DNS 查询
# 端口和连接
netstat -tlnp # 查看监听端口(需安装net-tools)
ss -tlnp # 同上(更现代的替代命令)
ss -s # 连接统计摘要
lsof -i :80 # 查看使用 80 端口的进程
telnet target-host 3306 # 测试端口连通性
nc -zv target-host 3306 # 测试端口(更推荐)
# 网络流量
ifconfig # 查看网卡信息(legacy)
ip addr # 查看 IP 地址(推荐)
ip route # 查看路由表
iftop # 实时网络流量(需安装)
nethogs # 按进程分组的流量统计(需安装)
curl -o /dev/null -s -w "%{speed_download}" http://example.com # 测试下载速度
# 防火墙管理(UFW 简化防火墙)
ufw status # 查看防火墙状态
ufw allow 22/tcp # 开放 SSH 端口
ufw allow 80/tcp # 开放 HTTP 端口
ufw allow 443/tcp # 开放 HTTPS 端口
ufw deny 3306/tcp # 禁止 MySQL 外部访问
ufw enable # 启用防火墙
ufw reload # 重载规则
# iptables(更底层的防火墙)
iptables -L -n # 列出所有规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH六、用户和权限管理
# 用户管理
whoami # 当前用户
id # 当前用户 ID 和组信息
who # 当前登录用户列表
last # 登录历史记录
useradd -m -s /bin/bash deployer # 创建用户(带家目录)
passwd deployer # 设置密码
usermod -aG sudo deployer # 添加到 sudo 组
userdel -r olduser # 删除用户(含家目录)
# sudo 权限
sudo su - # 切换到 root(不推荐长期使用 root)
sudo -l # 查看当前用户的 sudo 权限
visudo # 编辑 sudoers 文件
# SSH 密钥管理
ssh-keygen -t ed25519 -C "my-key" # 生成 SSH 密钥对
cat ~/.ssh/id_ed25519.pub # 查看公钥(复制到服务器)
# 将公钥添加到服务器
cat id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys七、性能调优与监控
# CPU 和内存
vmstat 1 10 # 每秒采样一次,共10次(内存/CPU综合)
iostat -x 1 5 # 磁盘 I/O 统计
mpstat -P ALL 1 # 多核 CPU 使用率详情
# 内存详情
free -h # 总体内存
cat /proc/meminfo | grep -E "MemTotal|MemFree|Cached|Buffers"
# 磁盘 I/O
iostat -d -k 1 # 磁盘读写速度(KB/s)
iotop -o # 只显示有 I/O 的进程
# 系统调用追踪
strace -p PID # 追踪进程系统调用(调试用)
lsof -p PID # 查看进程打开的文件
# 定时任务(Crontab)
crontab -l # 查看当前用户的定时任务
crontab -e # 编辑定时任务
# 格式:分 时 日 月 周 命令
# 示例:每天凌晨 3 点执行备份
# 0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1八、日志管理
# 系统日志
tail -f /var/log/syslog # Ubuntu/Debian 系统日志
tail -f /var/log/messages # CentOS/RHEL 系统日志
dmesg | tail -20 # 内核消息(硬件/驱动问题时查看)
# 应用日志
tail -f /var/log/nginx/access.log # Nginx 访问日志
tail -f /var/log/nginx/error.log # Nginx 错误日志
tail -f /var/log/mysql/error.log # MySQL 错误日志
# 日志分析
grep "404" /var/log/nginx/access.log | wc -l # 统计 404 请求数
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10 # Top 10 访问 IP
zcat /var/log/nginx/access.log.1.gz | grep "500" # 查看压缩历史日志
# 日志清理
find /var/log -name "*.log" -mtime +30 -delete # 删除 30 天以上的日志
truncate -s 0 /var/log/nginx/access.log # 清空日志文件(保留文件)
journalctl --vacuum-time=30d # 清理 30 天以上的 systemd 日志九、安全加固常用命令
# 查看失败登录(暴力破解排查)
last -f /var/log/btmp | head -20 # 失败登录记录
grep "Failed password" /var/log/auth.log | tail -20
# 查看当前连接
ss -tn state established # 已建立的 TCP 连接
who # 当前登录用户
# 检查计划任务(排查后门)
crontab -l
crontab -l -u root
cat /etc/crontab
ls /etc/cron.d/
# 检查监听端口(是否有异常服务)
ss -tlnp
# 更新系统(Ubuntu/Debian)
apt update && apt upgrade -y
apt autoremove -y
# 更新系统(CentOS/RHEL)
yum update -y常用命令组合示例
# 实时监控 Web 服务器访问量
watch -n 1 "ss -tn state established | grep ':80' | wc -l"
# 查找占用磁盘最多的文件
du -ah / 2>/dev/null | sort -rh | head -20
# 统计 Nginx 日志中各状态码数量
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# 快速检查服务器健康状态
echo "=== CPU ===" && uptime
echo "=== Memory ===" && free -h
echo "=== Disk ===" && df -h
echo "=== Network ===" && ss -s云服务商推荐
搭建自己的 Linux 云服务器,推荐以下选择:
总结
Linux 运维命令看似繁多,但日常工作 80% 的时间都在使用上述 20% 的命令。建议从以下路径入手:
- 先掌握:
ssh、ls/cd/cp/mv/rm、tail/grep、top/ps、systemctl - 故障排查:
df -h(磁盘)、free -h(内存)、ss -tlnp(端口)、tail -f(日志) - 进阶:
awk/sed(文本处理)、iptables(防火墙)、strace(调试)
本手册建议收藏备用,遇到问题时按分类快速查找。