原创
©著作权归作者所有:来自51CTO博客作者51的白开水的原创作品,请联系作者获取转载授权,否则将追究法律责任
✅ Linux 输出与重定向系统总结
一、基础概念:三个文件描述符(File Descriptor)
文件描述符
名称
说明
0
stdin
标准输入(通常来自键盘)
1
stdout
标准输出(正常信息,打印信息)
2
stderr
标准错误输出(错误或异常信息)
二、标准重定向语法
1. 重定向标准输出(stdout):command > out.txt1.
等价于:
command 1> out.txt1.
将标准输出写入到 out.txt 中。
2. 重定向标准错误(stderr):command 2> err.txt1.
将错误信息单独写入 err.txt。
3. 同时重定向 stdout 和 stderr 到不同文件:command 1> out.txt 2> err.txt1.
正常输出到 out.txt,错误输出到 err.txt。
4. 将 stderr 合并到 stdout:command > all.log 2>&11.
说明:
>:表示重定向2>:指重定向 stderr(错误输出)&1:表示“重定向到文件描述符 1”(即标准输出)结果:所有输出(正常 + 错误)都进入 all.log
三、后台运行命令并记录日志
使用 nohup 保持后台运行,并记录所有日志到文件:nohup java -jar myapp.jar > app.log 2>&1 &1.
含义总结:
片段
含义说明
nohup
忽略挂起信号,终端关闭程序仍运行
java -jar myapp.jar
启动 jar 应用
>
将标准输出写入文件
2>&1
将标准错误也重定向到标准输出(合并)
&
放到后台运行
四、同时输出到控制台和文件:tee 命令
nohup java -jar myapp.jar 2>&1 | tee app.log &1.
效果:
控制台能实时看到输出同时写入到 app.log 文件五、测试命令示例
echo "标准输出" # 走 stdout(1) ls no-such-file.txt # 走 stderr(2)1.2.
# 把正常输出和错误信息都保存下来 ls exist.txt no-such.txt > all.log 2>&11.2.
✅ 推荐实用模板总结
场景
推荐命令
后台运行 + 日志文件输出
nohup java -jar app.jar > app.log 2>&1 &
前台运行 + 控制台输出
java -jar app.jar
后台运行 + 同时控制台和日志
`nohup java -jar app.jar 2>&1
✅ 拓展:& 和 文件描述符
&:用于引用文件描述符(例如 2>&1)1:标准输出2:标准错误输出特别注意:
2>1 是错误写法,表示把 stderr 重定向到名为 1 的文件。正确写法是 2>&1:&1 表示“文件描述符 1”。 赞 收藏 评论 举报相关文章