加载笔记内容...
加载笔记内容...
深入解析 Linux 运维核心技能:从文件操作到系统级工具实战
ll
的基础认知ls -l(ll
别名)是文件管理的基础命令,但其隐藏功能值得深挖:
1# 按大小降序并显示隐藏文件
2ls -lhSa --time-style=long-iso
--time=ctime
显示属性变更时间,--time=atime
显示访问时间ls -l
显示的是逻辑大小,实际磁盘占用需结合du -sh *
争议点:ls -l
默认不显示隐藏文件的特性,在安全审计场景可能造成隐患,建议配合-a
参数使用
1# 精确匹配包含空格的 IPv4 地址(支持多种实现方式)
2ifconfig | grep -E 'inet\s+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
grep -E
使用扩展正则,grep -P
支持Perl正则(需确认系统支持)fgrep
固定字符串匹配速度提升30%+处理流程:
FS
(默认空格/TAB)划分字段高级示例(统计部门薪资):
1BEGIN { FS=" "; OFS="\t"; print "Department", "Total Salary" }
2$3 == "sales" { sales += $4 }
3$3 == "account" { account += $4 }
4END { print "Sales", sales; print "Account", account }
内置变量对照表:
变量 | 作用 | 典型场景 |
---|---|---|
NR | 当前记录数(行号) | 行号过滤 NR > 5 && NR < 10 |
NF | 当前记录字段数 | 数据完整性校验 NF != 4 |
RS | 输入记录分隔符(默认\n) | 处理CSV RS="," |
ORS | 输出记录分隔符(默认\n) | 生成CSV ORS="\r\n" |
性能瓶颈:在大文件处理中,避免在循环体内频繁调用system()
执行外部命令
1# 使用 ss 替代 netstat(推荐方案)
2ss -ltnp | grep ':80\b'
/proc/net/tcp
解析,ss 直接访问内核 socket 表nsenter
进入容器命名空间深度删除流程:
1# 安全删除用户的全流程
2sudo userdel --remove user1
3sudo find / -uid 原UID -exec chown newuser {} \; 2>/dev/null
auditd
监控/etc/passwd
变更chronyd
vs ntpd
的微秒级精度差异容器时间问题:
1# Docker 容器时间同步方案
2docker run --rm --privileged alpine hwclock --hctosys
实现原理对比:
1# which 的典型实现(C 语言版本)
2char *path = getenv("PATH");
3# command -v 的 bash 内建实现
4builtin_command_v() {
5 // 检查哈希表、别名、函数等
6}
可移植性测试:
Shell | command -v | which |
---|---|---|
bash | ✓ | 需安装 |
dash | ✓ | ✗ |
zsh | ✓ | ✓ |
BusyBox ash | ✓ | 内置 |
HTTP 代理隧道:
1curl -x http://proxy:8080 -v https://api.example.com
SOCKS5 协议解析:
调试技巧:
1# 查看原始 HTTP 流量
2curl --proxy http://localhost:8888 --trace-ascii - https://example.com
eBPF 革命:利用bpftrace
实现无侵入式系统观测
1bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(args->filename)) }'
现代替代工具:
exa
:带图标和元数据的文件列表jq
:JSON 处理神器ripgrep
:超高速代码搜索安全审计清单:
/etc/passwd
中UID为0的账户lynis
进行自动化安全扫描sudo
会话超时:Defaults timestamp_timeout=5
深度技术图谱:
graph LR A[Linux核心命令] --> B[文件系统] A --> C[网络管理] A --> D[系统监控] B --> E[元数据解析] B --> F[权限体系] C --> G[协议分析] C --> H[连接追踪] D --> I[性能指标] D --> J[资源审计]
扩展阅读:
(注:本文所有命令测试环境为 Ubuntu 22.04 LTS,内核版本5.15.0-76-generic)