【linux】shell程序后台运行nohup和&的区别

nohup命令用于在后台运行进程,即使用户退出Shell也不会终止,其输出重定向到nohup.out。&符号也可后台运行程序,但Shell退出时进程会终止。长时间运行的命令适合用nohup,短时任务可用&。
摘要由CSDN通过智能技术生成

简略

nohup

nohup 将启动进程放到后台去运行,运行期间屏幕不会输出信息,推出当前的shell会话不会终止程序;

&

&  挂起运行,如果脚本有输出,还是会打印到屏幕上,在Shell退出时,后台进程也会被终止;

(所以如果想后台运行的程序的打印不要输出到屏幕干扰当前的工作,应该用nohup)

详细

在Shell中,使用`nohup`和`&`这两种方式可以实现后台运行程序,但它们有以下区别:

1. `nohup`命令不会被终止,即使用户退出了登录Shell。当使用`nohup`命令时,系统会自动将命令的输出重定向到一个名为`nohup.out`的文件中,在命令执行过程中不会受到`HUP`信号的影响。因此,即使Shell退出,命令也可以继续在后台运行,并在文件中输出结果。例如,可以使用以下命令:

   ```shell
   nohup command > output_file 2>&1 &
   ```

   这会将`command`命令以后台方式运行,并将其输出重定向到`output_file`中。

2. 在使用`&`方式后台运行程序时,命令会与Shell进程共享标准输入、输出和错误流,在Shell退出时,后台进程也会被终止。例如,可以使用以下命令:

   ```shell
   command > output_file 2>&1 &
   ```

   这会将`command`命令以后台方式运行,并将其输出重定向到`output_file`中。在Shell退出时,后台进程也会被终止。

因此,如果您需要在后台运行一些长时间运行的命令,应该使用`nohup`命令,否则,当用户退出Shell时,命令将被终止。而如果您只需要简单地在后台运行一个短时间的命令,可以使用`&`方式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值