博客
关于我
Linux学习总结(53)——后台启动nohup >/dev/null 2>&1 使用总结
阅读量:791 次
发布时间: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下进程通信与FIFO操作详解
    查看>>
    Linux下通过ssh访问另一台内网服务器
    查看>>
    Linux下通过端口杀死进程
    查看>>
    Linux下部署maven-web项目,包括JDK安装、TOMCAT安装、MYSQL安装详细解释
    查看>>
    linux下配置Java环境变量
    查看>>
    Linux下,C++判断指定路径下,是否存在wps打开的文件
    查看>>
    Linux下,Docker出现Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决办法
    查看>>
    Linux下,配置nodejs环境两种方法,并使用cron系统任务定时启动web服务
    查看>>
    Linux专家揭秘:Keepalived的安装和VIP自动漂移 - 简单步骤,大功效!
    查看>>
    Linux中 dir 命令还能这样玩!
    查看>>
    Linux中.a,.la,.o,.so文件的意义和编程实现
    查看>>
    linux中6个被低估但很有用的命令
    查看>>
    Linux中ftp连接530错误的解决方法
    查看>>
    Linux中install命令你有用过吗?用途很大!
    查看>>
    Linux中systemctl命令骨灰级详解
    查看>>
    Linux中yum和apt-get用法及区别
    查看>>
    linux中~和/的区别
    查看>>
    linux中下载和安装git2.3.0
    查看>>
    linux中出现不在 sudoers 文件中。此事将被报告的解决方法
    查看>>
    linux中压缩与解压缩大全 - linux中各种文件格式的解压缩
    查看>>