1. 自学Linux的阶段性突破作为一名从零开始自学Linux的实践者第十三天往往是个关键转折点。这时候已经度过了最初的手足无措期开始能够独立完成一些基础系统操作但距离真正掌握Linux的精髓还有很长的路要走。这个阶段最需要的是建立系统化的知识框架而不是零散的命令记忆。我在这个阶段最大的体会是Linux学习不是简单的命令堆砌而是理解其设计哲学。比如一切皆文件的理念这个看似简单的原则实际上贯穿了整个Linux系统的设计。当你开始用这个视角看待设备、进程和网络连接时很多命令的用法突然就变得合情合理了。2. 核心知识体系构建2.1 文件系统深度探索经过前期的学习你应该已经掌握了基本的文件操作命令ls、cd、cp等。第十三天需要深入理解Linux文件系统的组织结构和权限机制/proc目录的妙用这个虚拟文件系统实时反映了系统运行状态。比如/proc/cpuinfo展示CPU信息/proc/meminfo显示内存使用情况。通过cat命令查看这些文件比专用命令更直观。硬链接与软链接的区别用ln命令创建链接时带-s参数创建的是软链接类似Windows快捷方式不带则是硬链接同一文件的多个入口。关键区别在于删除原文件后硬链接依然有效而软链接失效。权限管理的进阶技巧除了基本的chmod数字表示法如755更推荐使用符号表示法如urx。后者可读性更好也能避免误操作。2.2 进程管理实战Linux的进程管理能力是其强大之处。这个阶段应该掌握# 查看进程树型结构 pstree -p # 实时监控系统资源 top # 更现代的替代品 htop特别要注意kill命令的信号参数。默认的kill [PID]实际发送的是15SIGTERM而kill -9 [PID]发送的是SIGKILL。前者允许进程进行清理工作后者是强制立即终止。生产环境中应该优先尝试SIGTERM。2.3 网络配置与诊断网络问题是Linux系统中最常见的故障之一。必须掌握的基础工具# 查看网络接口信息 ip addr # 老式命令逐渐淘汰 ifconfig # 路由表查看 ip route # 或 route -n # 网络连通性测试 ping -c 4 example.com # 更全面的网络诊断 traceroute example.com mtr example.com注意现代Linux发行版逐渐用ip命令替代传统的ifconfig和route建议优先学习新工具。3. Shell脚本入门实战第十三天是开始学习Shell脚本的理想时机。从一个简单的备份脚本开始#!/bin/bash # 简单备份脚本 BACKUP_DIR/backup SOURCE_DIR$HOME/important_files TIMESTAMP$(date %Y%m%d_%H%M%S) if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz $SOURCE_DIR if [ $? -eq 0 ]; then echo 备份成功: $BACKUP_DIR/backup_$TIMESTAMP.tar.gz else echo 备份失败! 2 exit 1 fi关键知识点#!/bin/bash指定解释器变量定义与使用条件判断if [ condition ]命令返回值检查$?输出重定向24. 软件包管理精要不同Linux发行版的包管理系统差异很大。以最常见的Debian/Ubuntuapt和RHEL/CentOSyum/dnf为例操作Debian/Ubuntu (apt)RHEL/CentOS (yum/dnf)更新源sudo apt updatesudo yum check-update安装软件sudo apt install packagesudo yum install package删除软件sudo apt remove packagesudo yum remove package搜索软件apt search keywordyum search keyword查看信息apt show packageyum info package实用技巧apt和yum的历史命令保存在~/.bash_history中可以通过history | grep apt快速查找之前执行过的安装命令。5. 系统日志分析入门Linux系统产生的日志是排查问题的金矿。主要日志文件位置/var/log/syslog通用系统日志Debian系/var/log/messages通用系统日志RHEL系/var/log/auth.log认证相关日志/var/log/kern.log内核日志使用journalctl查看systemd日志# 查看所有日志 journalctl # 查看指定服务的日志 journalctl -u nginx # 实时跟踪新日志 journalctl -f高效的日志分析技巧使用grep过滤关键信息grep -i error /var/log/syslog使用tail -f实时监控日志文件变化组合使用awk和sort进行统计awk {print $5} access.log | sort | uniq -c | sort -nr6. 用户与权限管理进阶除了基本的useradd和passwd命令还需要了解sudo配置通过visudo命令安全编辑/etc/sudoers文件用户组管理usermod -aG groupname username将用户添加到附加组查看用户登录历史last命令检查当前登录用户who命令特殊权限标志SUIDchmod us file执行时以文件所有者身份运行SGIDchmod gs file对目录设置时新建文件继承目录的组Sticky Bitchmod t dir目录中的文件只有所有者能删除7. 磁盘管理关键操作7.1 磁盘空间分析# 查看磁盘使用情况 df -h # 查看目录大小 du -sh /path/to/directory # 交互式磁盘使用分析 ncdu7.2 文件系统操作# 创建文件系统 mkfs.ext4 /dev/sdX1 # 检查文件系统 fsck /dev/sdX1 # 调整文件系统大小 resize2fs /dev/sdX17.3 挂载管理# 临时挂载 mount /dev/sdX1 /mnt # 永久挂载编辑/etc/fstab UUIDxxxx-xxxx /mnt ext4 defaults 0 2重要提示操作磁盘分区前务必确认设备标识符错误的操作可能导致数据丢失。建议先用lsblk命令确认设备信息。8. 环境变量与Shell配置理解环境变量是掌握Linux的关键。常用操作# 查看所有环境变量 env # 设置临时变量 export MY_VARvalue # 永久设置添加到~/.bashrc echo export MY_VARvalue ~/.bashrc source ~/.bashrcShell配置文件加载顺序/etc/profile系统全局配置~/.bash_profile或~/.bash_login或~/.profile用户级配置~/.bashrc交互式shell配置9. 文本处理三剑客9.1 grep文本搜索# 基本搜索 grep pattern file # 递归搜索 grep -r pattern /path # 显示前后行 grep -A 3 -B 2 pattern file9.2 sed流编辑器# 替换文本 sed s/old/new/g file # 删除行 sed /pattern/d file # 原地编辑加-i参数 sed -i s/old/new/g file9.3 awk文本处理# 打印特定列 awk {print $1,$3} file # 条件过滤 awk $3 100 {print $0} file # 计算统计 awk {sum$3} END {print sum} file10. 计划任务管理10.1 cron定时任务# 编辑当前用户的cron任务 crontab -e # 查看当前用户的cron任务 crontab -lcron时间格式* * * * * command | | | | | | | | | ----- 星期几 (0 - 6) (周日0) | | | ------- 月份 (1 - 12) | | --------- 日 (1 - 31) | ----------- 小时 (0 - 23) ------------- 分钟 (0 - 59)10.2 systemd定时器现代Linux系统逐渐使用systemd定时器替代cron# 列出所有定时器 systemctl list-timers # 查看定时器详情 systemctl status mytimer.timer11. 安全基础实践11.1 SSH安全加固# 禁用root登录 sudo sed -i s/#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config # 使用密钥认证 ssh-keygen -t ed25519 ssh-copy-id userremote # 更改默认端口 sudo sed -i s/#Port 22/Port 2222/ /etc/ssh/sshd_config11.2 防火墙配置# UFW简单防火墙Ubuntu sudo ufw allow 22/tcp sudo ufw enable # firewalldRHEL/CentOS sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --reload12. 性能监控基础12.1 实时监控工具# 经典工具 top vmstat 1 iostat -xz 1 # 现代替代品 htop glances12.2 系统基准信息# CPU信息 lscpu cat /proc/cpuinfo # 内存信息 free -h cat /proc/meminfo # 硬件信息 lshw dmidecode13. 常见问题排查指南13.1 网络连接问题检查物理连接ip link show测试本地网络ping 127.0.0.1测试网关ping 192.168.1.1根据实际网关修改测试DNS解析ping example.com检查路由ip route show13.2 磁盘空间不足找出大文件sudo du -ahx / | sort -rh | head -20清理旧日志sudo journalctl --vacuum-size200M查找并删除core dump文件find / -name core.* -exec rm {} \;13.3 服务启动失败查看服务状态systemctl status servicename查看详细日志journalctl -u servicename -xe测试配置文件nginx -t以nginx为例检查端口占用ss -tulnp | grep :8014. 学习资源推荐14.1 在线文档Linux man pagesman commandTLDPThe Linux Documentation ProjectArch Wiki通用Linux知识14.2 命令行学习工具# 交互式学习 sudo apt install tldr tldr command # 命令解释 explainshell.com14.3 进阶书籍《Linux命令行与shell脚本编程大全》《鸟哥的Linux私房菜》《UNIX环境高级编程》15. 个人学习心得自学Linux第十三天时我最大的感悟是不要试图记住所有命令而是理解系统的工作原理。当你知道Linux如何处理文件、管理进程和控制权限时具体的命令只是实现细节。建议每天专注一个主题如今天的文件系统深入实践而不是泛泛浏览遇到问题时先尝试自己解决查阅man page和--help输出建立自己的命令笔记但按功能分类而不是简单罗列在虚拟机中大胆尝试犯错是最好的学习方式最后分享一个实用技巧使用alias简化常用命令。比如在~/.bashrc中添加alias llls -alF alias grepgrep --colorauto alias updatesudo apt update sudo apt upgrade -y