千家信息网

linux中nohup /dev/null 2>&1是什么意思

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍linux中nohup /dev/null 2>&1是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!nohup命令:如果你正在运行一个进程,而且你觉得在
千家信息网最后更新 2025年02月02日linux中nohup /dev/null 2>&1是什么意思

这篇文章主要介绍linux中nohup /dev/null 2>&1是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

该命令的一般形式为:nohup command &

ls xxx 1>out.txt 2>&1nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &

对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。

command >out.file 2>&1 &

command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。

试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

你可以用
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

为何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)

为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃.下面我就为大家来说一下, command > file 2>file 与command > file 2>&1 有什么不同的地方.

首先~command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道.

而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容.

从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.

以上是"linux中nohup /dev/null 2>&1是什么意思"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

输出 标准 错误 文件 命令 代表 就是 意思 内容 信息 写法 效率 管道 终端 进程 测试 也就是 关键 实际 实际上 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 初一护苗网络安全课观后感 佛山市思赢互联网科技有限公司 2022年2月网络安全事件 云服务器基础运维与管理 人工智能专业买什么配置的服务器 致远a6v5数据库安装 商汤科技属于几线互联网公司 章鱼联盟网络技术服务有限公司 椒江区直销软件开发价格表 江苏发展网络技术咨询报价表 每天几千万流量需要多大服务器 软件开发与项目管理干什么 跨数据库搜索数据的工具 学习数据库管理的手机软件有哪些 CFQT语音软件开发 数据库和ps有啥区别 数据库直接删除授权用户账号 软件开发场所 临平台应用及软件开发 c 窗体实现动态添加数据库 号码一直显示服务器无法使用 数据软件开发和大数据一样吗 软件开发师资格证 统计技能收集分析数据库 价值先生2020网络安全 上海语音网络技术分类咨询报价 山诺绣花软件开发者 金融网络安全宣传 示范区网络安全学校 校园网络安全知识讲座
0