首页 > 其他分享 >nohup 命令解读

nohup 命令解读

时间:2022-12-10 16:35:32浏览次数:42  
标签:输出 重定向 标准 解读 命令 nohup 文件

前言

nohup 是linux系统中自带的一个命令行工具,英文全称 no hang up(不挂起)。功能是在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 需要配合 & 一起使用。

正文

输入输出重定向

定义:为了更高效的处理数据,需要把多个Linux命令适当的组合在一起,使其协同工作,要做到这一点,就必须搞明白命令的输入重定向与输出重定向的原理。

输入重定向:是指把文件导入到命令中;
输出重定向:指把原本要输出到屏幕的数据信息写入到指定文件中。又分为

  1. 标准输出重定向
  2. 错误输出重定向。

下表为输出重定向中用到的符号及其作用

命令 > 文件     // 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件    // 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2 > 文件    // 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 2 >> 文件   // 将错误输出重定向到一个文件中(追加到原有内容的后面)
&> 或 2>&1     // 将标准输出与错误输出共同写入到文件中

操作系统中三个常用的流:

  • 0:标准输入流 stdin
  • 1:标准输出流 stdout
  • 2:标准错误流 stderr

一般当我们用 > test.log,实际是 1 > test.log 的省略用法;

< console.txt ,实际是 0 < console.txt 的省略用法。

什么是标准输出流?
我们使用shell 命令 echo hello word 时,会在控制台打印出 hello word,这就属于标准输出流

什么是标准错误流?
我们在执行删除某个文件时,系统提示: 无法删除,没有那个文件,时,这时的提示就属于标准错误流。

nohup 语法

 nohup Command [ Arg … ] [ & ]

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

nohup 和 & 的区别

nohup 和 & 是两个命令,这两个命令可以单独使用,也可以组合使用。

&

指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出。

nohup

不挂断的运行,注意并没有后台运行的功能就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行。

nohup <命令> &

这样就能使命令永久的在后台执行。

nohup 默认行为

三个常用的流都会在 nohup 中被使用到:标准输入流、标准输出流、标准错误输出流。其中,输入流很少使用(本篇文章终极解决办法小节使用到了),我们最多的关注两个输出流即可。

下面列出nohup的默认行为:

  1. 如果nohup命令的标准输入是终端,那么nohup将会默认使用/dev/null来重定向。
  2. 如果nohup命令的标准输出是终端,那么标准输出会被附加到文件nohup.out中;如果用户没有在当前目录创建文件的权限,那么就会把输出附加到$HOME/nohup.out中;如果还是没有写入权限,那么该命令就不会执行。
  3. 如果nohup命令的标准错误是终端,那么就会被定向到标准输出的附加的文件描述符。如果标准输出被关闭了,那么标准错误就会像上面一样尝试附加到nohup.out或$HOME/nohup.out中。

脚本中使用 nohup 的问题

温馨提示: 以下内容特别重要
温馨提示: 以下内容特别重要
温馨提示: 以下内容特别重要

如果我们在shell中执行nohup命令,并且没有进行任何重定向,那么终端上就会弹出“nohup: ignoring input and appending output to ‘nohup.out’”,并且,只有敲击回车,shell才能继续执行,否则就会卡住,

nohup卡住时,你的命令还没有执行,这时还在 nohup 的逻辑里面,这时如果没有按回车键就关闭终端,会退出nohup(相当于放弃执行nohup),并且你的命令程序依然处于未执行状态

一般解决办法:

在使用 nohup 命令时,将标准输出流和标准错误流指定到文件中即可解决大多数nohup卡主的问题, 例如:

nohup sh nohup_test.sh >out.log 2>&1 &

终极解决办法:
一般解决办法只能避免 标准错误不会弹出提示。但是有些标准错误还会有附加文件,附加文件会出现其他的错误提示,我们还需要将标准输入也重定向。既:重定向标准输入、标准输入和标准错误输入,这样就不会有任何错误提示,案例:

nohup sh nohup_test.sh >out.log 2>&1 </dev/null &

nohup 相关内容

这里之列出可能会使用到的工具

  1. 我们可以使用 job 查看任务,具体使用请自行百度
  2. fg 工具可以关闭任务

后记

如果将中文中的内容认真阅读并理解,那么nohup将会给你非常大的帮助。编辑文章不易,如果这篇文章对你有帮助,可以在下方打赏哦。

标签:输出,重定向,标准,解读,命令,nohup,文件
From: https://www.cnblogs.com/shuiche/p/16971736.html

相关文章

  • Linux常用命令-awk
    awklinux强大的文本处理工具常用命令#-F指定分隔符#$0打印该行所有位置#$1,$2,$3打印对应位置#$NF打印匹配行最后一位cattest.txt|awk-F'|''{print$N......
  • Linux常用命令-grep
    grep:linux命令,常用于查找文件中的文本内容zgrep常用于查找压缩文件中的内容常用选项#-i不区分大小写#-v反向匹配#-a把二进制文件当作文本文件处理,常用于查找......
  • Linux常用命令-sed
    sed:linux命令,常用于过滤和转换文本常用选项#-e:直接在命令列模式上进行sed的动作编辑,可以在一行内执行多条命令;#-i:直接修改读取的文件内容,而不是输出到终端#......
  • Opensuse zypper软件包管理器常用命令
    Zypper是OpenSUSE和企业版SUSE中软件包管理器ZYpp的命令行接口。主要用于: 1.管理仓库:zypper可用命令行添加、删除、启用或禁用库;(在上文Linux源基本介绍及更换国内源中......
  • Linux的free命令与OOM的简单总结
    简介查看操作系统配置最关键的几个命令是lscpu查看CPU信息以及free查看内存信息.不过free信息有一个疑惑点他的free的值可能很小.会让搭建产生误解.这里简单说明一下.......
  • Linux命令后面常见的>/dev/null 解释
     文件描述符①文件描述符是与文件输入、输出关联的整数。它们用来跟踪已打开的文件。最常见的文件描述符是stidin、stdout、和stderr。我们可以将某个文件描述符的内容重定......
  • Linux操作系统之Linux命令的返回值
    前言①Linux操作系统中,无论是启动桌面程序还是在控制台终端执行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称为错误号( ErrorNumber )②在控制台终端......
  • yum命令提示error: rpmdb: BDB0113 Thread/process,解决方法
    最近在做RHCE的题目,yum命令装vdo时,使用yuminstall命令的时候,提示error:rpmdb:BDB0113Thread/process,具体错误如下:[root@node2~]#yuminstallvdo-yerror:rpmdb......
  • Linux基础-学会使用命令帮助
    Linux命令及其参数繁多,大多数人都是无法记住全部功能和具体参数意思的。在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助......
  • Linux 基础-新手必备命令
    Linux新手必备命令:tar、grep、which、find、cut等。Linux基础-新手必备命令概述常见执行​​Linux​​命令的格式是这样的:命令名称[命令参数][命令对象......