Linux后台执行

本文介绍了Linux中如何将程序后台执行,并通过`>&/dev/null`封住标准输出和错误输出。后台执行允许用户在CLI或GUI环境下继续其他操作,而输出重定向到/dev/null可以避免不必要的信息刷屏。在脚本调用中,若不封住输出,可能导致实质上的前台运行,影响效率。因此,建议在后台调用脚本时使用`>&/dev/null &`确保真正实现后台运行。

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

`sudo $operationPath >&/dev/null &`,为什么要封标准输出呢?

 

1.在linux中,输出人机接口有2种,标准输出STDOUT,标准错误STDERROR,前者可以反映正确执行后的结果,后者可以反映错误执行后的结果。这样做没啥不好,但问题是如果是一个比较大的程序,或者输出结果比较多,用户不想用,难道还要眼睁睁看错误信息玩刷屏么?所以Unix系的设计者搞了输出重定向/dev/null,把本来写STDOUT和STDERROR
文件的信息拿去写/dev/null文件去了。
具体语法就是:

1>/dev/null   2>/dev/null
1就是STDOUT 2就是STDERROR
也可以这么写:
>&/dev/null
或者
&>/dev/null

如果仅仅想看STDERROR,不想看STDOUT
1>/dev/null

>/dev/null

不想看STDERROR
2>/dev/null

2.啥是后台?

后台是和前台相对应的,个人理解,就用户和机器的关系来说,人机接口即是前台,用户用来和机器的
程序接口即是前台。将一个程序转为后台运行,即程序不再占用前端的接口,用户可以继续做其它操作,使用其它程序。

对于CLI来说,一个直观的后台运行程序,就是敲完一圈命令,一按回车,直接敲下一个命令。

但对于GUI来说,程序后台运行的直接表现是,点完按钮,立马出个alert提示操作完毕,然后你可以做其它操作。

● Bug分析

CLI和GUI的两种后台表现本身是不冲突的,但是两者连起来,就需要进行协调。
一个脚本用&转后台时,虽然不往STDOUT输出信息,但还是要往外输出一个PID

所以对一个脚本来说,&后台运行是好用的。但是如果脚本再调用脚本,被调用的脚本
做后台操作,如果不封掉输出( >&/dev/null),则调用脚本还需要等待被调用脚本的输出,
因此就造成了实质上的排队,仍然是在做前台运行。

● 总结

在脚本调用执行后台操作时一定要谨慎,为了保险起见,如果脚本之间不用传递输出参数,
最好在后台调用时使用 >&/dev/null &`进行控制。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值