nohup 后台运行

程序挂在后台

1、nohup命令

nohup 命令 > XXX.log &,会将本应在屏幕上显示的输出,重定向到同级目录的XXX.out中,即后台运行并把stdout输出到文件nohup.out中,可以使用 > 来重定向输出。

2、例子:
  • nohup python a.py > a.log &
  • nohup sh a.sh > a.log &
3、应用环境

一般都是在linux下

4、nohup是否有匹配的&

nohup command_line或者nohup command_line &

  • 他们之间的差别在于是否带&
  • &是后台运行的命令,带&的命令,即使terminal关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上),它把标准输出(STDOUT)和标准错误(STDERR)结果输出到XXX.txt文件
5、重定向输出

使用nohup命令,这个看似很方便,但是当输出很大的时候,XXX.txt文件会非常大,或者多个后台命令的时候大家都会输出到XXX.txt文件,不利于查找结果和调试程序。所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。

./command.sh > output     这其中的>就是标准输出符号,其实是 1>output 的缩写
$./command.sh 2> output	这里的2>就是将标准错误输出到output文件里,而0< 则是标准输入了。

下面步入正题,重定向后台命令:

$nohup ./command.sh > output 2>&1 &
【a】前面的nohup 和后面的&我想大家都能明白了把。
【b】中间的2>&1是把标准错误2重定向到标准输出中1,继而,将标准输出导入文件output里,所以,标准错误和标准输出都导入文件output里面了。
【c】为什么需要将标准错误重定向到标准输出,那就归结为标准错误没有缓冲区,而stdout有。命令 >output 2>output 让文件output被两次打开,
而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.当这样写nohup ./command.sh >output 2>output,这种写法是错误的

在这里插入图片描述
最后谈一下/dev/null文件的作用

./command.sh >/dev/null 2>&1 &

这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。所以,对于很大的stdou和stderr,当你不关心的时候,可以利用stdout和stderr定向到这里/dev/null

参考1:http://blog.sina.com.cn/s/blog_6c9eaa1501011zml.html
参考2:https://www.cnblogs.com/nellyluo/p/10769112.html

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还能坚持

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值