1. Linux系统概述与入门基础
Linux作为一款开源操作系统内核,自1991年由Linus Torvalds发布以来,已经发展成为服务器、嵌入式设备和开发环境的首选平台。与Windows不同,Linux采用模块化设计,其核心只包含内存管理、进程调度等基本功能,其他组件如图形界面、文件系统等都作为独立模块存在。这种设计使得Linux具有极高的灵活性和可定制性,这也是为什么我们能看到Ubuntu、CentOS、Debian等数百种不同风格的发行版。
对于初学者而言,理解Linux的目录结构是第一个关键点。与Windows的盘符划分不同,Linux采用单一的树状结构,所有设备和分区都挂载在根目录(/)下的特定位置。例如:
- /bin存放基本命令程序
- /etc保存系统配置文件
- /home是用户主目录
- /var存放经常变化的文件如日志
- /dev包含设备文件
提示:在Linux中,一切皆文件的概念非常重要。硬件设备、进程信息甚至网络连接都以文件形式存在,这种统一接口设计使得操作非常一致。
终端(terminal)是Linux的核心交互界面,即使在使用图形界面时,熟练使用终端也能极大提高效率。常见的终端模拟器包括GNOME Terminal、Konsole等,它们本质上都是对Shell的图形化封装。Shell作为命令解释器,负责将用户输入转换为系统调用,最常用的是Bash(Bourne Again Shell),它支持命令历史、Tab补全等实用功能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作命令精要
2.1 基础导航与查看命令
掌握文件系统操作是Linux使用的基石。pwd(print working directory)命令显示当前所在路径,这对定位位置非常有用。ls(list)命令可能是使用频率最高的命令之一,其常用参数组合值得熟记:
bash复制ls -l # 长格式显示,包含权限、所有者等信息
ls -a # 显示隐藏文件(以.开头)
ls -lh # 人性化显示文件大小(KB/MB/GB)
ls -t # 按修改时间排序
cd(change directory)用于切换目录,几个特殊符号需要特别注意:
- ~ 代表当前用户主目录
- . 表示当前目录
- .. 表示上级目录
-
- 返回上次所在目录
2.2 文件操作进阶技巧
cp(copy)和mv(move)命令不仅用于文件复制移动,还能实现批量操作和重命名:
bash复制cp -r dir1 dir2 # 递归复制目录
mv *.txt ~/docs # 移动所有txt文件到docs目录
mv old.txt new.txt # 文件重命名
rm(remove)删除文件时需格外小心,特别是-rf组合会强制递归删除且无确认提示。建议新手先使用-i参数交互式删除:
bash复制rm -i important.txt # 删除前确认
警告:永远不要在根目录执行
rm -rf /,这会删除整个系统文件!
find命令是强大的搜索工具,可以根据名称、类型、大小、时间等条件查找文件。例如查找7天内修改过的log文件:
bash复制find /var/log -name "*.log" -mtime -7
3. 文本处理与系统信息命令
3.1 文本查看与处理三剑客
cat(concatenate)虽然简单,但在查看小文件时非常高效。对于大文件,less命令更合适,它支持分页浏览和搜索:
bash复制less /var/log/syslog # 查看系统日志
# 在less中:/搜索词 向前搜索,n下一个匹配项
grep是文本搜索利器,配合正则表达式能实现复杂匹配。查找包含error的日志行:
bash复制grep -i "error" /var/log/syslog # -i忽略大小写
awk和sed是更强大的文本处理工具。例如用awk提取ps输出的进程ID:
bash复制ps aux | awk '{print $2}' # 第二列为PID
3.2 系统监控与进程管理
top命令提供实时系统监控,其增强版htop界面更友好。关键指标包括:
- load average:系统负载(1/5/15分钟)
- %CPU:CPU使用率
- %MEM:内存占用
- RES:进程实际内存
ps(process status)显示进程快照,常用组合:
bash复制ps aux # 显示所有用户所有进程
ps -ef # 完整格式列表
kill用于终止进程,先通过ps找到PID,然后发送信号:
bash复制kill -9 1234 # 强制终止PID为1234的进程
free查看内存使用情况,-h参数人性化显示:
bash复制free -h
4. 权限管理与软件包操作
4.1 用户与权限体系
Linux采用严格的权限控制,每个文件都有所属用户(user)、组(group)和其他人(other)的读写执行权限。ls -l可查看:
code复制-rw-r--r-- 1 user group 1024 Jun 1 10:00 file.txt
chmod修改权限,可用数字或符号模式:
bash复制chmod 755 script.sh # 用户rwx,组和其他rx
chmod +x script.sh # 添加执行权限
sudo允许授权用户以root权限执行命令,其配置保存在/etc/sudoers中。使用visudo编辑此文件最安全,因为它会检查语法。
4.2 软件包管理系统
不同发行版使用不同的包管理工具:
| 发行版 | 包管理工具 | 安装命令示例 |
|---|---|---|
| Debian/Ubuntu | apt | sudo apt install nginx |
| RHEL/CentOS | yum/dnf | sudo yum install httpd |
| Arch | pacman | sudo pacman -S firefox |
配置国内镜像源能显著提高下载速度。例如Ubuntu修改/etc/apt/sources.list,替换为阿里云或清华源。
systemctl是现代Linux系统服务管理工具:
bash复制sudo systemctl start nginx # 启动服务
sudo systemctl enable nginx # 设置开机启动
sudo systemctl status nginx # 查看服务状态
5. 网络相关命令与实用技巧
5.1 网络配置与诊断
ifconfig或ip命令查看网络接口信息,新系统推荐使用ip:
bash复制ip addr show # 显示所有网络接口
ping测试网络连通性,-c指定次数:
bash复制ping -c 4 baidu.com # 发送4个测试包
netstat显示网络连接和端口监听情况,ss是其现代替代品:
bash复制ss -tulnp # 查看所有监听端口和对应进程
curl是强大的网络数据传输工具,可用于测试API:
bash复制curl -v http://example.com/api
5.2 实用组合与效率技巧
命令组合能极大提高效率。例如统计当前目录文件数:
bash复制ls | wc -l
管道(|)将一个命令的输出作为下一个的输入。查找占用80端口的进程:
bash复制sudo lsof -i :80 | grep LISTEN
重定向>和>>分别用于覆盖和追加文件内容。将命令输出保存到文件:
bash复制ls -l > filelist.txt
alias可以创建命令别名,添加到~/.bashrc中永久生效:
bash复制alias ll='ls -alF'
6. 磁盘管理与性能监控
6.1 磁盘空间分析
df(disk free)显示文件系统磁盘空间使用情况:
bash复制df -h # 人性化显示大小
du(disk usage)查看目录占用空间,--max-depth控制递归深度:
bash复制du -sh /var/log # 汇总显示日志目录大小
du -h --max-depth=1 /home # 查看/home下各用户占用
6.2 性能监控工具
vmstat报告虚拟内存统计信息,第一个数字是延迟统计:
bash复制vmstat 1 5 # 每秒1次,共5次
iostat监控磁盘I/O,对排查性能瓶颈很有帮助:
bash复制iostat -dx 1
lsof(list open files)列出被打开的文件,特别适用于"文件被占用"问题的排查:
bash复制lsof /var/log/syslog # 查看谁在使用这个文件
7. Shell脚本入门与实践
7.1 基础脚本编写
Shell脚本本质上是命令的集合,以#!/bin/bash开头指定解释器。简单示例:
bash复制#!/bin/bash
# 这是一个注释
echo "当前用户: $(whoami)"
echo "系统负载: $(uptime)"
赋予执行权限后即可运行:
bash复制chmod +x script.sh
./script.sh
7.2 变量与控制结构
变量赋值和使用:
bash复制name="Linux"
echo "Hello $name" # 输出: Hello Linux
条件判断示例:
bash复制if [ -f "/etc/passwd" ]; then
echo "密码文件存在"
else
echo "文件不存在"
fi
for循环处理文件:
bash复制for file in *.txt; do
echo "处理文件: $file"
wc -l "$file"
done
8. 进阶工具与实用技巧
8.1 终端复用器tmux
tmux允许在单个终端窗口中创建多个会话和窗格,特别适合远程工作:
bash复制tmux new -s mysession # 新建会话
# 快捷键:
# Ctrl+b % 垂直分割
# Ctrl+b " 水平分割
# Ctrl+b d 分离会话
tmux attach -t mysession # 重新连接
8.2 版本控制git基础
虽然git不是Linux核心命令,但几乎是开发者必备:
bash复制git clone https://example.com/project.git
git status
git add .
git commit -m "描述变更"
git push origin master
8.3 日志分析实战
分析nginx访问日志,统计访问量前10的IP:
bash复制awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
查找错误日志中的关键信息:
bash复制grep -E "error|fail|exception" /var/log/app/error.log | tail -50
Linux命令的学习需要不断实践和积累。建议初学者每天花时间在终端中操作,遇到问题先尝试用命令解决。随着经验增长,你会逐渐发现Linux命令行带来的高效和灵活远超图形界面。
