CentOS 7.9入门指南:从安装到Shell脚本编程
2026/7/18 4:32:38 网站建设 项目流程

1. 为什么选择CentOS作为Linux学习起点

在众多Linux发行版中,CentOS特别适合作为学习起点。作为Red Hat Enterprise Linux(RHEL)的社区版本,它继承了RHEL的稳定性和企业级特性,同时完全免费。我最初选择CentOS时,最看重的是它在服务器领域的广泛应用——全球超过30%的企业服务器运行在RHEL/CentOS系统上。

CentOS 7.9是目前最成熟的稳定版本,其生命周期将持续到2024年。与Ubuntu等发行版相比,CentOS的软件包管理工具(yum/dnf)和系统服务管理(systemd)更贴近企业实际环境。记得我第一次在CentOS上配置Apache服务时,就深刻体会到它的配置文件结构和权限管理对企业运维的友好性。

提示:虽然CentOS 8已停止维护,但CentOS Stream作为滚动发行版仍可选用。不过对初学者,建议从CentOS 7.9开始建立完整知识体系。

2. 基础环境搭建实战

2.1 虚拟机安装要点

使用VMware Workstation安装CentOS时,有几个关键设置常被忽略:

  1. 虚拟磁盘建议选择"将虚拟磁盘拆分成多个文件",这样迁移更方便
  2. 内存分配不应低于2GB(特别是要运行GUI时)
  3. 网络适配器选择NAT模式最易上手

安装过程中,分区方案需要特别注意。我推荐以下分区结构:

/boot 500MB (标准ext4) / 30GB (xfs文件系统) swap 内存大小的1.5倍(不超过8GB) /home 剩余所有空间

2.2 首次登录后的5个必做配置

  1. 网络配置
nmcli connection modify ens192 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 nmcli connection up ens192
  1. 关闭SELinux(学习阶段建议)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
  1. 配置EPEL仓库
yum install -y epel-release
  1. 安装开发工具集
yum groupinstall -y "Development Tools"
  1. 设置时区
timedatectl set-timezone Asia/Shanghai

3. Shell脚本编程核心精要

3.1 从Hello World到实战脚本

初学者常犯的错误是直接复制复杂脚本。我建议从这样的结构开始:

#!/bin/bash # 作者:你的名字 # 日期:$(date +%F) # 描述:这个脚本的功能说明 # 严格模式 set -euo pipefail # 函数定义 usage() { echo "用法:$0 [参数]" exit 1 } # 主逻辑 main() { local input_file="" while getopts "f:" opt; do case $opt in f) input_file=$OPTARG ;; *) usage ;; esac done [[ -z $input_file ]] && usage # 业务逻辑 if [[ ! -f $input_file ]]; then echo "错误:文件不存在" >&2 exit 2 fi # 处理文件内容 grep -v "^#" "$input_file" | awk '{print $1}' } main "$@"

3.2 定时任务的高级用法

crontab的常见误区是环境变量问题。这是我常用的crontab模板:

# 每分钟检查一次服务 * * * * * source /home/user/.bashrc && /path/to/script.sh >> /var/log/myscript.log 2>&1 # 每天9:30执行 30 9 * * * /usr/bin/flock -xn /tmp/mytask.lock -c "/path/to/daily_task.sh"

关键技巧:

  • 使用flock防止脚本重复执行
  • 明确指定命令全路径
  • 通过source加载环境变量
  • 错误输出重定向到日志文件

4. 开发环境搭建实战

4.1 Java环境配置避坑指南

OpenJDK安装看似简单,但版本管理常出问题。推荐这样安装:

# 安装OpenJDK 11 yum install -y java-11-openjdk-devel # 多版本管理 alternatives --config java # 环境变量配置(写入~/.bashrc) cat <<EOF >> ~/.bashrc export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) export PATH=\$JAVA_HOME/bin:\$PATH EOF

常见问题排查:

  1. 执行java -version无输出 → 检查JAVA_HOME设置
  2. ClassNotFound异常 → 检查CLASSPATH或jar包路径
  3. 内存不足 → 调整JVM参数:-Xms512m -Xmx1024m

4.2 Python多版本管理方案

CentOS 7自带的Python 2.7需要与现代Python共存:

# 安装Python 3.8 yum install -y python38 python38-devel # 创建虚拟环境 python3.8 -m venv /opt/myenv source /opt/myenv/bin/activate # 安装常用包 pip install --upgrade pip pip install numpy pandas requests

我习惯用这样的目录结构管理Python项目:

~/projects/ ├── venvs/ # 所有虚拟环境 ├── src/ # 项目源代码 └── logs/ # 各项目日志

5. 系统管理进阶技巧

5.1 磁盘扩容完整流程

当虚拟机磁盘空间不足时,扩容操作需要多个步骤配合:

  1. 在VMware中扩展虚拟磁盘大小
  2. 在Linux中识别新空间:
echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan
  1. 扩展物理卷:
pvresize /dev/sda2
  1. 扩展逻辑卷:
lvextend -l +100%FREE /dev/centos/root
  1. 调整文件系统:
xfs_growfs / # 对xfs文件系统 # 或 resize2fs /dev/centos/root # 对ext4

5.2 系统服务管理深度解析

systemd是现代Linux的核心,掌握这些命令至关重要:

# 查看失败的服务 systemctl --failed # 分析服务启动耗时 systemd-analyze blame # 自定义服务单元示例(/etc/systemd/system/myapp.service) [Unit] Description=My Custom Application After=network.target [Service] Type=simple User=appuser WorkingDirectory=/opt/myapp ExecStart=/usr/bin/python3 /opt/myapp/main.py Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target

重载配置的完整流程:

systemctl daemon-reload systemctl enable myapp systemctl start myapp journalctl -u myapp -f # 跟踪日志

6. 网络配置与防火墙

6.1 防火墙规则优化

firewalld的富规则(Rich Rules)比直接使用iptables更易管理:

# 允许特定IP访问SSH firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" service name="ssh" accept' # 开放自定义端口 firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload # 查看生效规则 firewall-cmd --list-all

6.2 网络故障排查工具箱

这些命令组合使用能解决90%的网络问题:

# 连通性测试 ping -c 4 8.8.8.8 mtr --report google.com # 端口检查 telnet example.com 80 nc -zv example.com 443 # DNS解析 dig +short example.com nslookup example.com # 路由追踪 traceroute -T -p 80 example.com # 网络统计 ss -tulnp netstat -s

7. 安全加固实践

7.1 SSH安全配置

/etc/ssh/sshd_config的关键修改项:

Port 2222 # 修改默认端口 PermitRootLogin no MaxAuthTries 3 LoginGraceTime 1m AllowUsers yourusername ClientAliveInterval 300 ClientAliveCountMax 2 PasswordAuthentication no # 强制使用密钥

生成更安全的SSH密钥:

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519

7.2 定期安全检查脚本

这是我每周运行的检查脚本框架:

#!/bin/bash # 检查未授权的SUID文件 find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null > /tmp/suid_check.txt # 检查空密码账户 awk -F: '($2 == "") {print $1}' /etc/shadow > /tmp/empty_passwd.txt # 检查最近修改的文件 find / -mtime -3 -type f -exec ls -la {} \; 2>/dev/null > /tmp/recent_files.txt # 发送报告 mail -s "安全检查报告" admin@example.com < <(echo "详见附件"; uuencode /tmp/*_check.txt)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询