Linux 运维常用命令与基础知识指南

掌握这些核心命令和概念,将极大提升您的Linux运维效率

一、系统信息与状态监控

1.1 系统基本信息

# 查看系统版本信息
cat /etc/os-release
lsb_release -a

# 查看内核版本
uname -r

# 查看CPU信息
lscpu
cat /proc/cpuinfo

# 查看内存信息
free -h
cat /proc/meminfo

1.2 实时监控命令

# 实时进程监控(交互式)
top
htop   # 增强版top

# 系统资源监控
vmstat 2 5   # 每2秒采样一次,共5次
iostat -dx 2 # 磁盘I/O统计

# 网络流量监控
nload
iftop

1.3 系统性能分析

# 查看系统负载
uptime
cat /proc/loadavg

# 查看磁盘使用情况
df -Th   # 显示文件系统类型和人类可读格式
du -sh * # 查看当前目录各文件/文件夹大小

# 查看历史负载
sar -u  # CPU利用率
sar -r  # 内存使用情况

二、文件与目录管理

2.1 基本操作命令

命令 功能描述 常用参数
ls 列出目录内容 -l(详细信息), -a(显示隐藏文件), -h(人类可读)
cd 切换目录 ..(上级目录), -(返回上一次目录)
pwd 显示当前工作目录
cp 复制文件/目录 -r(递归复制), -v(显示详细信息)
mv 移动/重命名文件
rm 删除文件 -r(递归删除), -f(强制删除)
mkdir 创建目录 -p(创建多级目录)

2.2 文件查看与处理

# 查看文件内容
cat filename       # 显示整个文件
less filename      # 分页查看(可前后翻页)
head -n 20 file    # 查看前20行
tail -n 30 file    # 查看后30行
tail -f logfile    # 实时追踪日志文件

# 文件搜索
grep "error" logfile   # 在文件中搜索"error"
grep -r "pattern" /dir # 递归搜索目录
find / -name "*.log"   # 按文件名查找
find /var/log -mtime +30 # 查找30天前的文件

# 文件比较
diff file1 file2   # 比较两个文件差异

2.3 文件权限管理

# 查看文件权限
ls -l filename

# 修改权限
chmod u+x script.sh   # 给所有者添加执行权限
chmod 755 script.sh   # 设置权限为rwxr-xr-x

# 修改所有者
chown user:group filename

# 特殊权限
chmod +s file    # 设置SUID
chmod +t dir     # 设置粘滞位

三、进程管理

3.1 进程监控与操作

# 查看进程
ps aux         # 查看所有运行中的进程
ps -ef         # 完整格式显示进程信息

# 实时进程监控
top

# 结束进程
kill 1234         # 终止PID为1234的进程
kill -9 1234      # 强制终止进程
pkill processname # 按进程名终止

# 后台作业管理
bg %1   # 将作业1放入后台运行
fg %2   # 将作业2调回前台
jobs    # 查看后台作业

3.2 服务管理(Systemd)

# 服务状态管理
systemctl status nginx     # 查看服务状态
systemctl start nginx      # 启动服务
systemctl stop nginx       # 停止服务
systemctl restart nginx    # 重启服务
systemctl reload nginx     # 重新加载配置

# 服务启用/禁用
systemctl enable nginx     # 设置开机自启
systemctl disable nginx    # 禁用开机自启

# 查看所有服务
systemctl list-unit-files --type=service

四、网络配置与诊断

4.1 网络配置查看

# 查看IP地址
ip addr show
ifconfig     # 较旧系统

# 查看路由表
ip route
netstat -rn

# 查看网络接口
ethtool eth0   # 查看网卡详细信息

# 查看网络连接
ss -tunlp      # 推荐替代netstat
netstat -tuln  # 查看监听端口

4.2 网络诊断工具

# 连通性测试
ping 8.8.8.8
ping6 ipv6.google.com

# 路由追踪
traceroute google.com
tracepath google.com

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

# 端口测试
telnet server 22   # 测试TCP端口连通性
nc -zv server 80   # 测试端口是否开放

# 下载工具
wget https://example.com/file
curl -O https://example.com/file

五、磁盘与存储管理

5.1 磁盘分区与文件系统

# 查看磁盘信息
fdisk -l
lsblk

# 磁盘分区
fdisk /dev/sdb   # 交互式分区工具

