
1. Linux系统学习日志从入门到精通的实践指南作为一名在Linux系统管理领域摸爬滚打多年的老鸟我决定把日常工作中积累的实战经验整理成这份系统学习日志。不同于市面上那些照本宣科的教程这里记录的每个命令、每个配置背后都有血淋淋的踩坑教训和真实生产环境验证过的解决方案。2. Linux基础环境搭建与配置2.1 系统安装的魔鬼细节在虚拟机安装Linux时我强烈推荐使用VirtualBox而不是VMware。不仅因为它是开源免费的更因为在最新内核支持上往往更及时。安装时最容易忽略的三个关键点分区方案/boot至少1GBswap分区大小应该是物理内存的1.5倍当内存8GB时时区设置务必取消UTC时间选项否则双系统时间会错乱软件包选择最小化安装后手动添加组件避免装上一堆无用服务血泪教训曾经因为没注意时区设置导致数据库定时备份全部错乱排查了整整两天2.2 终端操作的效率革命掌握这几个快捷键能让命令行效率提升300%CtrlR逆向搜索历史命令CtrlA/E快速跳转到行首/行尾Alt.插入上条命令的最后一个参数!!重复执行上条命令sudo !! 是救命神器我习惯在~/.bashrc中添加这些aliasalias llls -alFh --colorauto alias grepgrep --colorauto alias portsnetstat -tulnp3. 核心命令的深度解析3.1 文件操作的黑科技除了基础的ls/cd/cp/mv这些进阶用法才是真功夫# 查找并处理文件名中的空格xargs的魔法 find . -name * *.mp3 -print0 | xargs -0 rm # 快速比较两个目录差异 diff -qr dir1 dir2 | grep -v Common subdirectories # 查看文件修改历史需要配置git git log -p -- filename3.2 网络诊断的瑞士军刀当服务器出现网络问题时我的标准排查流程检查基础连通性ping traceroute验证端口开放telnet已被弃用改用nc -zv IP端口或ss -tulnp抓包分析tcpdump -i eth0 -w dump.pcap配合Wireshark图形化分析防火墙检查iptables -L -n -vCentOS或ufw statusUbuntu4. 开发环境配置实战4.1 Python环境管理别再直接装系统Python了Anaconda环境配置的正确姿势# 下载最新版注意替换版本号 wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh # 验证sha256校验和必须做 sha256sum Anaconda3-2023.07-2-Linux-x86_64.sh # 静默安装到用户目录 bash Anaconda3-2023.07-2-Linux-x86_64.sh -b -p $HOME/anaconda3 # 初始化shell配置 echo export PATH$HOME/anaconda3/bin:$PATH ~/.bashrc4.2 JDK多版本管理处理Java项目时经常需要切换版本我的方案手动下载tar.gz包解压到/opt/jdk目录使用alternatives系统管理多版本sudo update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_351/bin/java 100 sudo update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk1.8.0_351/bin/javac 100 sudo update-alternatives --config java # 交互式选择版本5. 系统调优与安全加固5.1 内核参数优化在高并发服务器上必须调整的/etc/sysctl.conf参数# 避免TCP连接卡在TIME_WAIT状态 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1 # 增大文件描述符限制 fs.file-max 655350 # 内存分配策略避免OOM killer误杀重要进程 vm.overcommit_memory 2 vm.overcommit_ratio 80执行sysctl -p立即生效建议先用测试环境验证。5.2 SSH安全加固禁止密码登录只是基础我的完整加固方案修改默认端口Port 23456不是22就行限制登录IPAllowUsers192.168.1.启用证书登录并设置密码短语安装fail2ban自动封禁暴力破解配置双向隧道验证Google Authenticator6. 生产环境排错实录6.1 磁盘空间莫名消失之谜某次服务器报警磁盘已满但du -sh统计不到对应大小。最终定位到是被删除但未释放的文件# 查找被进程占用的已删除文件 lsof | grep deleted # 快速释放空间无需重启服务 sudo truncate -s 0 /proc/[pid]/fd/[fd_num]6.2 进程卡死分析指南当某个进程CPU占用100%时我的诊断三板斧定位问题线程top -H -p [pid]查看调用栈pstack [pid]或gdb -p [pid]thread apply all bt分析系统调用strace -p [pid] -f -T -tt -o trace.log7. 进阶技能内核模块开发7.1 最简单的字符设备驱动hello_world.c示例#include linux/module.h #include linux/fs.h static int __init hello_init(void) { printk(KERN_INFO Hello world!\n); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO Goodbye world!\n); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE(GPL);编译用的Makefile关键配置obj-m : hello.o KDIR : /lib/modules/$(shell uname -r)/build PWD : $(shell pwd) all: $(MAKE) -C $(KDIR) M$(PWD) modules7.2 内核调试技巧打印内核日志dmesg -Tw-T显示人类可读时间动态调试echo file hello.c p /sys/kernel/debug/dynamic_debug/control崩溃分析配置kdump后用crash工具分析vmcore8. 我的终端美化方案8.1 Powerline配置先安装必要字体wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf mkdir -p ~/.local/share/fonts/ mv PowerlineSymbols.otf $_ mkdir -p ~/.config/fontconfig/conf.d/ mv 10-powerline-symbols.conf $_然后在.bashrc中添加function _update_ps1() { PS1$(powerline-shell $?) } PROMPT_COMMAND_update_ps1; $PROMPT_COMMAND8.2 tmux终极配置~/.tmux.conf的精髓配置# 启用真彩色支持 set -g default-terminal tmux-256color set -ga terminal-overrides ,*256col*:Tc # 鼠标支持现代tmux已内置 set -g mouse on # 复制模式优化 bind-key -T copy-mode-vi v send -X begin-selection bind-key -T copy-mode-vi y send -X copy-selection这份日志我会持续更新特别是遇到新的坑和解决方案时。Linux就像一座冰山你永远不知道水下还藏着多少秘密。最近在研究BPF性能分析工具等实践成熟了再和大家分享。记住最好的学习方式就是不断把系统搞崩溃再修复它