1. Linux系统安装实战指南
对于初次接触Linux的用户而言,系统安装往往是第一个需要跨越的门槛。与Windows系统不同,Linux提供了更多定制化选项,同时也意味着需要掌握一些基础概念。我们以CentOS 7.9为例,详细解析安装过程中的关键步骤。
1.1 安装介质准备
首先需要获取系统镜像文件。推荐从CentOS官方镜像站点或国内镜像源下载:
# 国内常用镜像源 https://mirrors.aliyun.com/centos/ https://mirrors.tuna.tsinghua.edu.cn/centos/下载完成后,建议使用Rufus(Windows)或dd命令(Linux/Mac)制作启动U盘:
# Mac/Linux下使用dd命令 diskutil list # 确认U盘设备标识 sudo dd if=CentOS-7-x86_64-DVD-2009.iso of=/dev/disk2 bs=1m重要提示:操作前务必确认目标设备(/dev/disk2),错误的设备选择会导致数据丢失
1.2 安装过程详解
启动安装程序后,需要重点关注以下几个配置环节:
分区方案:建议新手选择"自动分区",有经验的用户可采用以下手动方案:
- /boot:500MB (标准分区)
- swap:内存大小的1-2倍 (标准分区)
- /:剩余所有空间 (LVM分区)
软件选择:根据用途选择:
- 最小安装:仅命令行环境
- 带GUI的服务器:图形界面+基础服务
- 开发工作站:包含开发工具链
网络配置:建议安装时即启用网络连接,方便后续软件安装
1.3 首次启动配置
安装完成后首次启动时:
# 查看IP地址 ip addr # 测试网络连通性 ping www.baidu.com # 更新系统 sudo yum update -y常见安装问题排查:
- 若出现"dracut-initqueue timeout"错误,通常是因为找不到安装介质,检查U盘质量或重新制作启动盘
- 安装过程中卡死,尝试在启动时加入"nomodeset"参数
- 图形安装界面异常,可改用文本安装模式
2. 远程连接方案全解析
2.1 SSH基础配置
Linux系统默认已安装SSH服务,但需要确认服务状态:
# 检查服务状态 systemctl status sshd # 启用并启动服务 sudo systemctl enable sshd sudo systemctl start sshd # 检查监听端口 ss -tnlp | grep ssh安全加固建议:
- 修改默认端口:编辑/etc/ssh/sshd_config,修改Port为1024-65535之间的值
- 禁用root登录:PermitRootLogin no
- 启用密钥认证:PubkeyAuthentication yes
2.2 客户端连接方法
Windows平台:
PuTTY:最经典的SSH客户端
- 保存会话:输入IP和端口后,在Saved Sessions中输入名称点击Save
- 密钥认证:需使用PuTTYgen转换OpenSSH密钥为PPK格式
Windows Terminal:现代终端解决方案
// 配置文件示例 { "commandline": "ssh user@192.168.1.100 -p 22", "name": "阿里云服务器", "icon": "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png" }
macOS/Linux平台:
直接使用终端即可:
ssh username@server_ip -p port_number高级技巧:
- 使用~/.ssh/config文件管理多台服务器:
Host aliyun HostName 123.45.67.89 User root Port 2222 IdentityFile ~/.ssh/aliyun_key - SSH隧道示例(本地端口转发):
ssh -L 3306:localhost:3306 user@remote_host
2.3 VSCode远程开发
- 安装Remote-SSH扩展
- 按F1选择"Remote-SSH: Connect to Host"
- 输入连接信息:user@host:port
- 首次连接需在弹出窗口中确认指纹
实用技巧:在VSCode的settings.json中添加配置可优化远程体验:
"remote.SSH.showLoginTerminal": true, "remote.SSH.enableDynamicForwarding": true
3. 命令行操作精要
3.1 基础命令速查
| 命令类别 | 常用命令 | 功能说明 |
|---|---|---|
| 文件操作 | ls -alh | 详细列出文件(含隐藏文件) |
| cp -r | 递归复制目录 | |
| rm -i | 交互式删除 | |
| 文本处理 | grep -n "pattern" file | 显示匹配行号 |
| awk '{print $1}' | 提取第一列 | |
| sed 's/old/new/g' | 全局替换文本 | |
| 系统监控 | top -o %CPU | 按CPU排序进程 |
| df -h | 人性化显示磁盘空间 | |
| free -m | 以MB显示内存 |
3.2 实用技巧合集
历史命令优化:
# 显示时间戳 export HISTTIMEFORMAT="%F %T " # 忽略重复命令 export HISTCONTROL=ignoredups # 搜索历史 Ctrl+R 反向搜索目录快速跳转:
# 安装autojump后 j project # 快速跳转到含project的目录进程管理:
# 查找并杀死进程 pgrep -f "python script.py" | xargs kill # 后台运行并记录PID nohup command & echo $! > pidfile
3.3 Shell脚本入门
基础脚本示例:
#!/bin/bash # 注释:这是一个备份脚本 BACKUP_DIR="/backups" LOG_FILE="/var/log/backup.log" # 检查目录是否存在 if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi # 带时间戳的备份 tar -czf "${BACKUP_DIR}/backup_$(date +%Y%m%d).tar.gz" /path/to/data 2>> "$LOG_FILE" # 检查执行结果 if [ $? -eq 0 ]; then echo "[$(date)] 备份成功" >> "$LOG_FILE" else echo "[$(date)] 备份失败" >> "$LOG_FILE" exit 1 fi调试技巧:
# 显示执行命令 set -x # 严格模式 set -euo pipefail # 函数调试 declare -f function_name4. 常见问题解决方案
4.1 连接问题排查
连接超时:
- 检查防火墙:
sudo systemctl status firewalld - 查看端口开放:
sudo firewall-cmd --list-ports - 临时添加端口:
sudo firewall-cmd --add-port=2222/tcp
- 检查防火墙:
认证失败:
# 查看认证日志 tail -f /var/log/secure # 检查SELinux状态 getenforce中文乱码:
# 临时解决 export LANG=en_US.UTF-8 # 永久配置 localectl set-locale LANG=en_US.UTF-8
4.2 性能优化指南
内存不足:
# 查看内存大户 ps aux --sort=-%mem | head # 创建swap文件 sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile磁盘空间:
# 查找大文件 find / -type f -size +100M -exec ls -lh {} \; # 清理yum缓存 sudo yum clean all网络优化:
# ~/.ssh/config配置 Host * Compression yes ServerAliveInterval 60 TCPKeepAlive yes
4.3 进阶学习路径
系统管理:
- 用户权限管理
- 定时任务(crontab)
- 系统服务管理(systemd)
网络服务:
- Nginx/Apache配置
- FTP/Samba共享
- iptables/firewalld
开发环境:
# 安装开发工具链 sudo yum groupinstall "Development Tools" # Python环境 sudo yum install python3-pip pip3 install virtualenv
个人经验分享:在实际运维中,建议将常用命令和配置整理成cheatsheet。例如,我维护了一个包含50+常用命令的Markdown文件,通过alfred快速查询。另外,对于长期管理的服务器,使用ansible等自动化工具比手动操作更可靠。