1. Linux系统概述与核心概念
2003年我第一次接触Red Hat Linux 9.0时,那个蓝色安装界面让我记忆犹新。如今Linux已成为服务器领域的绝对霸主,掌握它就像程序员掌握键盘一样基础。让我们从最本质的认知开始,逐步拆解这个强大的操作系统。
Linux本质上是一个遵循POSIX标准的类Unix操作系统内核,由Linus Torvalds在1991年首次发布。与Windows不同,它的设计哲学体现在几个关键特性上:
- 一切皆文件(包括硬件设备)
- 小型单一用途程序
- 通过管道连接程序
- 避免繁琐的用户界面
- 配置数据存储在文本中
注意:Linux严格区分大小写,这与Windows完全不同。在终端输入"Document"和"document"会被视为两个不同的文件。
1.1 关键术语解析
发行版(Distribution):基于Linux内核的完整操作系统包。主流的包括:
- Ubuntu:最适合新手的发行版
- CentOS:企业级服务器首选(注:CentOS 8已转向Stream版)
- Arch Linux:极客之选,滚动更新
- Debian:以稳定性著称
软件包管理:各发行版使用不同的包管理系统:
| 发行版系列 | 包格式 | 管理工具 | 示例命令 |
|---|---|---|---|
| Debian系 | .deb | apt | sudo apt install vim |
| RedHat系 | .rpm | yum/dnf | sudo dnf install git |
| Arch系 | .pkg | pacman | sudo pacman -S firefox |
文件系统层次标准(FHS):Linux目录结构的规范:
- /bin:基础命令二进制文件
- /etc:系统配置文件
- /home:用户主目录
- /var:经常变化的文件(如日志)
- /tmp:临时文件(重启后清空)
2. 终端操作与基础命令实战
2.1 Shell环境初探
现代Linux系统默认使用Bash(Bourne Again Shell),它是sh的增强版。启动终端后,你会看到提示符通常类似:
code复制[user@hostname ~]$
其中:
- user:当前登录用户
- hostname:机器名称
- ~:表示当前在用户主目录
- $:普通用户提示符(root用户是#)
基础导航命令:
bash复制pwd # 显示当前工作目录 (Print Working Directory)
ls # 列出目录内容 (List)
cd # 切换目录 (Change Directory)
mkdir # 创建目录 (Make Directory)
rmdir # 删除空目录 (Remove Directory)
实用技巧:使用
cd -可以快速回到上一个工作目录,比反复输入完整路径高效得多。
2.2 文件操作四件套
1. 查看文件内容:
bash复制cat file.txt # 一次性显示全部内容
less file.txt # 分页查看(支持搜索)
head -n 5 file.txt # 显示前5行
tail -f log.txt # 实时追踪日志文件
2. 文件操作命令:
bash复制cp src.txt dest/ # 复制文件
mv old.txt new.txt # 移动/重命名文件
rm -i important.txt # 删除文件(-i交互确认)
touch newfile # 创建空文件或更新时间戳
3. 权限管理:
Linux使用经典的rwx权限系统:
code复制-rw-r--r-- 1 user group 1024 Jun 1 10:00 file.txt
第一位表示文件类型(-普通文件,d目录),接着三组rwx分别对应所有者、所属组和其他用户的权限。
修改权限的两种方式:
bash复制chmod 755 script.sh # 数字模式:7=rwx,5=r-x
chmod u+x,go-w file # 符号模式:u(user)+x, g(group)-w, o(other)
4. 查找定位:
bash复制find /home -name "*.jpg" -size +1M # 查找大于1MB的jpg文件
grep "error" /var/log/syslog # 在日志中搜索error关键词
locate updatedb # 使用数据库快速查找(需先运行updatedb)
3. 系统管理与进程控制
3.1 用户与权限提升
用户管理:
bash复制sudo adduser newuser # 创建新用户
passwd username # 修改密码
usermod -aG sudo user1 # 将用户加入sudo组
重要安全提示:永远不要直接使用root账户日常操作,应该通过sudo临时提权。配置sudoers文件时使用
visudo命令,它能防止语法错误导致系统锁死。
软件安装示例:
在Ubuntu上安装开发工具链:
bash复制sudo apt update
sudo apt install build-essential git python3-pip
3.2 进程管理三板斧
1. 查看进程:
bash复制ps aux | grep nginx # 查看nginx相关进程
top # 动态查看系统资源占用
htop # 增强版top(需额外安装)
2. 信号控制:
bash复制kill -9 1234 # 强制终止PID为1234的进程
pkill -f "python app.py" # 按名称终止进程
killall chrome # 终止所有同名进程
3. 后台作业:
bash复制python3 long_task.py & # 后台运行
jobs # 查看后台作业
fg %1 # 将作业1调到前台
Ctrl+Z # 暂停当前任务
bg %1 # 让暂停的任务在后台继续
4. 网络配置与系统服务
4.1 网络诊断工具
基础命令集:
bash复制ifconfig # 查看网络接口(新版用ip addr)
ping google.com # 测试网络连通性
traceroute example.com # 追踪网络路径
netstat -tulnp # 查看端口监听情况(新版用ss)
curl ifconfig.me # 获取公网IP
SSH远程连接:
bash复制ssh user@192.168.1.100 # 基础连接
ssh -p 2222 user@example.com # 指定端口
scp file.txt user@remote:/path/ # 安全拷贝文件
4.2 系统服务管理
现代Linux主要使用两种初始化系统:
1. systemd(主流发行版):
bash复制sudo systemctl start nginx # 启动服务
sudo systemctl enable nginx # 设置开机启动
journalctl -u nginx -f # 查看服务日志
2. SysVinit(老旧系统):
bash复制sudo service apache2 restart # 重启服务
chkconfig --list # 查看启动项
定时任务:
bash复制crontab -e # 编辑当前用户的cron任务
# 示例:每天3点备份
0 3 * * * /home/user/backup.sh
5. 实用技巧与故障排查
5.1 命令行生产力工具
1. 终端多路复用器:
bash复制tmux new -s session1 # 创建新会话
Ctrl+b d # 分离会话
tmux attach -t session1 # 重新连接
2. 文本处理三剑客:
bash复制# 统计日志中404错误出现的次数
grep " 404 " access.log | awk '{print $7}' | sort | uniq -c | sort -nr
# 批量重命名jpg文件
for f in *.jpg; do mv "$f" "vacation_${f}"; done
3. 历史命令妙用:
bash复制!! # 重复上条命令
!$ # 上条命令的最后一个参数
Ctrl+R # 反向搜索历史命令
history | grep "apt" # 查找包含apt的历史命令
5.2 常见问题速查表
| 问题现象 | 可能原因 | 排查命令 |
|---|---|---|
| 无法连接网络 | 网卡未启用 | ip link show dhclient eth0 |
| 磁盘空间不足 | 日志文件过大 | df -h du -sh * |
| 服务启动失败 | 端口冲突 | ss -tulnp journalctl -xe |
| 命令找不到 | PATH配置错误 | echo $PATH which command |
| 权限被拒绝 | 文件权限不足 | ls -l getfacl file |
性能诊断三步法:
- 使用
top查看CPU/内存占用高的进程 - 使用
iotop检查磁盘IO瓶颈 - 使用
iftop分析网络流量
最后分享一个我用了十年的alias配置(添加到~/.bashrc):
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
alias update='sudo apt update && sudo apt upgrade -y'
alias ports='netstat -tulanp'