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. 手册页 :任何命令后加 --help man 命令 查看详细文档
  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 中可永久生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值