# 创建文件系统
mkfs.ext4 /dev/sdb1

# 挂载分区
mount /dev/sdb1 /mnt/data

# 自动挂载配置
vim /etc/fstab   # 添加挂载条目

5.2 LVM逻辑卷管理

# 创建物理卷
pvcreate /dev/sdb

# 创建卷组
vgcreate vg_data /dev/sdb

# 创建逻辑卷
lvcreate -L 100G -n lv_data vg_data

# 扩展逻辑卷
lvextend -L +50G /dev/vg_data/lv_data
resize2fs /dev/vg_data/lv_data   # 扩展文件系统

六、软件包管理

6.1 Debian/Ubuntu (APT)

# 更新软件包列表
sudo apt update

# 升级已安装的包
sudo apt upgrade

# 安装软件
sudo apt install nginx

# 移除软件
sudo apt remove nginx

# 清除无用包
sudo apt autoremove

# 搜索软件
apt search keyword

6.2 RHEL/CentOS (YUM/DNF)

# 更新系统
sudo yum update

# 安装软件
sudo yum install httpd

# 移除软件
sudo yum remove httpd

# 清理缓存
yum clean all

# 查找软件包
yum search keyword

七、日志管理

7.1 系统日志位置

日志文件 用途描述
/var/log/messages 常规系统消息
/var/log/auth.log 认证和安全日志
/var/log/syslog 系统日志
/var/log/kern.log 内核日志
/var/log/dmesg 启动日志
/var/log/nginx/access.log Nginx访问日志

7.2 日志管理命令

# 查看系统日志
journalctl              # 查看所有日志
journalctl -u nginx     # 查看特定服务日志
journalctl --since "2023-01-01" --until "2023-01-02"
journalctl -f           # 实时跟踪日志

# 日志轮转配置
vim /etc/logrotate.conf
vim /etc/logrotate.d/nginx

八、Shell技巧与脚本基础

8.1 实用Shell技巧

# 命令历史
history           # 查看历史命令
!100              # 执行第100条历史命令
ctrl+r            # 反向搜索历史命令

# 输入输出重定向
command > file    # 标准输出重定向到文件
command 2> file   # 标准错误重定向到文件
command >> file   # 追加输出
command | grep "error" # 管道过滤

# 后台运行
nohup command &   # 后台运行,退出终端不终止

# 别名设置
alias ll='ls -lh' # 创建别名

8.2 基础脚本示例

#!/bin/bash
# 简单备份脚本
BACKUP_DIR="/backup"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d)

echo "Starting backup at $(date)" >> $LOG_FILE
tar -czf $BACKUP_DIR/backup-$DATE.tar.gz /home /etc
echo "Backup completed at $(date)" >> $LOG_FILE

# 检查磁盘空间脚本
THRESHOLD=90
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

if [ "$CURRENT" -gt "$THRESHOLD" ]; then
    echo "Disk space alert! Usage is at ${CURRENT}%" | mail -s "Disk Alert" [email protected]
fi

九、安全最佳实践

  1. 最小权限原则:永远使用必要的最小权限完成工作
  2. 定期更新:保持系统和软件包处于最新状态
  3. SSH加固
    • 禁用root直接登录
    • 使用密钥认证替代密码
    • 修改默认SSH端口
  4. 防火墙配置
    # UFW (Ubuntu)
    sudo ufw allow 22
    sudo ufw enable
    
    # firewalld (CentOS)
    firewall-cmd --permanent --add-service=ssh
    firewall-cmd --reload
    
  5. 定期备份:实施3-2-1备份策略(3份副本,2种介质,1份异地)

十、学习资源推荐

  • 在线文档
    • Linux man pages online
    • TLDR pages - 简化版命令手册
  • 交互式学习
    • Linux Journey
    • OverTheWire - 命令行游戏
  • 书籍
    • 《Linux命令行与Shell脚本编程大全》
    • 《鸟哥的Linux私房菜》

运维工程师的忠告:命令只是工具,真正重要的是理解系统原理和工作流程。遇到问题时,学会查阅手册(man命令)、阅读日志、分析监控数据,比记住所有命令更重要。保持好奇心,持续学习新技术,是运维工程师的核心竞争力。

通过掌握这些基础命令和概念,您将能够高效地进行日常运维工作。随着经验的积累,您会发现这些工具将成为解决问题的有力武器!

你可能感兴趣的:(运维,linux)