1. Linux基础命令进阶实战
最近在整理Linux学习笔记时,发现很多初学者对基础命令的掌握往往停留在表面。今天我想分享一些在实际工作中真正高频使用的命令技巧,这些内容可能不会出现在标准教材里,但却是提升工作效率的关键。
1.1 文件操作的三重境界
新手最常接触的ls命令其实隐藏着不少玄机。除了基本的ls -l查看详细信息外,我习惯使用组合命令:
bash复制ls -lht --color=auto
这个命令组合实现了:
-h人类可读的文件大小显示-t按修改时间排序--color=auto彩色显示文件类型
注意:在脚本中使用ls时务必加上
--quoting-style=literal,避免文件名含空格时出现意外行为。
查找文件时,相比简单的find,我推荐使用更高效的fd工具(需安装):
bash复制fd -e md --exec wc -l
这个命令会查找所有.md文件并统计行数,速度比原生find快3-5倍。
1.2 文本处理的瑞士军刀
sed和awk是文本处理的双子星,但很多开发者只停留在基础用法。这里分享几个实战技巧:
日志时间戳转换:
bash复制sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/g' access.log
统计接口调用次数:
bash复制awk '{count[$7]++} END {for(k in count) print k, count[k]}' nginx.log | sort -nrk2
实际使用中发现,当处理GB级日志时,先用
grep过滤再交给awk处理,效率能提升10倍以上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统管理核心技能
2.1 进程管理的正确姿势
ps aux的输出信息过载,我通常自定义输出列:
bash复制ps -eo pid,user,pcpu,pmem,cmd --sort=-%cpu | head -n 10
对于顽固进程,不要直接kill -9,应该先尝试:
bash复制kill -TERM <pid>
sleep 3
kill -CONT <pid> # 给进程保存状态的机会
2.2 网络诊断三板斧
连接状态分析:
bash复制ss -tulnp | grep -E '^(tcp|udp)'
实时流量监控:
bash复制nethogs eth0 -d 2
深度包分析(需root):
bash复制tcpdump -i any -nn -vv port 80 -w http.pcap
3. Shell脚本进阶技巧
3.1 防御性编程实践
好的shell脚本应该包含:
bash复制#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
-e遇到错误立即退出-u使用未定义变量时报错-o pipefail管道命令中任意失败则整体失败
3.2 高性能脚本优化
避免频繁调用外部命令:
bash复制# 差实践
for i in $(seq 1 100); do
grep "error" logfile
done
# 好实践
grep "error" logfile > /tmp/errors
for i in {1..100}; do
process /tmp/errors
done
使用coproc实现并发:
bash复制coproc DB { mysql -uuser -ppass dbname; }
echo "SELECT * FROM table" >&${DB[1]}
read -u ${DB[0]} result
4. 常见问题排查指南
4.1 磁盘空间莫名消失
先用ncdu快速定位大文件:
bash复制ncdu / --exclude /mnt
如果发现/var/log/journal占用过大:
bash复制journalctl --vacuum-size=200M
4.2 内存泄漏定位
查看内存趋势:
bash复制watch -n 1 'free -h'
按进程统计:
bash复制smem -s pss -k -r | head -20
详细分析(需安装valgrind):
bash复制valgrind --leak-check=full ./your_program
5. 性能调优实战
5.1 IO性能优化
检测磁盘IO瓶颈:
bash复制iotop -oP
优化方案:
bash复制echo deadline > /sys/block/sda/queue/scheduler
echo 256 > /sys/block/sda/queue/nr_requests
5.2 CPU调度策略
查看CPU亲和性:
bash复制taskset -pc $$
绑定CPU核心:
bash复制taskset -c 0,1 ./cpu_intensive_program
对于关键服务,建议使用cgroups限制资源:
bash复制cgcreate -g cpu:/important_service
echo 100000 > /sys/fs/cgroup/cpu/important_service/cpu.cfs_quota_us
6. 安全加固要点
6.1 基础安全配置
禁用root SSH登录:
bash复制sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
配置防火墙规则:
bash复制ufw default deny incoming
ufw allow 22/tcp
ufw enable
6.2 入侵检测
检查异常登录:
bash复制lastb | awk '{print $3}' | sort | uniq -c | sort -nr
监控敏感文件变更:
bash复制aide --init
aide --check
7. 实用工具推荐
7.1 开发辅助工具
实时文件监控:
bash复制entr -r make test
JSON处理:
bash复制jq '.users[] | select(.age > 30) | .name' data.json
7.2 系统监控方案
全功能监控:
bash复制htop
glances
网络质量检测:
bash复制mtr -w 8.8.8.8
8. 环境配置规范
8.1 标准化bashrc配置
bash复制# 历史记录增强
HISTTIMEFORMAT="%F %T "
HISTSIZE=10000
HISTFILESIZE=20000
shopt -s histappend
# 安全提示
PS1='\[\e[31m\]\u@\h\[\e[0m\]:\[\e[34m\]\w\[\e[0m\]\$ '
8.2 终端复用方案
tmux基础配置:
bash复制bind-key -n C-a send-prefix
set -g mouse on
set -g history-limit 10000
会话恢复脚本:
bash复制#!/bin/bash
tmux new-session -d -s dev
tmux send-keys -t dev.0 "cd ~/projects" C-m
tmux attach -t dev
9. 容器化实践
9.1 轻量级容器方案
使用podman替代docker:
bash复制podman run -it --rm alpine sh
构建优化镜像:
dockerfile复制FROM alpine:latest
RUN apk add --no-cache python3 && \
pip install --no-cache-dir -r requirements.txt
9.2 容器网络调试
查看容器网络:
bash复制podman network inspect podman
端口映射检查:
bash复制ss -tulnp | grep 'podman'
10. 自动化运维体系
10.1 配置管理实践
基础Ansible Playbook:
yaml复制- hosts: webservers
tasks:
- name: Ensure nginx is installed
apt:
name: nginx
state: present
- name: Copy config file
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
10.2 日志集中管理
rsyslog配置示例:
bash复制module(load="imfile" PollingInterval="10")
input(type="imfile" File="/var/log/app.log" Tag="app" Severity="info")
*.* @logserver:514
11. 内核参数调优
11.1 TCP协议栈优化
bash复制echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
echo "net.core.somaxconn = 4096" >> /etc/sysctl.conf
sysctl -p
11.2 内存管理参数
bash复制echo "vm.swappiness = 10" >> /etc/sysctl.conf
echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
12. 备份与恢复方案
12.1 增量备份策略
bash复制rsync -avz --delete --link-dest=/backup/prev /data/ /backup/current
12.2 数据库备份方案
bash复制mysqldump --single-transaction -u root -p dbname | gzip > backup.sql.gz
13. 性能基准测试
13.1 磁盘IO测试
bash复制fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --group_reporting
13.2 网络吞吐量测试
bash复制iperf3 -c server_ip -t 30 -P 4
14. 疑难问题排查案例
14.1 僵尸进程处理
bash复制ps -A -ostat,ppid | grep -e '[zZ]' | awk '{print $2}' | xargs kill -9
14.2 文件描述符泄漏
bash复制lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | head
15. 终端生产力提升
15.1 快捷键映射
bash复制bind '"\C-f":"fg\n"'
bind '"\C-z":"\C-u suspend\n"'
15.2 命令行历史搜索
bash复制bind '"\C-r": reverse-search-history'
16. 软件编译优化
16.1 并行编译配置
bash复制make -j$(nproc)
16.2 编译缓存设置
bash复制ccache -M 10G
export CC="ccache gcc"
17. 系统启动分析
17.1 启动时间优化
bash复制systemd-analyze blame
systemd-analyze critical-chain
17.2 服务依赖检查
bash复制systemctl list-dependencies nginx.service
18. 用户权限管理
18.1 sudo权限细化
bash复制%developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
18.2 ACL高级权限
bash复制setfacl -Rm u:user1:rwx,d:u:user1:rwx /shared
19. 时间同步方案
19.1 Chrony配置
bash复制server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
makestep 1.0 3
19.2 时区统一设置
bash复制timedatectl set-timezone Asia/Shanghai
20. 内核模块管理
20.1 模块黑名单
bash复制echo "blacklist usb-storage" >> /etc/modprobe.d/blacklist.conf
20.2 模块参数调整
bash复制echo "options ixgbe max_vfs=8" > /etc/modprobe.d/ixgbe.conf
21. 系统日志分析
21.1 日志模式识别
bash复制journalctl -u nginx --since "1 hour ago" | grep -E "50[0-9]"
21.2 结构化日志处理
bash复制journalctl -o json | jq 'select(.PRIORITY >= 4)'
22. 应急响应流程
22.1 入侵应急检查
bash复制rpm -Va | grep '^..5'
22.2 系统快照创建
bash复制lvcreate -s -n snap_root -L 5G /dev/vg00/lv_root
23. 虚拟化性能优化
23.1 KVM参数调整
bash复制echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
23.2 虚拟机CPU绑定
bash复制virsh vcpupin domain 0 2-4
24. 存储方案选型
24.1 LVM精简配置
bash复制lvcreate -V 100G -T vg00/thinpool -n thinvol
24.2 文件系统选择
bash复制mkfs.xfs -f -i size=512 /dev/sdb1
25. 网络命名空间实战
25.1 创建隔离网络
bash复制ip netns add net1
ip link add veth0 type veth peer name veth1
ip link set veth1 netns net1
25.2 跨命名空间通信
bash复制ip netns exec net1 ping 192.168.1.1
26. 系统调用追踪
26.1 进程系统调用监控
bash复制strace -ff -o trace.out ./program
26.2 性能热点分析
bash复制perf top -p $(pgrep nginx)
27. 内核调试技巧
27.1 内核Oops分析
bash复制dmesg | grep -i oops
27.2 动态调试输出
bash复制echo 'file ext4_* +p' > /sys/kernel/debug/dynamic_debug/control
28. 电源管理优化
28.1 CPU频率调节
bash复制cpupower frequency-set -g performance
28.2 磁盘休眠设置
bash复制hdparm -S 120 /dev/sda
29. 安全审计方案
29.1 系统调用审计
bash复制auditctl -a always,exit -S open -F success=1
29.2 文件完整性检查
bash复制aide --check
30. 自动化部署实践
30.1 无人值守安装
bash复制ksvalidator ks.cfg
30.2 配置漂移检测
bash复制ansible-playbook --check --diff site.yml
31. 高可用方案实现
31.1 Keepalived配置
bash复制vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24
}
}
31.2 服务健康检查
bash复制curl -sSf http://localhost/health > /dev/null || systemctl restart nginx
32. 容器编排进阶
32.1 Podman Compose示例
yaml复制services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
32.2 容器资源限制
bash复制podman run -it --memory=512m --cpus=1.5 alpine
33. 性能监控体系
33.1 指标采集方案
bash复制node_exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector
33.2 告警规则配置
yaml复制groups:
- name: instance
rules:
- alert: HighLoad
expr: node_load15 > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High load on {{ $labels.instance }}"
34. 证书管理实践
34.1 自签名证书生成
bash复制openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
34.2 证书链验证
bash复制openssl verify -CAfile ca.pem cert.pem
35. 内核升级指南
35.1 安全补丁检查
bash复制yum updateinfo list cves
35.2 热补丁应用
bash复制kpatch load livepatch-3.10.0-1160.11.1.el7.x86_64.ko
36. 系统裁剪优化
36.1 最小化安装
bash复制yum --installroot=/mnt/minimal --releasever=8 install @core
36.2 服务精简方案
bash复制systemctl list-unit-files --type=service | grep enabled
37. 远程管理方案
37.1 SSH隧道建立
bash复制ssh -L 3306:localhost:3306 user@jumpserver
37.2 多主机批量操作
bash复制clush -w node[1-10] "systemctl restart nginx"
38. 数据加密方案
38.1 LUKS磁盘加密
bash复制cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 secure_disk
38.2 GPG文件加密
bash复制gpg --symmetric --cipher-algo AES256 data.txt
39. 内核参数监控
39.1 实时参数查看
bash复制watch -n 1 'sysctl -a | grep dirty'
39.2 参数动态调整
bash复制echo 1 > /proc/sys/vm/drop_caches
40. 系统救援方案
40.1 急救模式进入
bash复制systemctl rescue
40.2 文件系统修复
bash复制xfs_repair /dev/sda1
41. 软件包管理技巧
41.1 仓库优先级设置
bash复制yum-config-manager --setopt=base.priority=90 --save
41.2 本地仓库创建
bash复制createrepo /path/to/rpms
42. 系统时间调试
42.1 硬件时钟同步
bash复制hwclock --systohc --utc
42.2 时间跳变检测
bash复制chronyc tracking | grep 'Last offset'
43. 内核调试工具
43.1 Ftrace使用示例
bash复制echo function_graph > /sys/kernel/debug/tracing/current_tracer
echo 1 > /sys/kernel/debug/tracing/tracing_on
43.2 Kprobe事件监控
bash复制echo 'p:myprobe do_sys_open pathname=+0(%si):string' > /sys/kernel/debug/tracing/kprobe_events
44. 系统调用过滤
44.1 Seccomp规则配置
json复制{
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [
{
"names": ["clone"],
"action": "SCMP_ACT_ERRNO"
}
]
}
44.2 沙箱环境创建
bash复制bwrap --ro-bind /usr /usr --dev /dev --proc /proc bash
45. 性能分析进阶
45.1 火焰图生成
bash复制perf record -F 99 -g -- sleep 60
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg
45.2 内存泄漏检测
bash复制valgrind --tool=memcheck --leak-check=full ./program
46. 系统调用劫持
46.1 LD_PRELOAD示例
c复制#define _GNU_SOURCE
#include <dlfcn.h>
int open(const char *pathname, int flags, ...) {
typeof(open) *real_open = dlsym(RTLD_NEXT, "open");
printf("Opening: %s\n", pathname);
return real_open(pathname, flags);
}
46.2 动态库注入
bash复制LD_PRELOAD=./mylib.so ./program
47. 内核模块开发
47.1 简单模块示例
c复制#include <linux/module.h>
MODULE_LICENSE("GPL");
static int __init hello_init(void) {
printk(KERN_INFO "Hello kernel!\n");
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye kernel!\n");
}
module_init(hello_init);
module_exit(hello_exit);
47.2 模块签名验证
bash复制openssl req -new -x509 -newkey rsa:2048 -keyout key.priv -outform DER -out key.x509 -nodes -days 36500 -subj "/CN=My Signing Key/"
48. 系统调用基准测试
48.1 上下文切换开销
bash复制perf bench sched pipe
48.2 内存访问延迟
bash复制lmbench bw_mem -P 1 512M rd
49. 内核参数动态调整
49.1 网络栈优化
bash复制echo 65535 > /proc/sys/net/core/somaxconn
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
49.2 内存回收策略
bash复制echo 50 > /proc/sys/vm/swappiness
echo 500 > /proc/sys/vm/dirty_expire_centisecs
50. 系统安全加固
50.1 内核保护机制
bash复制echo 1 > /proc/sys/kernel/kptr_restrict
echo 2 > /proc/sys/kernel/perf_event_paranoid
50.2 用户空间隔离
bash复制sysctl -w kernel.unprivileged_userns_clone=0
