掌握 Linux 指令是后端工程师的必备技能。很多同学在入门后,总感觉自己的 Linux 指令使用不够灵活,遇到问题时,只能靠搜索引擎堆砌命令。本文将带你深入 Linux 指令 的世界,通过实际案例,让你从入门到熟练掌握 Linux 命令,提升效率。
文件操作进阶
权限管理:chmod 的高级用法
chmod 不仅仅是简单的 chmod 777。了解数字权限背后的原理,以及符号权限的灵活运用,才能真正掌握权限管理。
数字权限的奥秘
chmod 755 file.txt 背后的含义是什么? 7 代表所有者 (user) 拥有读、写、执行权限 (4+2+1),5 代表所属组 (group) 和其他人 (others) 拥有读、执行权限 (4+1)。
符号权限的精髓
chmod u+x,g-w file.txt 的含义是:给所有者 (user) 添加执行权限,给所属组 (group) 移除写入权限。 使用符号权限可以更加精细地控制文件权限,避免误操作。
# 给所有者添加执行权限
chmod u+x script.sh
# 给所属组移除写入权限
chmod g-w config.ini
文件查找:find 的高级技巧
find 命令是 Linux 下强大的文件查找工具。熟练掌握 find 命令,可以快速定位到目标文件。
按文件名查找
# 查找当前目录下所有名为 *.log 的文件
find . -name "*.log"
# 忽略大小写查找
find . -iname "*.log"
按文件大小查找
# 查找大于 10MB 的文件
find . -size +10M
# 查找小于 10KB 的文件
find . -size -10k
按文件修改时间查找
# 查找 3 天内被修改过的文件
find . -mtime -3
# 查找 3 天前被修改过的文件
find . -mtime +3
结合 xargs 命令批量处理文件
find 命令查找出的文件,可以通过 xargs 命令传递给其他命令进行批量处理。
# 查找当前目录下所有的 *.log 文件,并删除
find . -name "*.log" | xargs rm -f
# 查找当前目录下所有的 *.txt 文件,并统计行数
find . -name "*.txt" | xargs wc -l
避坑经验: 使用 xargs 命令时,注意文件名中可能包含空格等特殊字符,可以使用 -print0 和 -0 参数避免问题。
find . -name "*.txt" -print0 | xargs -0 wc -l
进程管理进阶
进程监控:top 与 htop
top 命令是常用的进程监控工具,但信息展示不够直观。htop 命令是 top 的增强版,界面更友好,功能更强大。使用 htop 可以更方便地查看进程的 CPU 占用率、内存占用率等信息,并进行进程管理。
安装 htop
# Debian/Ubuntu
sudo apt-get install htop
# CentOS/RHEL
sudo yum install htop
进程信号:kill 命令的艺术
kill 命令用于向进程发送信号。常用的信号包括:
SIGTERM (15):正常终止进程,进程可以清理资源后退出(默认信号)。SIGKILL (9):强制终止进程,进程无法清理资源(慎用)。SIGHUP (1):重新加载配置文件,常用于 Nginx、Apache 等服务。
# 正常终止进程
kill <pid>
# 强制终止进程
kill -9 <pid>
# 重新加载 Nginx 配置文件
kill -HUP <nginx_master_pid>
实战技巧: 在使用 kill -9 强制终止进程前,尽量先尝试 kill <pid> 正常终止进程,给进程一个清理资源的机会,避免数据丢失或损坏。
后台运行:nohup 与 screen
nohup 命令用于在后台运行程序,即使关闭终端,程序也能继续运行。但 nohup 命令会将程序的输出重定向到 nohup.out 文件。
nohup ./my_script.sh > output.log 2>&1 &
screen 命令是一个终端复用工具,可以在一个终端窗口中创建多个会话,每个会话可以运行不同的程序。即使断开连接,会话中的程序也会继续运行。
# 创建一个新的会话
screen -S my_session
# 在会话中运行程序
./my_long_running_task.sh
# 断开会话(程序继续运行)
Ctrl+A, D
# 重新连接会话
screen -r my_session
# 列出所有会话
screen -ls
nohup 适合简单的后台运行,screen 适合需要与程序交互的后台运行场景。 如果服务器上安装了宝塔面板,可以使用宝塔面板提供的进程守护功能,更加方便地管理后台进程。
网络管理进阶
网络配置:ifconfig 与 ip
ifconfig 命令是传统的网络配置工具,但已经被 ip 命令取代。ip 命令功能更强大,可以配置网络接口、路由、ARP 等。
# 查看网络接口信息
ip addr show
# 启用/禁用网络接口
ip link set eth0 up
ip link set eth0 down
# 设置 IP 地址
ip addr add 192.168.1.100/24 dev eth0
# 设置默认网关
ip route add default via 192.168.1.1
避坑经验: 使用 ip 命令配置网络后,需要将配置写入 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ifcfg-eth0 等配置文件,才能保证重启后配置生效。 另外,要关注防火墙设置(例如 iptables 或 firewalld),确保网络端口的开放,避免服务无法访问。 很多云服务器提供商会提供安全组功能,也需要配置安全组规则,才能允许外部访问。
网络诊断:ping、traceroute 与 tcpdump
ping命令用于测试网络连通性。traceroute命令用于跟踪数据包的路由路径。tcpdump命令用于抓包分析网络流量。
# 测试与 www.baidu.com 的连通性
ping www.baidu.com
# 跟踪到达 www.baidu.com 的路由路径
traceroute www.baidu.com
# 抓取 eth0 网卡上的 HTTP 流量
tcpdump -i eth0 port 80
性能调优进阶
系统资源监控:vmstat 与 iostat
vmstat 命令用于监控系统的 CPU、内存、磁盘 I/O 等资源使用情况。
iostat 命令用于监控磁盘 I/O 性能。
性能分析工具:perf
perf 命令是 Linux 下强大的性能分析工具,可以分析 CPU 性能、内存性能、I/O 性能等。
使用 perf 分析 CPU 热点
# 记录 CPU 事件
perf record -g ./my_program
# 生成火焰图
perf script | ./stackcollapse.pl | ./flamegraph.pl > flamegraph.svg
火焰图可以直观地展示 CPU 的调用栈,帮助定位 CPU 热点。
总结
通过本文的学习,相信你已经对 Linux 指令有了更深入的理解。 熟练掌握这些进阶指令,可以让你在日常工作中更加得心应手,解决各种疑难杂症。 Linux 的学习永无止境,希望你在 Linux 的世界里不断探索,不断进步。 为了应对高并发场景,还需要深入理解 Nginx 的反向代理和负载均衡机制,并结合 Lua 脚本进行灵活定制。此外,熟悉 Docker 和 Kubernetes 等容器化技术,也是现代后端工程师的必备技能。
冠军资讯
不想写注释