Linux——》nohup、&、2>&1

本文深入解析Linux下nohup、&、2>&1命令的使用方法及功能,包括如何让进程在关闭终端后仍继续运行,以及标准输出和错误的重定向技巧。

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

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
https://blog.youkuaiyun.com/weixin_43453386/article/details/89239635

一、nohup

1、用途

no hang up 的缩写
不挂断地运行命令,并没有后台运行的功能(关闭终端或者退出某个账号,进程也继续保持运行状态)

2、语法

nohup Command [ Arg … ] [ & ]

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

二、&

1、用途

在后台运行

2、语法

command &

三、nohup command &

1、&

java -jar house-hub-fence-web-apply.war &

  • 后台执行
  • 关闭xshell,对应的任务也跟着停止

2、nohup command

nohup java -jar house-hub-fence-web-apply.war

  • 关闭标准输入,终端不再能够接收任何输入(标准输入)
  • 重定向标准输出和标准错误到当前目录下的nohup.out文件
  • 即使关闭xshell退出当前session依然继续运行

3、nohup command &

nohup java -jar house-hub-fence-web-apply.war &

  • 终端能够接收任何输入
  • 重定向标准输出和标准错误到当前目录下的nohup.out文件
  • 即使关闭xshell退出当前session依然继续运行

四、2>&1

参数说明
/dev/null空设备文件
0stdin:标准输入
1stdout:标准输出
2stderr:标准错误
> file标准输出到file中
1> file标准输出到file中
2> error错误输出到error中
2>&1错误重定向到标准输出上
2>&1 >file错误输出到终端,标准输出重定向到文件file(和下行命令效果一样)
> file 2>&1错误输出到终端,标准输出重定向到文件file(和上行命令效果一样)
### 解释 Shell 中 `&>` 和 `2>&1` 的区别 在 Linux shell 脚本中,文件描述符用于处理输入和输出流。具体来说: - 文件描述符 0 表示标准输入(stdin) - 文件描述符 1 表示标准输出(stdout) - 文件描述符 2 表示标准错误输出(stderr) #### 使用 `2>&1` 命令中的 `2>&1` 将标准错误输出重定向到当前的标准输出位置。这意味着任何原本会发送到标准错误的内容现在会被送到标准输出所指向的地方。 例如,在命令 `nohup java -jar app.jar > log 2>&1 &` 中,先将标准输出重定向至名为 `log` 的文件,随后通过 `2>&1` 把标准错误也导向同一路径[^1]。 ```bash command > output.txt 2>&1 ``` 这段代码首先创建或清空 `output.txt` 并把所有来自 `command` 的标准输出写入该文件;接着它使得标准错误跟随已有的标准输出流向相同的文件。 #### 使用 `&>` 另一方面,`&>` 提供了一种更简洁的方式来实现相同的效果——即同时重定向标准输出和标准错误到同一个目标。语法更加直观易读。 对于同样的例子而言,可以写作如下形式来达到一致的结果: ```bash command &> output.txt ``` 这行指令一次性完成了两个动作:既指定了标准输出又涵盖了标准错误都将被记录于指定的日志文件内。 尽管两者最终效果相似,但在某些老旧版本的 Unix/Linux 发行版里可能不支持较新的 `&>` 符号,因此传统做法推荐使用 `2>&1` 方式以确保兼容性更好一些[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值