nohup sh xxx.sh &>/dev/null &

nohup sh xxx.sh &>/dev/null & 或者其它类似写法 nohup ./xxx [args] &>/dev/null &

这个命令的作用是:后台运行进程xxx并将标准输出和标准错误流重定向到linux的空设备

下面对于命令中的每一部分,分别说明(不同的颜色是一部分):

nohup sh xxx.sh &>/dev/null &

nohup:就是no hangup,不要挂断,忽略hup信号。标准输出内容会输出到当前目录的nohup.out日志文件中而不终端显示。

打个比方,你在终端起动一个进程xxx.sh,在后台运行,然后关闭当前终端(在前台运行,关闭终端肯定要终止该进程的)。关闭当前终端,当前终端启动的(后台)进程也就退出了。如果想要关闭这个终端,但是这些进程并不终止,继续在后台运行,那就要使用nohup了。

nohup 不是ctrl+z,ctrl+z是让当前进程挂起。

我也就顺便多解释下ctrl+z,小弟才疏学浅,都是自己平常使用的经验拿来分享下,说的不对的地方也欢迎随时指正。ctrl+z会让当前正在前台运行的进程挂起到后台,此时进程会停止运行,使用jobs可以看到这些任务,通过fg、bg可以让这些进程继续在前台或后台运行。但是当前终端关闭,这些进程也随之退出。

sh xxx.sh就是执行脚本xxx.sh,后面的./main [args]也是类似的意思,启动了一个进程,后面跟着相关参数

所以nohup sh xxx.sh的意思是使用nohup命令执行脚本xxx.sh,但是如果只是这样的话还只是前台执行,不过此时,本来脚本xxx.sh通过标准输出流应当输出屏幕的内容,此时输出到一个nohup.out的文件当中,即使是前台运行,前台也看不到什么信息了。

&>:&和和重定向符号(>)放到一起说,中间没有空格。linux中的文件号,1是标准输出流,2是错误输出流,此处&>的意思是合并 标准输出和错误输出并重定向,切记&和>中间没有空格,有空格的话,&就变成是后台运行的意思了。所以平常使用1>或2>也是类似的意思,标准输出流重定向到哪里或者错误输出流重定向到哪里。

/dev/null:看到/dev就明白这是在linux的设备目录下。/dev/null是linux的一个空设备,放入这里的数据立即清除,所以只能写,读不出来什么。可以这样理解/dev/null,就好像是个看不见,填不满的深渊,什么东西扔进行这里就没有了。

所以&>/dev/null的意思是把标准输出流和标准错误流重定向到/dev/null,当然也可以重定向到别的文件中。比如:1>run.log 2>error.log,标准输出流的内容写到run.log,错误输出流写到erro.log。重定向到/dev/null是因为这些内容我不关心,所以我也不需要它落在某个地方占用空间,因为前面使用了nohup了命令,如果不指定重定向到哪里,默认是被追加到nohup.out文件中的。

有的朋友可能好奇哪些日志内容是不用关心可以直接丢弃的,打个比方,有些日志既会落到本地又会输出到屏幕终端,而我只需要落到本地的日志就够了,这时候,就可以这样用了。

最后一个&:最后面这个&就是后台运行的意思 。

这样的话,是不是对这条命令有了稍为清晰的认知,也可以根据需要,灵活多变的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不识君的荒漠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值