Linux后台执行

`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 &`进行控制。

 

 

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

thebirdofwonder

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值