CentOS 7 Linux命令实战与系统管理指南

CentOS 7 Linux命令实战与系统管理指南

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 testuser

2. 文件与目录操作命令精要

2.1 基础导航命令

pwd # 显示当前工作目录 cd # 切换目录 ls # 列出目录内容

实际应用场景示例:

# 进入用户家目录 cd ~ # 列出所有文件(包括隐藏文件) ls -la # 递归列出/var目录内容 ls -lR /var | less

2.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 -hT

3.2 进程管理实战

# 查看进程树 pstree -p # 动态监控进程 top # 更友好的替代方案 htop # 需额外安装:yum install htop # 杀死进程的几种方式 kill -9 PID # 强制终止 pkill -f "nginx" # 按名称终止

4. 用户与权限深度管理

4.1 用户组管理示例

# 创建开发组 groupadd developers # 添加用户到组 usermod -aG developers testuser # 验证组成员 groups testuser

4.2 权限控制实践

理解Linux权限模型:

rwx r-x r-x │││ │││ │││ │││ │││ └─ 其他用户权限 │││ └┴─── 所属组权限 └┴┴───── 所有者权限

设置特殊权限位:

# 设置SUID(执行时以所有者身份运行) chmod u+s /usr/bin/testapp # 设置目录的SGID(新建文件继承组) chmod g+s /shared_dir # 设置粘滞位(只有所有者能删除) chmod o+t /tmp/restricted

5. 软件包管理全攻略

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 makecache

5.2 软件管理常用操作

# 搜索软件包 yum search nginx # 查看软件信息 yum info nginx # 安装特定版本 yum install nginx-1.20.1 # 查看已安装软件 yum list installed | grep nginx # 安全移除软件 yum autoremove nginx

6. 网络配置与故障排查

6.1 基础网络命令

# 查看IP配置 ip addr show # 测试连通性 ping -c 4 baidu.com # 路由追踪 traceroute google.com # 查看开放端口 ss -tulnp

6.2 网络服务管理

# 传统服务管理 service network restart # 现代systemd方式 systemctl restart network # 查看服务状态 systemctl status firewalld # 设置开机启动 systemctl enable httpd

7. 文本处理三剑客

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.txt

7.2 sed流编辑器

# 替换文件内容 sed -i 's/old/new/g' file.txt # 删除空白行 sed '/^$/d' input.txt > output.txt # 提取特定行 sed -n '10,20p' access.log

7.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/passwd

8. 磁盘管理与性能优化

8.1 磁盘使用分析

# 交互式磁盘使用分析 ncdu / # 需安装:yum install ncdu # 查找大文件 find / -type f -size +100M -exec ls -lh {} \; # 监控磁盘I/O iotop -oP

8.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_mysql

9. 系统服务与日志分析

9.1 journalctl日志管理

# 查看系统日志 journalctl -xe # 按时间筛选 journalctl --since "2023-01-01" --until "2023-01-02" # 按服务筛选 journalctl -u nginx # 实时监控新日志 journalctl -f

9.2 定时任务配置

# 编辑当前用户crontab crontab -e # 查看系统crontab cat /etc/crontab # 常见示例 - 每天凌晨备份 0 3 * * * /usr/bin/rsync -avz /data/ backup:/backups

10. 安全加固实践

10.1 SSH安全配置

/etc/ssh/sshd_config关键参数:

PermitRootLogin no PasswordAuthentication no AllowUsers admin backup Port 2222

应用配置:

systemctl restart sshd # 测试连接前保持现有会话 ssh -p 2222 admin@server

10.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 --reload

11. 性能监控与优化

11.1 实时系统监控

# 综合监控 glances # 需安装:yum install glances # 内存分析 smem -s swap -r # 网络流量监控 nload

11.2 调优参数示例

# 临时修改内核参数 sysctl -w vm.swappiness=10 # 永久生效 echo "vm.swappiness = 10" >> /etc/sysctl.conf sysctl -p

12. 备份与恢复策略

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.gz

13. 容器化环境基础

13.1 Docker快速入门

# 安装Docker yum install -y docker systemctl start docker # 运行测试容器 docker run -it --rm centos:7 bash # 查看运行容器 docker ps

13.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.service

14. 自动化运维基础

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.sh

15. 常见问题排查指南

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 1

16. 命令使用高级技巧

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=10000

17. 终端效率工具

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 server3

18. 系统调优实战

18.1 文件系统优化

# 调整ext4文件系统参数 tune2fs -o journal_data_writeback /dev/sda1 tune2fs -O ^has_journal /dev/sda1 # 优化挂载选项 vim /etc/fstab # 添加:noatime,nodiratime,data=writeback

18.2 内核参数优化

/etc/sysctl.conf关键参数:

# 提高TCP性能 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 # 提高内存管理 vm.swappiness = 10 vm.dirty_ratio = 40

19. 版本控制集成

19.1 Git基础操作

# 安装Git yum install -y git # 克隆仓库 git clone https://github.com/user/repo.git # 提交更改 git add . git commit -m "更新配置" git push origin master

19.2 配置管理示例

# 备份重要配置文件 git init /etc git add /etc/ssh/sshd_config git commit -m "初始SSH配置" # 后续更改跟踪 git diff git commit -a -m "更新SSH配置"

20. 持续学习建议

  1. 手册页:任何命令后加--helpman 命令查看详细文档
  2. 信息页info 命令获取更结构化文档(如coreutils)
  3. 在线资源
    • Linux文档项目(tldp.org)
    • RHEL官方文档(access.redhat.com)
  4. 实践环境
    # 创建安全的练习环境 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中可永久生效