1. Linux系统基础操作入门指南
作为一个从2009年就开始使用Linux的老用户,我见证了Linux从服务器领域逐步渗透到开发者桌面、嵌入式设备甚至日常办公的全过程。今天我想分享的是真正实用的Linux基础操作指南,不是那些教科书式的命令罗列,而是我十多年来在实际工作中总结的高效工作流。
如果你刚接触Linux,可能会被各种发行版和命令行界面吓到。但请相信我,掌握基础操作后,你会发现Linux比图形界面更高效。我们主要针对Ubuntu、CentOS等主流发行版进行讲解,这些内容在99%的Linux环境中都适用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Linux系统基础概念解析
2.1 Linux系统架构概述
Linux系统采用分层架构设计,从下到上主要分为:
- 硬件层:CPU、内存、磁盘等物理设备
- 内核层:负责进程管理、内存管理、设备驱动等核心功能
- Shell层:用户与系统交互的接口
- 应用层:各种实用程序和应用程序
这种架构使得Linux极其稳定且高效。我曾在2015年维护过一台连续运行3年未重启的CentOS服务器,这就是Linux稳定性的最好证明。
2.2 文件系统结构
Linux采用单一的树状文件系统结构,与Windows的盘符划分完全不同。以下是最重要的几个目录:
| 目录 | 用途 | 实际应用场景 |
|---|---|---|
| / | 根目录 | 系统最顶层目录 |
| /bin | 基本命令程序 | 存放ls、cp等基础命令 |
| /etc | 系统配置文件 | 修改网络配置、服务配置等 |
| /home | 用户主目录 | 存放个人文件和配置 |
| /var | 可变数据文件 | 日志文件、数据库文件等 |
记住这个结构对后续操作非常重要。我刚接触Linux时,花了两个月才完全理解这个目录结构的逻辑。
3. 终端操作基础
3.1 基本命令使用技巧
以下是我每天都会用到的20个核心命令:
bash复制# 文件操作类
ls -lah # 详细列出所有文件(包括隐藏文件)
cp -rv source_dir target_dir # 递归复制目录
mv oldname newname # 重命名或移动文件
rm -i filename # 交互式删除(避免误删)
# 系统信息类
df -h # 查看磁盘空间(人类可读格式)
free -m # 查看内存使用情况(MB单位)
top # 动态查看系统进程(按q退出)
# 网络相关
ping example.com # 测试网络连通性
ifconfig # 查看网络接口信息(新系统用ip addr)
ssh user@host # 远程登录其他Linux主机
重要提示:使用rm命令时要特别小心,Linux没有回收站机制,删除的文件很难恢复。我建议新手总是加上-i参数。
3.2 命令行高效技巧
- 使用Tab键补全:输入命令或文件名时,按Tab可以自动补全,连按两次显示所有可能选项
- 历史命令查找:按Ctrl+R可以搜索之前执行过的命令
- 命令组合:使用管道符(|)将多个命令连接起来,例如:
bash复制ps aux | grep nginx # 查找nginx进程 - 重定向:> 输出到文件,>> 追加到文件
bash复制echo "Hello" > test.txt # 创建新文件 date >> log.txt # 追加日期到日志
这些技巧可以大幅提升工作效率。我记得2017年处理服务器故障时,通过命令组合在30秒内就定位到了问题,而同事用图形界面花了10分钟。
4. 用户和权限管理
4.1 用户账户操作
bash复制sudo adduser newuser # 创建新用户(交互式)
sudo passwd username # 修改用户密码
sudo usermod -aG groupname username # 将用户添加到组
sudo deluser username # 删除用户
在企业环境中,我建议为每个开发人员创建独立账户,而不是共享root账户。这既能保证安全,又方便审计。
4.2 文件权限详解
Linux使用经典的rwx权限系统。查看权限:
bash复制ls -l filename
输出类似:
code复制-rw-r--r-- 1 user group 1024 Jan 1 10:00 filename
解释:
- 第一个字符:文件类型(-普通文件,d目录)
- 接下来3组rwx:所有者、组、其他人的权限
- 数字1:链接数
- user/group:所有者和所属组
- 1024:文件大小
- Jan 1 10:00:修改时间
修改权限:
bash复制chmod 755 script.sh # 设置权限为rwxr-xr-x
chown user:group file # 修改所有者和组
权限数字表示法:
- 4 = r (读)
- 2 = w (写)
- 1 = x (执行)
所以755表示:所有者7(4+2+1),组5(4+1),其他人5(4+1)
5. 软件包管理
5.1 不同发行版的包管理器
| 发行版 | 包管理器 | 安装命令示例 |
|---|---|---|
| Ubuntu/Debian | apt | sudo apt install package |
| CentOS/RHEL | yum/dnf | sudo yum install package |
| Arch Linux | pacman | sudo pacman -S package |
我在2018年迁移公司服务器时,就因为不熟悉CentOS的yum和Ubuntu的apt差异导致了一次部署失败。所以一定要清楚自己使用的发行版和对应的包管理器。
5.2 常用包管理操作
bash复制# Ubuntu/Debian
sudo apt update # 更新软件包列表
sudo apt upgrade # 升级所有已安装包
sudo apt install package # 安装新软件包
sudo apt remove package # 卸载软件包(保留配置)
sudo apt purge package # 完全卸载(包括配置)
# CentOS/RHEL
sudo yum check-update # 检查更新
sudo yum update # 更新所有包
sudo yum install package # 安装
sudo yum remove package # 卸载
专业建议:在生产环境执行升级前,先在测试环境验证。我有一次直接在生产环境升级Python导致所有网站瘫痪的惨痛经历。
6. 系统服务管理
6.1 systemd基础操作
现代Linux发行版大多使用systemd管理系统服务:
bash复制sudo systemctl start service # 启动服务
sudo systemctl stop service # 停止服务
sudo systemctl restart service # 重启服务
sudo systemctl status service # 查看服务状态
sudo systemctl enable service # 设置开机启动
sudo systemctl disable service # 禁用开机启动
6.2 常见服务管理示例
管理Nginx web服务器:
bash复制sudo systemctl start nginx
sudo systemctl enable nginx
查看服务日志:
bash复制journalctl -u nginx -f # 实时查看nginx日志
排查服务启动失败:
bash复制systemctl status failed.service
journalctl -xe # 查看详细错误日志
在2019年的一次服务器迁移中,我通过journalctl发现服务启动失败是因为端口冲突,快速解决了问题。
7. 磁盘和文件系统管理
7.1 磁盘空间监控
bash复制df -h # 查看各分区使用情况
du -sh /path # 查看目录占用空间
ncdu # 交互式磁盘使用分析工具(需安装)
我建议设置cron任务定期检查磁盘空间,避免因磁盘满导致服务异常。
7.2 挂载新磁盘
bash复制lsblk # 查看磁盘设备
sudo mkfs.ext4 /dev/sdb1 # 格式化磁盘
sudo mkdir /mnt/data # 创建挂载点
sudo mount /dev/sdb1 /mnt/data # 挂载
永久挂载需要编辑/etc/fstab文件:
code复制/dev/sdb1 /mnt/data ext4 defaults 0 0
8. 网络配置与管理
8.1 基本网络命令
bash复制ip addr # 查看IP地址(替代ifconfig)
ip route # 查看路由表
ping google.com # 测试网络连通性
traceroute google.com # 跟踪网络路径
netstat -tulnp # 查看监听端口
ss -tulnp # 更现代的替代方案
8.2 网络问题排查流程
- 检查物理连接:网线、网卡指示灯
- 检查IP配置:ip addr
- 测试网关连通性:ping 网关IP
- 测试DNS解析:nslookup example.com
- 检查防火墙规则:sudo iptables -L
这个流程帮我解决了90%的网络问题。记得2016年有一次服务器无法访问,最终发现是iptables规则阻止了端口。
9. Shell脚本入门
9.1 基础脚本示例
创建简单的备份脚本:
bash复制#!/bin/bash
# 定义变量
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 备份重要文件
cp -r /etc/nginx $BACKUP_DIR/$DATE/
cp -r /var/www $BACKUP_DIR/$DATE/
# 记录日志
echo "Backup completed on $(date)" >> $BACKUP_DIR/backup.log
给脚本执行权限:
bash复制chmod +x backup.sh
9.2 脚本调试技巧
bash复制bash -x script.sh # 显示执行过程
set -e # 脚本中任何命令失败立即退出
set -x # 打印执行的命令
我在工作中积累了大量实用脚本,从自动部署到日志分析,这些脚本至少节省了我50%的重复工作时间。
10. 安全最佳实践
10.1 基础安全措施
- 定期更新系统:
bash复制sudo apt update && sudo apt upgrade - 禁用root远程登录:编辑/etc/ssh/sshd_config
code复制PermitRootLogin no - 使用SSH密钥认证:
bash复制ssh-keygen # 生成密钥对 ssh-copy-id user@host # 复制公钥到服务器
10.2 防火墙配置
bash复制sudo ufw enable # 启用防火墙(Ubuntu)
sudo ufw allow 22 # 允许SSH
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
在云计算环境中,还需要配置云服务商的安全组规则。
11. 实用工具推荐
11.1 开发工具
- tmux:终端复用工具,避免SSH断开导致任务中断
- htop:增强型系统监控工具
- git:版本控制系统
- vim/nano:文本编辑器
- curl/wget:网络数据传输工具
11.2 性能分析工具
bash复制vmstat 1 # 查看系统整体状态
iostat -x 1 # 磁盘IO统计
sar -n DEV 1 # 网络流量监控
这些工具帮我定位过内存泄漏、磁盘IO瓶颈等各种性能问题。
学习Linux就像学习一门新语言,开始时可能会觉得困难,但一旦掌握就能大幅提升工作效率。我建议新手每天花1小时实践这些命令,一个月后你就能感受到明显的进步。遇到问题时,记得多用man命令查看手册(如man ls),或者使用--help参数获取帮助。
