IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

linux shell中”2>&1″含义

博学无忧 2014-11-21 23:46:50 累计浏览 1,818 次
本机暂存

   执行命令是

   /home/admin/demo.sh >/dev/null 2>&1 &

   对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。

   对于2 ,表示标准错误,stderr。

   2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null

   最后一个& 是让程序在后台执行。

   为何2>&1要写在后面?

   command > file 2>&1

   首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

   command 2>&1 >file

   2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

   用strace可以看到:

   1. command > file 2>&1

   这个命令中实现重定向的关键系统调用序列是:

   open(file) == 3

   dup2(3,1)

   dup2(1,2)

   2. command 2>&1 >file

   这个命令中实现重定向的关键系统调用序列是:

   dup2(1,2)

   open(file) == 3

   dup2(3,1)

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. 我的 RHCA 之路 (累计阅读 14,013)
  3. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  4. 给程序员新手的一些建议 (累计阅读 13,089)
  5. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  6. 关于linux内存free的一些事情 (累计阅读 12,867)
  7. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  8. Google怎么用linux (累计阅读 12,581)
  9. Linux Used内存到底哪里去了? (累计阅读 11,867)
  10. find命令的一点注意事项 (累计阅读 11,865)