1. Linux命令基础与CentOS 7环境准备
作为Linux系统管理员,掌握常用命令是日常工作的基本功。CentOS 7作为企业级Linux发行版的代表,其稳定性和安全性使其成为服务器环境的首选。在开始命令学习前,我们需要先理解几个核心概念:
- Shell:用户与Linux内核交互的接口,CentOS 7默认使用Bash(Bourne Again Shell)
- 终端:提供命令行界面的程序,可以是物理控制台或SSH远程连接
- 命令结构:通常由"命令 [选项] [参数]"组成,选项用"-"或"--"引导
提示:所有命令都区分大小写,建议在虚拟机或测试环境中练习,避免直接在生产环境操作
1.1 CentOS 7最小化安装建议
对于学习命令的环境,推荐使用最小化安装:
# 查看系统版本确认环境 cat /etc/redhat-release uname -r典型最小化安装后的初始操作:
# 更新系统 yum update -y # 安装常用工具 yum install -y vim wget curl net-tools # 创建练习用的测试用户 useradd testuser passwd testuser2. 文件与目录操作命令精要
2.1 基础导航命令
pwd # 显示当前工作目录 cd # 切换目录 ls # 列出目录内容实际应用场景示例:
# 进入用户家目录 cd ~ # 列出所有文件(包括隐藏文件) ls -la # 递归列出/var目录内容 ls -lR /var | less2.2 文件操作进阶技巧
# 创建多层目录结构 mkdir -p project/{src,doc,log} # 批量创建测试文件 touch file{1..10}.txt # 安全删除(交互式确认) rm -i *.txt # 查找并删除7天前的日志文件 find /var/log -name "*.log" -mtime +7 -exec rm {} \;注意:rm -rf命令极其危险,执行前务必确认路径。曾有工程师因误删根目录导致重大事故
3. 系统信息查询与监控
3.1 硬件信息获取
# CPU信息 lscpu cat /proc/cpuinfo # 内存使用情况 free -h vmstat 1 5 # 每1秒刷新,共5次 # 磁盘信息 lsblk df -hT3.2 进程管理实战
# 查看进程树 pstree -p # 动态监控进程 top # 更友好的替代方案 htop # 需额外安装:yum install htop # 杀死进程的几种方式 kill -9 PID # 强制终止 pkill -f "nginx" # 按名称终止4. 用户与权限深度管理
4.1 用户组管理示例
# 创建开发组 groupadd developers # 添加用户到组 usermod -aG developers testuser # 验证组成员 groups testuser4.2 权限控制实践
理解Linux权限模型:
rwx r-x r-x │││ │││ │││ │││ │││ └─ 其他用户权限 │││ └┴─── 所属组权限 └┴┴───── 所有者权限设置特殊权限位:
# 设置SUID(执行时以所有者身份运行) chmod u+s /usr/bin/testapp # 设置目录的SGID(新建文件继承组) chmod g+s /shared_dir # 设置粘滞位(只有所有者能删除) chmod o+t /tmp/restricted5. 软件包管理全攻略
5.1 YUM仓库配置
# 备份原有仓库配置 mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 配置阿里云镜像源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache5.2 软件管理常用操作
# 搜索软件包 yum search nginx # 查看软件信息 yum info nginx # 安装特定版本 yum install nginx-1.20.1 # 查看已安装软件 yum list installed | grep nginx # 安全移除软件 yum autoremove nginx6. 网络配置与故障排查
6.1 基础网络命令
# 查看IP配置 ip addr show # 测试连通性 ping -c 4 baidu.com # 路由追踪 traceroute google.com # 查看开放端口 ss -tulnp6.2 网络服务管理
# 传统服务管理 service network restart # 现代systemd方式 systemctl restart network # 查看服务状态 systemctl status firewalld # 设置开机启动 systemctl enable httpd7. 文本处理三剑客
7.1 grep文本搜索
# 递归搜索目录中的关键词 grep -r "error" /var/log/ # 显示匹配行前后内容 grep -A 3 -B 2 "critical" system.log # 使用正则表达式 grep -E "^[0-9]{3}-[0-9]{4}" contacts.txt7.2 sed流编辑器
# 替换文件内容 sed -i 's/old/new/g' file.txt # 删除空白行 sed '/^$/d' input.txt > output.txt # 提取特定行 sed -n '10,20p' access.log7.3 awk数据处理
# 统计日志中不同状态码出现次数 awk '{print $9}' access.log | sort | uniq -c # 计算CSV文件某列总和 awk -F',' '{sum+=$3} END {print sum}' data.csv # 格式化输出系统用户 awk -F: '{printf "%-15s %s\n", $1, $6}' /etc/passwd8. 磁盘管理与性能优化
8.1 磁盘使用分析
# 交互式磁盘使用分析 ncdu / # 需安装:yum install ncdu # 查找大文件 find / -type f -size +100M -exec ls -lh {} \; # 监控磁盘I/O iotop -oP8.2 LVM基础操作
# 查看物理卷 pvdisplay # 创建卷组 vgcreate vg_data /dev/sdb # 创建逻辑卷 lvcreate -L 10G -n lv_mysql vg_data # 扩展逻辑卷 lvextend -L +5G /dev/vg_data/lv_mysql resize2fs /dev/vg_data/lv_mysql9. 系统服务与日志分析
9.1 journalctl日志管理
# 查看系统日志 journalctl -xe # 按时间筛选 journalctl --since "2023-01-01" --until "2023-01-02" # 按服务筛选 journalctl -u nginx # 实时监控新日志 journalctl -f9.2 定时任务配置
# 编辑当前用户crontab crontab -e # 查看系统crontab cat /etc/crontab # 常见示例 - 每天凌晨备份 0 3 * * * /usr/bin/rsync -avz /data/ backup:/backups10. 安全加固实践
10.1 SSH安全配置
/etc/ssh/sshd_config关键参数:
PermitRootLogin no PasswordAuthentication no AllowUsers admin backup Port 2222应用配置:
systemctl restart sshd # 测试连接前保持现有会话 ssh -p 2222 admin@server10.2 防火墙规则示例
# 放行HTTP/HTTPS firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https # 限制SSH访问IP firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' # 重载配置 firewall-cmd --reload11. 性能监控与优化
11.1 实时系统监控
# 综合监控 glances # 需安装:yum install glances # 内存分析 smem -s swap -r # 网络流量监控 nload11.2 调优参数示例
# 临时修改内核参数 sysctl -w vm.swappiness=10 # 永久生效 echo "vm.swappiness = 10" >> /etc/sysctl.conf sysctl -p12. 备份与恢复策略
12.1 文件系统备份
# 完整备份 tar -cvpzf /backups/full_backup_$(date +%F).tar.gz \ --exclude=/backups \ --exclude=/proc \ --exclude=/tmp \ /12.2 数据库备份示例
# MySQL备份 mysqldump -u root -p --all-databases | gzip > /backups/mysql_$(date +%F).sql.gz # PostgreSQL备份 pg_dumpall | gzip > /backups/pgsql_$(date +%F).sql.gz13. 容器化环境基础
13.1 Docker快速入门
# 安装Docker yum install -y docker systemctl start docker # 运行测试容器 docker run -it --rm centos:7 bash # 查看运行容器 docker ps13.2 Podman替代方案
# 安装Podman yum install -y podman # 无守护进程运行容器 podman run -d -p 8080:80 nginx # 生成systemd服务文件 podman generate systemd --name my_nginx > /etc/systemd/system/my_nginx.service14. 自动化运维基础
14.1 Shell脚本示例
#!/bin/bash # 备份脚本示例 BACKUP_DIR="/backups/$(date +%F)" mkdir -p $BACKUP_DIR # 备份重要目录 tar -czf $BACKUP_DIR/etc.tar.gz /etc tar -czf $BACKUP_DIR/var_www.tar.gz /var/www # 保留最近7天备份 find /backups -type d -mtime +7 -exec rm -rf {} \;14.2 计划任务集成
# 每天凌晨执行备份 0 2 * * * /usr/local/bin/backup_script.sh # 每周日执行安全检查 0 4 * * 0 /usr/local/bin/security_check.sh15. 常见问题排查指南
15.1 启动故障处理
# 查看启动日志 journalctl -b # 救援模式操作 # 1. 重启并在GRUB界面按e编辑 # 2. 在linux16行末尾添加 init=/bin/bash # 3. Ctrl+x启动进入单用户模式15.2 性能瓶颈定位
# 综合检查 sar -u 1 3 # CPU使用率 sar -r 1 3 # 内存使用 sar -b 1 3 # I/O统计 # 进程级监控 pidstat 116. 命令使用高级技巧
16.1 命令组合应用
# 统计当前目录各种类型文件数量 find . -type f | awk -F. '{print $NF}' | sort | uniq -c | sort -nr # 监控目录变化 watch -n 1 'ls -l | awk "{print \$5,\$9}"'16.2 历史命令优化
# 设置历史命令格式 export HISTTIMEFORMAT="%F %T " # 忽略重复命令 export HISTCONTROL=ignoredups # 增加历史记录数量 export HISTSIZE=1000017. 终端效率工具
17.1 tmux多会话管理
# 新建会话 tmux new -s dev # 分离会话 Ctrl+b d # 恢复会话 tmux attach -t dev # 多窗口管理 Ctrl+b c # 新建窗口 Ctrl+b n # 下一个窗口17.2 终端复用技巧
# 同时操作多台服务器 # 安装工具 yum install -y epel-release yum install -y clusterssh # 配置集群 cssh server1 server2 server318. 系统调优实战
18.1 文件系统优化
# 调整ext4文件系统参数 tune2fs -o journal_data_writeback /dev/sda1 tune2fs -O ^has_journal /dev/sda1 # 优化挂载选项 vim /etc/fstab # 添加:noatime,nodiratime,data=writeback18.2 内核参数优化
/etc/sysctl.conf关键参数:
# 提高TCP性能 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 # 提高内存管理 vm.swappiness = 10 vm.dirty_ratio = 4019. 版本控制集成
19.1 Git基础操作
# 安装Git yum install -y git # 克隆仓库 git clone https://github.com/user/repo.git # 提交更改 git add . git commit -m "更新配置" git push origin master19.2 配置管理示例
# 备份重要配置文件 git init /etc git add /etc/ssh/sshd_config git commit -m "初始SSH配置" # 后续更改跟踪 git diff git commit -a -m "更新SSH配置"20. 持续学习建议
- 手册页:任何命令后加
--help或man 命令查看详细文档 - 信息页:
info 命令获取更结构化文档(如coreutils) - 在线资源:
- Linux文档项目(tldp.org)
- RHEL官方文档(access.redhat.com)
- 实践环境:
# 创建安全的练习环境 docker run -it --rm centos:7 bash
最后分享一个实用技巧:使用alias创建常用命令的快捷方式,例如:
alias ll='ls -alF' alias grep='grep --color=auto' alias update='yum update -y && yum upgrade -y'将这些添加到~/.bashrc中可永久生效