三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux自学第9天:文件系统、进程管理与网络配置实战

Linux自学第9天:文件系统、进程管理与网络配置实战

1. 为什么选择Linux作为自学方向

在技术领域摸爬滚打多年后,我越来越意识到Linux系统的重要性。这个开源操作系统不仅是服务器领域的霸主,更渗透到了嵌入式设备、云计算平台甚至日常开发环境中。记得我第一次接触Linux是在大学实验室,面对黑底白字的终端界面完全不知所措,而如今它已成为我每天工作不可或缺的工具。

选择自学Linux的第九天,意味着已经度过了最初的手足无措期。这个阶段通常会出现几个显著特征:能够独立完成基础目录导航和文件操作,对权限系统有了初步理解,开始尝试编写简单的shell脚本,但距离熟练使用还有明显差距。就像学习游泳时刚能浮起来换气,既兴奋又充满不安全感。

2. 第九天的核心学习路线规划

2.1 文件系统深度探索

经过前八天的基础学习,现在应该对/bin/etc等常见目录有了基本认知。第九天需要深入理解文件系统的组织结构:

# 查看磁盘使用情况 df -h # 分析目录大小 du -sh /var/log/ # 查找大文件 find / -type f -size +100M -exec ls -lh {} \;

特别要注意/proc虚拟文件系统,这个实时反映系统状态的目录是理解Linux内核运作的窗口。比如查看CPU信息:

cat /proc/cpuinfo

2.2 进程管理实战

Linux的进程管理能力是其核心优势之一。建议通过以下命令组合来建立完整的进程认知框架:

# 动态查看进程 top # 更友好的进程查看器 htop # 按内存排序进程 ps aux --sort=-%mem | head # 杀死顽固进程的完整流程 pgrep -f "process_name" kill -9 PID

遇到僵尸进程时,不要立即使用kill -9,应该先尝试kill -15发送SIGTERM信号,给进程优雅退出的机会。

2.3 网络配置与排错

网络问题是Linux使用中最常遇到的挑战之一。建议掌握以下诊断链条:

# 检查网卡状态 ip addr show # 测试连通性 ping -c 4 google.com # 路由追踪 traceroute example.com # 端口检测 nc -zv 192.168.1.1 22 # DNS解析测试 dig +short example.com

当遇到网络连接问题时,按照物理层→网络层→传输层→应用层的顺序逐层排查,可以快速定位问题根源。

3. Shell脚本编写进阶

3.1 条件判断与循环结构

第九天应该开始编写有一定逻辑复杂度的脚本。以下是一个实用的备份脚本示例:

#!/bin/bash BACKUP_DIR="/backups" LOG_FILE="/var/log/backup.log" if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" echo "$(date) - Created backup directory" >> "$LOG_FILE" fi for file in /home/user/documents/*; do if [ -f "$file" ]; then gzip -c "$file" > "$BACKUP_DIR/$(basename "$file").gz" echo "$(date) - Compressed $file" >> "$LOG_FILE" fi done

重要提示:脚本中一定要包含错误处理和日志记录,这是区分新手和专业用户的关键习惯。

3.2 实用脚本模式收集

建议建立自己的脚本代码库,收集以下常用模式:

  • 文件批量重命名
  • 日志轮转清理
  • 系统监控报警
  • 自动化部署
  • 数据同步备份

每种模式都应该有带参数处理的完整版本和简化版,方便不同场景调用。

4. 系统安全基础加固

4.1 用户权限管理

# 创建受限用户 useradd -m -s /bin/bash limited_user passwd limited_user # 设置sudo权限 visudo # 添加:limited_user ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade # 检查异常登录 last -f /var/log/wtmp

4.2 防火墙配置

Ubuntu系统使用ufw的推荐配置:

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw enable

CentOS系统使用firewalld的典型配置:

sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload

5. 开发环境搭建实践

5.1 Python环境配置

# 安装pyenv curl https://pyenv.run | bash # 配置环境变量 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc # 安装指定Python版本 pyenv install 3.9.7 pyenv global 3.9.7

5.2 Docker初体验

# 安装Docker sudo apt update sudo apt install docker.io # 配置用户组 sudo usermod -aG docker $USER newgrp docker # 运行测试容器 docker run hello-world # 常用命令速查 docker ps -a # 查看容器 docker images # 查看镜像 docker volume ls # 查看数据卷

6. 日常问题排查工具箱

建立自己的排错检查清单:

  1. 磁盘空间:df -hdu -sh *
  2. 内存使用:free -hvmstat 1
  3. CPU负载:uptimempstat -P ALL 1
  4. 网络连接:ss -tulnpiftop
  5. 登录历史:lastjournalctl -u sshd

遇到性能问题时,使用top快速查看资源占用情况,然后根据具体瓶颈深入分析。例如CPU使用率高时:

# 找出CPU占用高的进程 ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head # 查看该进程的线程情况 top -H -p PID # 生成火焰图(需安装perf) perf record -F 99 -p PID -g -- sleep 30 perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > flame.svg

7. 学习资源与进阶路线

7.1 推荐学习资料

  • 书籍:《鸟哥的Linux私房菜》《Linux命令行与shell脚本编程大全》
  • 在线:Linux Documentation Project (tldp.org)
  • 视频:YouTube上The Linux Foundation官方频道
  • 实践:OverTheWire的Bandit游戏

7.2 后续学习路径建议

  1. 掌握正则表达式和文本处理三剑客(grep/sed/awk)
  2. 学习Ansible自动化配置管理
  3. 深入理解系统启动过程和systemd
  4. 研究内核参数调优
  5. 尝试Linux From Scratch项目

我在实际工作中发现,很多人在学习Linux时会陷入两个极端:要么停留在表面命令记忆,要么过早深入内核源码。建议采用"横向扩展→纵向深入"的螺旋式学习法,先建立完整的知识地图,再针对工作需求重点突破特定领域。

← 返回列表