1. Linux数据流重定向的本质理解
在Linux系统中,数据流重定向(I/O Redirection)是Shell环境下最基础也最强大的功能之一。它本质上是对Unix哲学"一切皆文件"理念的完美诠释——所有输入输出操作都被抽象为对文件描述符(File Descriptor)的读写。当我们谈论重定向时,实际上是在操作三个标准数据流:
- 标准输入(stdin,文件描述符0):默认来自键盘的输入
- 标准输出(stdout,文件描述符1):默认输出到终端屏幕
- 标准错误(stderr,文件描述符2):默认输出错误信息到终端屏幕
这种设计使得Linux命令行工具能够像乐高积木一样通过管道和重定向自由组合。举个例子,当你在终端输入ls -l > filelist.txt时,Shell会先解析这个命令,然后:
- 创建或清空filelist.txt(O_WRONLY | O_CREAT | O_TRUNC标志)
- 将文件描述符1(stdout)指向该文件
- fork子进程执行ls -l
- ls的输出被写入filelist.txt而非终端
- 恢复原文件描述符状态
关键细节:重定向操作实际上是由Shell在fork/exec之前完成的,程序本身并不知道自己的输出被重定向了。这就是为什么即使是最简单的echo命令也能无缝支持重定向。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础重定向操作实战解析
2.1 输出重定向的四种基本形式
bash复制command > file # 覆盖写入(等效于1>)
command >> file # 追加写入(等效于1>>)
command 2> file # 错误流覆盖写入
command 2>> file # 错误流追加写入
实际案例:编译一个C程序时,我们通常需要分离正常输出和错误信息:
bash复制gcc hello.c -o hello > compile.log 2> errors.log
2.2 输入重定向的进阶用法
除了常见的<操作符,还有更强大的"here document":
bash复制wc -l << EOF
This is line 1
This is line 2
EOF
# 输出结果为2
在自动化脚本中,这种写法可以避免创建临时文件:
bash复制mysql -u root -p <<SQL
USE database;
SELECT * FROM table;
SQL
2.3 多重重定向组合技巧
合并stdout和stderr到同一文件有两种方式:
bash复制command &> file # 更简洁的Bash语法
command > file 2>&1 # 传统写法(注意顺序很重要!)
为什么顺序重要?因为Shell是从左到右解析重定向的。错误的写法:
bash复制command 2>&1 > file # 错误!stderr仍会打印到终端
3. 管道与重定向的协同工作
管道(|)本质上是将前一个命令的stdout连接到后一个命令的stdin。但实际使用时有几个关键点需要注意:
3.1 管道只传递stdout不传递stderr
bash复制command1 | command2 # 只有command1的stdout会传给command2
如果需要传递stderr,需要先重定向:
bash复制command1 2>&1 | command2
3.2 管道中的命令在子Shell中执行
这意味着在管道中设置的变量不会影响当前Shell环境:
bash复制count=0
ls | while read file; do ((count++)); done
echo $count # 输出仍然是0!
解决方法是用进程替换(Process Substitution):
bash复制while read file; do ((count++)); done < <(ls)
3.3 管道与重定向的性能差异
对于大文件处理,重定向通常比管道更高效:
bash复制# 较慢的方式(创建两个cat进程)
cat file1 file2 | grep "pattern"
# 更高效的方式
grep "pattern" file1 file2
4. 高级重定向技术深度剖析
4.1 文件描述符的复制与移动
Linux允许我们自由操作文件描述符:
bash复制exec 3>&1 # 将fd 3作为fd 1的副本
exec 1> output.log # 重定向stdout
echo "到文件" # 写入output.log
echo "到终端" >&3 # 通过fd 3输出到原终端
exec 1>&3 3>&- # 恢复stdout并关闭fd 3
这种技术在日志脚本中特别有用,可以同时输出到文件和终端。
4.2 网络重定向的魔法
通过/dev/tcp和/dev/udp(Bash内置):
bash复制# 发送HTTP请求
exec 3<>/dev/tcp/www.example.com/80
echo -e "GET / HTTP/1.1\nHost: www.example.com\n\n" >&3
cat <&3
4.3 进程替换(Process Substitution)
将命令输出作为文件使用:
bash复制diff <(ls dir1) <(ls dir2) # 比较两个目录的文件列表
5. 生产环境中的经典应用场景
5.1 日志处理四件套
bash复制# 1. 日志轮转
mv app.log app.log.$(date +%Y%m%d)
kill -USR1 $(pidof app) # 通知应用重新打开日志文件
# 2. 实时日志监控
tail -f /var/log/nginx/access.log | grep "404" > 404s.log &
# 3. 日志分析
awk '{print $1}' access.log | sort | uniq -c | sort -nr > visitors.txt
# 4. 错误报警
some_command 2>&1 | tee /tmp/output.log | grep -q "ERROR" && send_alert
5.2 安全审计技巧
记录所有root执行的命令:
bash复制# 在/etc/bashrc或/etc/profile中添加
exec > >(tee -a /var/log/root_commands.log)
exec 2>&1
5.3 数据备份与同步
使用重定向验证备份完整性:
bash复制dd if=/dev/sda1 | gzip > backup.img.gz
gzip -dc backup.img.gz | dd of=/dev/sda1 bs=4M conv=noerror,sync
6. 性能优化与避坑指南
6.1 缓冲区问题
默认情况下,重定向到文件是全缓冲的,而到终端是行缓冲的。这可能导致:
bash复制./long_running_script > logfile & # 可能很久才看到输出
tail -f logfile # 看起来没反应
解决方案:
bash复制stdbuf -oL ./long_running_script > logfile & # 改为行缓冲
6.2 文件描述符泄漏
在长时间运行的脚本中,未关闭的文件描述符可能导致资源耗尽:
bash复制exec 3> lockfile
# ... 忘记执行 exec 3>&- ...
检测方法:
bash复制ls -l /proc/$$/fd # 查看当前Shell打开的文件描述符
6.3 原子写入技巧
多进程同时追加到同一文件可能导致内容交错:
bash复制# 不安全的方式
echo "log entry" >> shared.log
# 安全的方式(Bash 4+)
flock -x 200
echo "log entry" >&200
) 200>> shared.log
7. 与系统编程的深度结合
理解重定向的底层实现,有助于编写更健壮的系统工具:
7.1 dup2系统调用
这是重定向的核心系统调用,C语言示例:
c复制int fd = open("output.txt", O_WRONLY|O_CREAT, 0644);
dup2(fd, STDOUT_FILENO); // 现在printf会写入文件
close(fd);
7.2 守护进程的标准流处理
规范的守护进程应该:
c复制close(STDIN_FILENO);
open("/dev/null", O_RDONLY); // stdin
dup2(STDOUT_FILENO, STDERR_FILENO); // stderr重定向到stdout
7.3 Shell内置命令的特殊性
像cd这样的内置命令之所以不能通过管道使用,正是因为它们需要改变当前Shell的环境:
bash复制echo "/tmp" | cd # 无效!因为cd在子Shell中执行
cd "$(echo "/tmp")" # 正确写法
8. 现代Shell的扩展功能
8.1 Bash的多重重定向
bash复制# 同时重定向stdout和stderr到不同文件
command >stdout.log 2>stderr.log
# 重定向到多个目标
command | tee file1 file2 >/dev/null
8.2 Zsh的多元输出
zsh复制# 同时输出到文件和终端
command >file1 >&1
8.3 重定向到进程
bash复制# 将输出作为另一个命令的参数
grep "pattern" <(curl -s http://example.com)
9. 容器环境下的特殊考量
在Docker/Kubernetes环境中,正确处理数据流尤为重要:
9.1 容器日志最佳实践
bash复制# 让应用直接输出到stdout/stderr
docker run -d --name myapp myimage \
sh -c "nginx -g 'daemon off;' 2>&1 | tee /var/log/nginx/error.log"
9.2 避免日志文件导致的容器膨胀
bash复制# 错误做法(日志文件会留在容器层)
docker run -d myimage /path/to/app > /var/log/app.log
# 正确做法(输出到stdout)
docker run -d myimage /path/to/app
9.3 Kubernetes中的多容器日志
yaml复制# Pod配置示例
containers:
- name: main
image: myapp
- name: log-sidecar
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/app.log']
volumeMounts:
- name: logs
mountPath: /var/log
10. 调试与问题排查技巧
10.1 重定向调试技巧
bash复制# 查看实际发生的重定向
set -x
command > file 2>&1
set +x
10.2 文件描述符状态检查
bash复制# 查看进程打开的文件描述符
ls -l /proc/$(pidof your_process)/fd
10.3 模拟终端环境
当重定向导致程序行为异常时(如一些程序检查isatty()):
bash复制script -q -c "your_command" /dev/null > output.log
11. 性能基准测试
通过重定向可以方便地进行性能测试:
11.1 测量命令执行时间
bash复制{ time sleep 1; } 2> time.log
11.2 比较不同命令的效率
bash复制# 测试grep不同选项的速度
echo "Testing -F:" > results
{ time grep -F pattern bigfile; } 2>> results
echo "Testing -P:" >> results
{ time grep -P pattern bigfile; } 2>> results
11.3 磁盘I/O性能测试
bash复制# 测试写入速度
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct 2> dd.log
12. 安全防护相关实践
12.1 敏感信息过滤
bash复制# 在记录日志时过滤密码
command_with_password | sed 's/password=.*/password=******/' >> debug.log
12.2 不可变日志
bash复制# 使用chattr防止日志被篡改
touch audit.log
chattr +a audit.log # 只能追加不能修改
12.3 安全擦除技巧
bash复制# 安全删除敏感文件
shred -u -z -n 5 sensitive_data.txt
13. 跨平台兼容性处理
不同Shell和Unix-like系统的重定向行为可能有差异:
13.1 Solaris与Linux的区别
bash复制# Linux下可以,但Solaris可能需要
command > file 2>&1
# 而不是
command 2>&1 > file
13.2 /dev/std{in,out,err}的可用性
bash复制# 更可移植的写法
command > /proc/self/fd/1 # 而非/dev/stdout
13.3 行尾符处理
bash复制# 统一换行符
dos2unix < input.txt > output.txt
14. 自动化脚本中的最佳实践
14.1 错误处理模式
bash复制# 立即退出模式
set -euo pipefail
command1 | command2 > output.log
14.2 日志分级输出
bash复制exec 3>/dev/null # 默认静默
[ "$DEBUG" ] && exec 3>&1 # 调试模式时输出到终端
echo "常规信息" >&1
echo "调试信息" >&3
14.3 临时文件安全创建
bash复制# 安全创建临时文件
tempfile=$(mktemp /tmp/script.XXXXXX)
exec 4>"$tempfile"
rm "$tempfile" # 立即删除,只保留文件描述符
15. 与编程语言的交互
15.1 Python中的重定向
python复制import sys
sys.stdout = open('output.log', 'w')
print("现在输出到文件")
15.2 Perl的特殊变量
perl复制open(STDOUT, '>', 'output.log') or die $!;
print "重定向成功\n";
15.3 Go语言的灵活处理
go复制file, _ := os.Create("output.log")
os.Stdout = file
fmt.Println("Go语言重定向示例")
16. 硬件设备特殊重定向
16.1 直接操作设备文件
bash复制# 将命令输出直接发送到打印机
echo "Test Page" > /dev/lp0
16.2 声卡操作
bash复制# 录制音频
arecord -d 10 -f cd > recording.wav
16.3 帧缓冲设备
bash复制# 将图片直接显示到控制台
cat image.raw > /dev/fb0
17. 系统初始化阶段的重定向
17.1 早期启动日志
bash复制# 在init脚本中
exec >/var/log/boot.log 2>&1
17.2 串口控制台重定向
bash复制# 将控制台输出重定向到串口
console=ttyS0,115200n8
17.3 系统服务日志规范
bash复制# systemd服务的标准做法
[Service]
StandardOutput=journal
StandardError=inherit
18. 信号处理与重定向
18.1 处理SIGHUP
bash复制# 防止终端断开导致输出中断
nohup command > output.log 2>&1 &
18.2 日志轮转信号
bash复制# 处理USR1信号重新打开日志文件
trap 'exec >>${LOGFILE} 2>&1' USR1
18.3 超时控制技巧
bash复制# 带超时的命令执行
timeout 10 command > output.log 2>&1
19. 图形环境下的特殊处理
19.1 重定向GUI应用输出
bash复制# 重定向GUI应用的stderr
gedit 2> gedit_errors.log
19.2 终端模拟器的特性
bash复制# 某些终端支持ANSI转义序列记录
script -t 2> timing.log -a output.session
19.3 X11应用的远程输出
bash复制# 将X11应用输出重定向到远程
ssh -X user@host xterm > local.log 2>&1
20. 资源监控与限制
20.1 限制命令的资源使用
bash复制# 限制CPU和内存
ulimit -Sv 500000 # 500MB内存限制
command > output.log
20.2 监控I/O使用量
bash复制# 使用iotop记录I/O
iotop -b -n 1 -o > iostat.log
20.3 网络流量记录
bash复制# 重定向tcpdump输出
tcpdump -i eth0 -w - > traffic.pcap
21. 版本控制系统集成
21.1 差异比较技巧
bash复制# 比较两个命令的输出
diff <(git show HEAD~10:file.txt) <(git show HEAD:file.txt)
21.2 补丁生成
bash复制# 生成补丁文件
git diff > changes.patch
21.3 自动化提交
bash复制# 自动生成提交信息
git commit -F <(echo "Auto update at $(date)")
22. 多媒体处理中的应用
22.1 视频转码管道
bash复制ffmpeg -i input.mp4 -f mp4 - | ssh user@host "cat > output.mp4"
22.2 音频流处理
bash复制arecord -f cd - | lame -b 192 - > output.mp3
22.3 图像批量处理
bash复制find . -name '*.jpg' | parallel 'convert {} -resize 800x600 {.}_thumb.jpg'
23. 数据库操作流处理
23.1 批量SQL执行
bash复制mysql -u user -p dbname <<< "SELECT * FROM table" > dump.csv
23.2 数据备份流
bash复制mysqldump dbname | gzip > backup.sql.gz
23.3 查询结果格式化
bash复制mysql -B -e "SELECT * FROM table" | sed 's/\t/,/g' > data.csv
24. 网络诊断与流量分析
24.1 实时流量监控
bash复制tcpdump -i eth0 -l -n | grep "pattern" > suspicious.log
24.2 HTTP请求分析
bash复制nc -l 8080 > request.log
24.3 数据包重组
bash复制tcpflow -r capture.pcap -o output_dir
25. 系统管理自动化
25.1 批量主机操作
bash复制while read host; do
ssh "$host" "command" >> results.log
done < hosts.list
25.2 配置管理
bash复制find /etc -type f -print0 | xargs -0 grep -l "oldvalue" > to_update.txt
25.3 监控报警
bash复制df -h | awk '$5 > 90 {print $6}' | mail -s "Disk Alert" admin@example.com
26. 安全审计与入侵检测
26.1 登录尝试监控
bash复制tail -f /var/log/auth.log | grep "Failed password" > failed.log
26.2 文件完整性检查
bash复制find /etc -type f -exec md5sum {} + > baseline.md5
26.3 可疑进程检测
bash复制ps aux | awk '$8 == "Z"' > zombies.log
27. 科学计算与数据处理
27.1 数值计算流
bash复制bc -l <<< "scale=10; 4*a(1)" > pi_value.txt
27.2 数据格式转换
bash复制csvtool transpose input.csv > output.csv
27.3 统计分析
bash复制awk '{sum+=$1; count++} END{print sum/count}' data.txt > average.txt
28. 文档处理与发布
28.1 Markdown转换
bash复制pandoc -f markdown -t html < input.md > output.html
28.2 批量文本处理
bash复制find . -name '*.txt' -exec sed -i 's/old/new/g' {} +
28.3 PDF生成
bash复制groff -Tps -man some.man | ps2pdf - > some.pdf
29. 系统备份与恢复
29.1 增量备份流
bash复制tar -cvzf - --listed-incremental=snapshot.file /data | ssh backup "cat > backup.tar.gz"
29.2 磁盘克隆
bash复制dd if=/dev/sda bs=4M | gzip | ssh user@backup "gunzip | dd of=/backup/sda.img"
29.3 差异备份
bash复制rsync -avz --link-dest=/previous_backup /source/ /new_backup/ > backup.log
30. 容器与虚拟化集成
30.1 容器日志收集
bash复制docker logs container 2>&1 | grep "ERROR" > errors.log
30.2 虚拟机快照管理
bash复制virsh dumpxml vmname > vmname.xml
30.3 跨主机数据流
bash复制docker save image | ssh user@host "docker load"
31. 性能调优实战
31.1 I/O调度观察
bash复制iostat -dx 1 > disk_stats.log
31.2 内存使用分析
bash复制vmstat 1 10 > memory_usage.log
31.3 CPU热点定位
bash复制perf record -g -- command > output.log
32. 网络服务管理
32.1 服务状态监控
bash复制systemctl list-units --type=service > services.log
32.2 端口使用统计
bash复制ss -tulnp > ports.log
32.3 连接数分析
bash复制netstat -an | awk '/^tcp/ {print $6}' | sort | uniq -c > conn_stats.log
33. 内核与驱动调试
33.1 内核日志捕获
bash复制dmesg -w > dmesg.log
33.2 模块加载跟踪
bash复制strace -f -o modprobe.log modprobe some_module
33.3 中断监控
bash复制watch -n1 cat /proc/interrupts > interrupts.log
34. 安全加密操作
34.1 加密管道
bash复制tar czf - sensitive_data | gpg -c > backup.tar.gz.gpg
34.2 哈希验证
bash复制sha256sum file.iso > checksum.txt
34.3 随机数生成
bash复制dd if=/dev/urandom bs=1 count=32 | base64 > secret.key
35. 跨平台数据交换
35.1 Windows兼容处理
bash复制unix2dos < unixfile.txt > windowsfile.txt
35.2 字符编码转换
bash复制iconv -f UTF-8 -t GBK input.txt > output.txt
35.3 二进制文件处理
bash复制xxd -p binary.bin > hexdump.txt
36. 终端多路复用技巧
36.1 tmux日志记录
bash复制tmux new-session -d -s mysession 'command | tee session.log'
36.2 screen会话管理
bash复制screen -L -S myscreen command
36.3 分离式会话保持
bash复制nohup command > output.log 2>&1 &
37. 系统诊断工具箱
37.1 综合系统信息
bash复制(echo "=== DATE ==="; date; echo "=== UNAME ==="; uname -a;
echo "=== DF ==="; df -h; echo "=== FREE ==="; free -m) > system_info.log
37.2 硬件清单
bash复制lshw -html > hardware.html
37.3 环境快照
bash复制(set; declare -f; alias) > env_snapshot.txt
38. 时间敏感任务处理
38.1 定时任务输出
bash复制* * * * * command > /var/log/cron.log 2>&1
38.2 执行时间限制
bash复制timeout 10 command > output.log
38.3 延时处理
bash复制(sleep 300; command) > delayed.log &
39. 交互式脚本增强
39.1 颜色输出控制
bash复制echo -e "\033[31mError\033[0m" >&2
39.2 进度条实现
bash复制for i in {1..100}; do
printf "[%-100s] %d%%\r" "$(printf '#%.0s' $(seq 1 $i))" "$i"
sleep 0.1
done > progress.log
39.3 用户输入记录
bash复制read -p "Enter value: " val 2>&1 | tee -a interaction.log
40. 系统启动流程定制
40.1 早期启动重定向
bash复制# 在grub配置中添加
console=tty0 console=ttyS0,115200n8
40.2 initramfs调试
bash复制dracut --add-drivers "module" -f /boot/initramfs-$(uname -r).img
40.3 服务启动顺序
bash复制systemd-analyze plot > bootup.svg
41. 内核参数调优
41.1 实时监控调整
bash复制watch -n1 "sysctl -a | grep tcp > tcp_params.log"
41.2 持久化配置
bash复制echo "vm.swappiness = 10" >> /etc/sysctl.conf
41.3 参数影响测试
bash复制sysctl -w net.ipv4.tcp_fin_timeout=30 > timeout_test.log
42. 文件系统高级操作
42.1 inode使用分析
bash复制df -i > inode_usage.log
42.2 文件系统修复
bash复制fsck -y /dev/sda1 > fsck.log 2>&1
42.3 挂载选项测试
bash复制mount -o remount,noatime / > mount.log 2>&1
43. 电源管理相关
43.1 休眠状态监控
bash复制cat /sys/power/state > power_states.log
43.2 唤醒事件记录
bash复制dmesg | grep -i wake > wake_events.log
43.3 功耗测量
bash复制turbostat --quiet --show PkgWatt > power_usage.log
44. 硬件检测与诊断
44.1 CPU信息收集
bash复制lscpu > cpu_info.log
44.2 内存测试
bash复制memtester 1G > memtest.log
44.3 磁盘健康检查
bash复制smartctl -a /dev/sda > disk_health.log
45. 系统限制与配额
45.1 用户资源限制
bash复制ulimit -a > user_limits.log
45.2 磁盘配额报告
bash复制repquota -a > quota_report.log
45.3 进程数监控
bash复制ps -eLf | wc -l > process_count.log
46. 语言环境处理
46.1 字符集转换
bash复制iconv -f ISO-8859-1 -t UTF-8 old.txt > new.txt
46.2 时区设置
bash复制timedatectl > time_info.log
46.3 本地化配置
bash复制locale > locale_settings.log
47. 软件包管理
47.1 批量安装日志
bash复制xargs -a packages.list apt-get install -y > install.log
47.2 依赖关系分析
bash复制apt-cache depends package > deps.log
47.3 仓库更新监控
bash复制apt-get update > update.log 2>&1
48. 用户与权限管理
48.1 用户活动审计
bash复制last > user_sessions.log
48.2 权限变更记录
bash复制find / -type f -perm /4000 > suid_files.log
48.3 密码策略检查
bash复制grep "^PASS" /etc/login.defs > pass_policy.log
49. 网络配置调优
49.1 接口统计
bash复制ip -s link > interface_stats.log
49.2 路由表分析
bash复制ip route > routing_table.log
49.3 防火墙规则
bash复制iptables-save > firewall_rules.log
50. 系统日志架构
50.1 rsyslog配置
bash复制cat /etc/rsyslog.conf > rsyslog_config.log
50.2 日志轮转策略
bash复制ls -l /var/log > log_files.list
50.3 集中式日志收集
bash复制logger -t myscript "Message" 2>&1 | ssh loghost "cat >> /var/log/remote.log"
51. 崩溃分析与核心转储
51.1 核心转储配置
bash复制echo "/var/coredumps/core.%e.%p" > /proc/sys/kernel/core_pattern
51.2 崩溃回溯
bash复制gdb -batch -ex "bt full" /path/to/binary core > backtrace.log
51.3 内核Oops分析
bash复制dmesg | grep -i oops > kernel_oops.log
52. 虚拟文件系统操作
52.1 proc文件系统
bash复制cat /proc/meminfo > memory_details.log
52.2 sysfs交互
bash复制echo 1 > /sys/class/leds/input2::capslock/brightness
52.3 debugfs使用
bash复制debugfs -R "ls -l" /dev/sda1 > disk_contents.list
53. 性能剖析工具链
53.1 strace系统调用跟踪
bash复制strace -o trace.log -ttt command
53.2 ltrace库调用跟踪
bash复制ltrace -o libcalls.log command
53.3 perf综合剖析
bash复制perf record -g -- command > /dev/null
54. 安全增强工具
54.1 SELinux审计
bash复制ausearch -m avc > selinux_denials.log
54.2 文件属性检查
bash复制lsattr -R /etc > file_attributes.log
54.3 二进制保护
bash复制checksec --file=/bin/ls > security_check.log
55. 系统调用过滤
55.1 seccomp策略
bash复制strace -e trace=open command > opens.log
55.2 能力集管理
bash复制getpcaps 1234 > process_caps.log
55.3 命名空间隔离
bash复制unshare --map-root-user --user /bin/bash
56. 热补丁与动态更新
56.1 kpatch应用
bash复制kpatch load patch.ko > kpatch.log 2>&1
56.2 内核模块调试
bash复制dmesg -C; modprobe module; dmesg > module_load.log
56.3 函数追踪
bash复制echo function > /sys/kernel/debug/tracing/current_tracer
57. 嵌入式系统特殊考量
57.1 交叉编译输出
bash复制make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- > build.log
57.2 最小化rootfs
bash复制ldd /bin/busybox | awk '{print $3}' | xargs -I {} cp {} rootfs/lib/
57.3 闪存操作
bash复制flash_erase /dev/mtd0 0 0 > erase.log 2>&1
58. 实时系统配置
58.1 优先级调整
bash复制chrt -f 99 command > rt_task.log
58.2 中断绑定
bash复制echo 1 > /proc/irq/123/smp_affinity
58.3 调度策略
bash复制echo -n "FIFO" > /sys/fs/cgroup/cpu/tasks/cpu.scheduler
59. 高可用性配置
59.1 心跳检测
bash复制ping -c 1 standby-host > /dev/null || trigger_failover
59.2 资源切换
bash复制drbdadm primary resource > drbd.log 2>&1
59.3 服务健康检查
bash复制curl -sf http://localhost/health || systemctl restart service
60. 大规模部署自动化
60.1 并行执行
bash复制parallel -j 10 -a hosts.list ssh {} command > results.log
60.2 配置同步
bash复制rsync -az /etc/ host:/etc/ > sync.log
60.3 状态收集
bash复制clush -a -b "uname -a" > cluster_info.log
61. 云环境集成
61.1 元数据获取
bash复制curl -s http://169.254.169.254/latest/meta-data/ > cloud_meta.log
61.2 自动扩展
bash复制aws autoscaling set-desired-capacity --auto-scaling-group-name my-asg --desired-capacity 5
61.3 配置注入
bash复制echo "ENV=production" >> /etc/environment
