1. Linux系统环境概述
第一次接触Linux时,我被它的命令行界面吓到了——黑底白字,没有熟悉的图标和菜单。但当我真正开始使用后,发现这套诞生于1991年的操作系统远比想象中强大。Linux内核如今已运行在全球超过90%的服务器上,从安卓手机到超级计算机都能看到它的身影。
与Windows不同,Linux采用"一切皆文件"的设计哲学。硬件设备、进程信息、系统配置都以文件形式存在特定目录中。这种统一抽象让系统管理变得异常灵活——通过简单的文本编辑和命令组合就能完成复杂的系统操作。比如要查看CPU信息,只需cat /proc/cpuinfo;要修改网络配置,直接编辑/etc/network/interfaces即可。
常见的Linux发行版主要分为两大阵营:
- 服务器领域:CentOS/RHEL以稳定性著称,Ubuntu Server则提供更现代的软件包
- 桌面环境:Ubuntu对新手友好,Arch Linux适合追求定制的用户
提示:初学者建议从Ubuntu开始,其庞大的社区和文档资源能大幅降低学习门槛
2. 终端操作基础
2.1 Shell环境解析
打开终端时,实际是在与Shell交互。常见的Bash Shell支持以下核心功能:
- 命令历史:按↑键可回溯执行过的命令,
history查看完整记录 - Tab补全:输入部分命令/文件名后按Tab自动补全
- 管道操作:用
|符号连接多个命令,如ls -l | grep "txt"
环境变量是Shell的重要特性。echo $PATH会显示可执行文件的搜索路径。添加自定义路径到PATH的典型方法:
bash复制export PATH=$PATH:/your/custom/path
# 永久生效需写入~/.bashrc文件
2.2 文件系统导航
Linux目录结构遵循FHS标准:
code复制/bin # 基础命令
/etc # 配置文件
/home # 用户目录
/var # 动态数据
常用导航命令组合示例:
bash复制pwd # 显示当前路径
ls -lh # 人性化显示文件大小
cd ~/Documents # 切换目录
find / -name "*.conf" # 全盘搜索配置文件
注意:
rm -rf是危险命令,删除前务必确认路径。我曾误删过整个项目目录,现在执行前会先用ls确认目标
3. 核心命令详解
3.1 文件操作三剑客
- 权限管理:
bash复制chmod 755 script.sh # 设置rwxr-xr-x权限
chown user:group file # 变更属主
stat file.txt # 查看详细属性
- 文本处理:
bash复制grep "error" /var/log/syslog # 过滤日志
awk '{print $1}' data.txt # 提取第一列
sed -i 's/old/new/g' file # 批量替换文本
- 归档压缩:
bash复制tar -czvf backup.tar.gz /path # 创建gzip压缩包
rsync -avz src/ user@host:dst/ # 增量同步
3.2 系统监控命令
服务器排障时这几个命令堪称救命稻草:
bash复制top -c # 动态进程监控(按M按内存排序)
df -h # 磁盘空间检查
free -m # 内存使用情况
ss -tulnp # 比netstat更现代的端口查看
journalctl -xe # 查看系统日志
我曾用iotop发现一个失控的日志进程正在疯狂写盘,用kill -9终止后立即恢复了系统响应。
4. 实用技巧合集
4.1 高效工作流
- 后台任务管理:
bash复制nohup ./server & # 脱离终端运行
screen -S session # 创建持久会话
tmux new -s dev # 更强大的终端复用
- 命令组合技巧:
bash复制# 统计当前目录文件数
find . -type f | wc -l
# 批量重命名
for f in *.jpg; do mv "$f" "${f%.jpg}_backup.jpg"; done
4.2 安全实践
生产环境必须掌握的防护措施:
- 禁用root远程登录:修改
/etc/ssh/sshd_config中PermitRootLogin no - 配置防火墙规则:
bash复制ufw allow 22/tcp # 开放SSH ufw enable # 启用防火墙 - 定期更新:
apt update && apt upgrade -y
5. 问题诊断手册
5.1 常见错误排查
-
Permission denied
- 检查文件权限:
ls -l - 确认执行权限:
chmod +x script.sh
- 检查文件权限:
-
Command not found
- 检查PATH变量:
echo $PATH - 确认软件安装:
which docker
- 检查PATH变量:
-
Disk full
- 查找大文件:
du -h --max-depth=1 / | sort -h - 清理日志:
journalctl --vacuum-size=100M
- 查找大文件:
5.2 性能调优案例
某次服务器负载飙升的排查过程:
top发现CPU被某个Java进程占满ps -ef | grep java定位到具体应用jstack <PID>获取线程堆栈- 分析发现死锁问题,联系开发修复
这个经历让我养成了定期检查/var/log/的好习惯。现在我会用logrotate配置日志自动轮转,避免磁盘被日志塞满的情况再次发生