I/O重定向

本文详细介绍了文件描述符的概念及其在shell脚本中的使用方法,包括如何重定向标准输入、输出和错误输出,以及如何通过特定命令操作文件描述符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), 和stderr (错误消息输出到屏幕上).

 

每个打开的文件都会被分配一个文件描述符.[1]stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2

 

 

 

 

 

 

 

一个常用的技巧:

有时ssh登录,后台执行命令后,无法退出

因为 stdin(0)、stdout(1)、stderr(2)输出都未关闭,而默认情况下0、1、2是和终端(或伪终端)相关联的。

那些正确设计的daemon程序都会在进入后台之前关闭0、1、2这三个fd,所以不会出现这个问题

 

对于SHELL脚本来说,在合适的位置(进入死循环之前或需长时间运行的命令之前)执行
exec 1>/dev/null 2>/dev/null 0</dev/null,或者根据需要重定向到其它文件,就可以解决这个问题。

对于已经写好,且又不想修改它,可以在命令行中做好这个重定向:
nohup ./program args 0</dev/null 1>/dev/null 2>&1 &

简单起见可以

nohup ./program args 0<&- 1>&- 2>&- &


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值