博客
关于我
Linux学习总结(53)——后台启动nohup >/dev/null 2>&1 使用总结
阅读量:792 次
发布时间:2023-02-03

本文共 1193 字,大约阅读时间需要 3 分钟。

问题:Nohup与重定向在Linux中的应用

在部署Spring Boot等Java项目时,我们经常会使用Nohup命令来运行JAR文件。Nohup的全称是"no hang up",意在避免终端断开后程序退出。然而,很多人会在命令后面加上> /dev/null 2>&1,这看起来有点复杂。那么,这到底是什么意思呢?我们来解析一下。

基本符号解析

在Linux中,文件描述符是程序与文件进行通信的关键机制。以下是几个常见的文件描述符及其含义:

  • /dev/null:表示一个特殊的空设备文件。任何写入这个文件都会被丢失,尝试从它读取也会得到空内容。可以将它想象成一个“黑洞”。
  • 0:表示标准输入(stdin)。
  • 1:表示标准输出(stdout)。
  • 2:表示标准错误(stderr)。

2>&1的深层含义

2>&1 是一个常见的重定向命令。它的含义是将标准错误输出重定向到标准输出。具体来说:

  • 左边的2:表示stderr(标准错误)。
  • 右边的&1:表示将stderr的输出重定向到文件描述符1(stdout)。

因此,2>&1 的作用是将程序的标准错误输出合并到标准输出中。例如,如果你的程序同时输出信息到标准输出和标准错误,使用2>&1 就可以将两者都输出到同一个地方。

需要注意的是:

  • 左边的2不需要加&,因为它直接指定了一个文件描述符。
  • 右边的1必须加&,否则会被解释为文件名。

此外,> 左边的默认值是1。如果你只写> /dev/null,它相当于1>& /dev/null,只重定向标准输出。

测试与实际应用

为了更好地理解重定向的效果,我们可以通过一些简单的测试命令来验证:

  • ls 2>1:尝试列出目录并将标准错误重定向到文件1。这个命令不会报错,但会在文件1中生成一个空的文件。

  • ls xxx 2>1:尝试列出一个不存在的文件,并将标准错误重定向到文件1。错误信息会被写入文件1中。

  • ls xxx 2>&1:同样尝试列出一个不存在的文件,但这次错误信息会被重定向到标准输出(因为1已经被指定为目标文件)。

  • ls xxx 1>&1 2>&1:将标准输出和标准错误都重定向到同一个文件中。实际上,标准输出已经被重定向到1,所以这个命令等价于ls xxx 2>&1

  • ls xxx 1>&2:尝试将标准输出重定向到标准错误。由于> 左边默认为1,这相当于1>&2,也就是将标准输出重定向到标准错误。

  • 总结

    通过以上解释,我们可以看出,> /dev/null 2>&1 的作用是将标准输出和标准错误都重定向到一个空设备文件中。这个文件类似于一个“黑洞”,任何写入它的内容都会被丢失,而尝试从它读取内容则什么也读不到。

    理解这些重定向命令对于日常的Linux操作非常重要,尤其是在需要长时间运行程序或避免屏幕冗余信息时,使用Nohup配合> /dev/null 2>&1 是非常有用的。

    转载地址:http://nrzfk.baihongyu.com/

    你可能感兴趣的文章
    Linux安装gcc/gcc-c++
    查看>>
    linux安装HelixServer实现视频分发播放
    查看>>
    linux安装java的tar包,Linux系统下安装配置JDK(rpm方式及tar.gz方式)
    查看>>
    Linux安装JDK 17
    查看>>
    Linux安装JMeter进行压力测试
    查看>>
    Linux安装KVM
    查看>>
    linux安装mysql
    查看>>
    Linux安装Mysql5.7.23详细教程(CentOS7)
    查看>>
    Linux安装Mysql完整步骤
    查看>>
    Linux安装mysql:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql
    查看>>
    Linux安装Oracle 11g和postgrepSQL数据库(附安装包)
    查看>>
    Linux安装phpMywind
    查看>>
    Linux安装pip没有权限,linux/unix没网环境下安装python、pip以及第三方库
    查看>>
    Linux安装postgresql及基础操作
    查看>>
    Linux安装Python3流程
    查看>>
    linux安装rabbitmq3.7.15教程
    查看>>
    Linux安装Redis 与 Redis基本语法
    查看>>
    Linux安装Redis及配置(超详细)
    查看>>
    Linux安装Sqoop及基础使用
    查看>>
    Linux安装telnet - telnet不能用!提示:-bash: telnet: command not found
    查看>>