尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux命令行操作:从入门到精通的实战指南

Linux命令行操作:从入门到精通的实战指南 1. Linux系统入门为什么每个技术人都该掌握命令行第一次接触Linux终端的新手往往会被满屏闪烁的光标和神秘命令吓到。但我要告诉你一个事实全球90%的服务器、所有Android手机内核、甚至你家的智能路由器都在运行Linux系统。上周我团队新来的实习生就因为不会用grep查日志不得不手动翻找2GB的文本文件——这就是忽视Linux基础的代价。命令行操作就像外科医生的手术刀相比图形界面的玩具剪刀它能精准处理这些场景批量重命名300个混合编码的图片文件快速分析10GB日志中的异常请求在没有显示器的服务器上排查网络故障用一条命令完成文件夹备份压缩加密2. 文件操作从青铜到王者的必经之路2.1 目录导航的肌肉记忆训练pwd命令打印当前路径就像你问我在哪得到的回答。但实际工作中更常用的是结合cd -快速切换两个目录这个技巧帮我节省了每天上百次的路径输入。# 创建测试环境 mkdir -p ~/projects/{website,app}/src/{main,test} cd ~/projects/website/src/main pwd # 显示/home/user/projects/website/src/main cd - # 立即跳回上一个目录比如/home/user警告永远不要在rm命令里用通配符*除非先用ls确认匹配结果。我曾在凌晨3点误删了整个/usr/lib——这个教训价值百万。2.2 文件操作的十二道金牌cp/mv/rm三剑客配合通配符能玩出花# 批量处理示例 cp *.jpg /backup/2023-08/ # 复制所有jpg mv project_{old,new} # 重命名魔术 rm !(*.pdf) # 删除非PDF文件需extglob但更高级的是rsync——这个命令曾帮我用1条指令同步了40TB的基因组数据rsync -avz --progress /data/ userbackup:/mnt/archive/3. 文本处理数据工程师的瑞士军刀3.1 grep的三十六种用法当服务器日志爆满时grep就是你的夜视镜grep -n ERROR app.log # 显示行号 grep -c 404 access.log # 统计出现次数 grep -A3 -B2 panic dmesg # 显示前后上下文去年我用这个命令链从TB级日志中抓取攻击线索zcat *.log.gz | grep -E SQL注入|XSS | awk {print $1} | sort | uniq -c3.2 sed与awk的化学反应sed的流编辑能力可以瞬间完成批量替换# 修改所有配置文件中的旧IP sed -i s/192.168.1.100/10.0.0.1/g *.conf但真正的大杀器是awk它能直接处理CSVawk -F, {sum$3} END {print sum} sales.csv我的性能分析脚本核心就是这段awkvmstat 1 10 | awk NR3 {us$13; sy$14} END {print 用户态:,us/10%,内核态:,sy/10%}4. 系统管理从围观到参与的蜕变4.1 进程管理的黑暗艺术ps aux就像任务管理器但htop才是真正的上帝视角。有次我用它发现了一个伪装成nginx的挖矿程序——CPU占用99%但进程名只差一个字母。杀死进程的优雅方式pkill -f python3 data_import.py # 按完整命令杀进程 kill $(pgrep -u mysql) # 结束某用户所有进程4.2 磁盘空间的侦探游戏df -h看剩余空间但ncdu才是查找大文件的利器。记得有次/tmp爆满用这个工具3分钟就定位到某个容器日志写了200GB垃圾。# 找出大于100MB的日志文件 find /var/log -type f -size 100M -name *.log5. 网络诊断从ping到抓包大师5.1 连通性测试三板斧ping example.com # 基础连通性 traceroute google.com # 路由追踪 mtr -n 8.8.8.8 # 实时路由监控当我在AWS上遇到网络抖动时是这个命令链锁定了问题while true; do date; ping -c1 example.com || break; sleep 1; done5.2 端口与防火墙的攻防ss -tulnp # 比netstat更快的替代品 sudo ufw allow 22/tcp # 防火墙规则管理有次安全审计我用这个命令发现异常外连lsof -i -P -n | grep ESTABLISHED6. 权限管理安全与便利的平衡术6.1 用户与组的权限舞蹈sudo adduser dev --ingroup docker # 创建用户并加入组 chmod 750 /shared # 精确控制目录权限 setfacl -m u:alice:rwx /project # 细粒度ACL控制6.2 sudoers文件的危险魔法编辑/etc/sudoers时一定要用visudo它有语法检查功能。曾经有运维直接vim编辑导致全员sudo失效不得不单用户模式修复。# 允许用户无需密码执行特定命令 dev ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx7. 脚本编程从手动到自动的进化7.1 Bash脚本的防坑指南这个脚本模板我用了8年#!/usr/bin/env bash set -euo pipefail # 严格模式 IFS$\n\t # 防止文件名中有空格 main() { local input_file${1:-default.txt} [[ -f $input_file ]] || die 文件不存在 process_data $input_file } die() { echo $* 12; exit 1; }7.2 定时任务的正确姿势# 每天凌晨压缩日志 0 0 * * * /usr/bin/find /var/log -name *.log -mtime 7 -exec gzip {} \;关键技巧在crontab里总是用完整路径因为环境变量可能与交互式shell不同。8. 性能调优从感觉到数据的跨越8.1 资源监控的黄金组合top # 经典工具 iotop -o # 磁盘IO监控 iftop -n -P # 网络流量分析我的诊断清单free -h看内存vmstat 1看CPU等待iostat -xz 1看磁盘瓶颈8.2 系统调优的七个杠杆# 临时提高文件描述符限制 ulimit -n 65535 # 永久生效需要修改/etc/security/limits.conf * soft nofile 65535 * hard nofile 655359. 软件管理包管理器背后的哲学9.1 apt与yum的终极对决Debian系sudo apt update sudo apt upgrade -y apt-cache search ^nginxRHEL系sudo yum makecache fast yum provides */libmysqlclient.so9.2 编译安装的生存手册./configure --prefix/usr/local/openssl make -j$(nproc) sudo make install血泪教训永远不要替换系统自带的openssl除非你想重装系统。10. 终端生存高效工作流的秘密10.1 快捷键的肌肉记忆CtrlR逆向搜索历史命令CtrlXE用$EDITOR编辑当前命令Alt.插入上个命令的最后一个参数10.2 tmux的多重宇宙我的标准工作区配置tmux new -s work # 然后CtrlB % 垂直分屏 # CtrlB 水平分屏 # CtrlB 方向键切换11. 版本控制Git在命令行的艺术11.1 基础工作流git init git add -p # 交互式暂存 git commit -v # 带diff查看11.2 高级排查技巧# 查找谁改了某行代码 git blame -L 50,60 src/main.c # 二分法定位bug git bisect start git bisect bad git bisect good v1.012. 容器化入门Docker命令行实战12.1 容器生命周期管理docker run -it --rm alpine:latest sh docker ps -a --format table {{.ID}}\t{{.Status}}\t{{.Ports}} docker exec -it mysql bash12.2 构建优化技巧这个Dockerfile策略让镜像体积减小70%FROM python:3.9-slim as builder COPY requirements.txt . RUN pip install --user -r requirements.txt FROM python:3.9-slim COPY --frombuilder /root/.local /root/.local13. 安全加固从被动到主动的防御13.1 SSH安全最佳实践# 禁用密码登录 sudo sed -i s/#PasswordAuthentication yes/PasswordAuthentication no/ /etc/ssh/sshd_config # 使用证书登录 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 ssh-copy-id userserver13.2 系统审计入门# 查看sudo记录 sudo journalctl _COMMsudo # 检查异常登录 last -f /var/log/wtmp14. 故障排查从现象到根源的推理14.1 经典问题诊断树服务不可用systemctl status nginxjournalctl -u nginx --since 1 hour ago磁盘满df -hdu -sh * | sort -h内存泄漏free -hpmap -x $(pgrep python)14.2 救命稻草救援模式当系统无法启动时在GRUB菜单按e编辑在linux行末尾添加init/bin/bashCtrlX启动后立即mount -o remount,rw /15. 性能分析从猜测到实证的转变15.1 CPU瓶颈分析perf top -g # 实时函数级CPU分析 strace -c -p $(pgrep nginx) # 系统调用统计15.2 内存泄漏追踪valgrind --leak-checkfull ./myapp16. 日志分析从噪声到信号的提取16.1 结构化日志处理# 提取JSON日志中的特定字段 jq .timestamp, .user_id /var/log/app.json16.2 实时日志监控tail -f /var/log/nginx/access.log | grep -v ELB-HealthChecker17. 备份策略从脆弱到健壮的进化17.1 自动化备份方案# 每日增量备份 tar -cvzf backup-$(date %F).tar.gz --newer-mtime1 day ago /data17.2 加密备份实践# 创建加密备份 tar cz /data | openssl enc -aes-256-cbc -out backup.tar.gz.enc18. 环境配置从手动到代码的飞跃18.1 配置管理模板# 用heredoc生成配置文件 cat /etc/nginx/conf.d/app.conf EOF server { listen 80; server_name ${DOMAIN}; } EOF18.2 跨系统同步配置我的dotfiles管理方案git clone https://github.com/user/dotfiles.git cd dotfiles ./install.sh19. 硬件交互从抽象到具体的连接19.1 USB设备调试lsusb -v # 查看USB设备详情 udevadm monitor # 监控设备事件19.2 磁盘性能测试# 测试磁盘IOPS fio --namerandom-write --ioengineposixaio --rwrandwrite --bs4k --size1g --numjobs1 --runtime60 --time_based --end_fsync120. 持续学习构建你的Linux知识体系20.1 内建文档系统man 7 hier # 文件系统层次结构标准 info coreutils # GNU工具完整文档20.2 社区资源导航通过apropos查找相关命令Stack Overflow的unix标签服务器故障(Server Fault)社区
返回列表