Linux shell 命令中nohup 、&、重定向的使用

这篇具有很好参考价值的文章主要介绍了Linux shell 命令中nohup 、&、重定向的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、nohup 和 & 使用方法

1.1、 nohup (不挂断)

nohup 是 no hung up 的缩写,意思是不挂断 。

使用 Xshell 等Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用nohup 指令来运行指令,即使客户端与服务端断开,服务端的脚本仍可继续运行。

nohup 语法格式:

nohup  command  [arg...]

说明:

  • 除了无法进行输入操作(比如输入命令、换行、打空格等) 外 ,
  • 标准输出 保存到 nohup.out文件中。
  • 关闭客户端后,命令仍然会运行,不会挂断

例如:

执行 nohup sh test.sh 脚本命令后,终端不能接收任何输入,标准输出 会输出到当前目录的nohup.out 文件。即使关闭xshell 退出后,当前session依然继续运行。

1.2、 & (可交互)

& 语法格式:

command   [arg...]   &

说明:

  • 能进行输入操作(比如输入命令、换行、打空格等),即 可进行交互 输入和输出的操作。
  • 标准输出 保存到 nohup.out文件中。
  • 但是 关闭客户端后,程序会就马上停止

例如:

执行 sh test.sh & 脚本命令后 ,关闭 xshell,脚本程序也立刻停止。

1.3、nohup& 一块使用(不挂断,可交互)

语法格式:

nohup   command  [arg...]  &

说明:

  • 能进行输入操作(比如输入命令、换行、打空格等),即 可进行交互 输入和输出的操作,
  • 标准输出 保存到 nohup.out 中,
  • 关闭客户端后命令仍然会运行。

例子:
执行 nohup sh test.sh & 命令后,能进行输入操作,标准输出 的日志写入到 nohup.out 文件,即使关闭xshell,退出当前session后,脚本命令依然继续运行。

输入输出问题已经解决了, 是不是就完美了? 其实还有一个问题没有解决, 请往下看!

二、 日志 的 重定向 >

上面提到的日志文件默认名称是 nohup.out ,如果修改日志文件的名称,则用到 重定向 ,符号是 > ,语法格式是

 > logFile

说明:

  • > 是重定向的符号。
  • logFile 是日志文件名称,最好是英文、数字。

此时, nohup&> 三者一块使用的 语法格式

nohup  command >logFile  &

示例:

nohup  start.sh >aa.log  &

说明:执行上面的命令后,可以进行输入,也能在后台运行,运行的日志输出到 aa.log 日志中。

三、错误信息的处理

nohup  command >logFile  &

虽然解决输入输出,后台也能运行问题,但是还有一项是 错误信息 无法输出到 日志文件中,要解决这个问题,需要增加命令 2 > file

标准输出 和 错误信息 同时使用,语法格式如下:

>logFile1   2 >logFile2

有人会疑问,2 是什么意思? 请往下看。

3.1、Linux 标准输入、输出、错误信息的符号

Linux 标准输入、输出、错误信息的符号:

  • 0 表示 stdin (standard input) 标准信息输入
  • 1 表示 stdout (standard output) 标准信息输出
  • 2 表示 stderr (standard error) 错误信息
  • /dev/null 表示空设备文件。 如果不想输出任何的日志时,使用此参数 。

再来回顾上面的示例:

>logFile1   2 >logFile2
  • > logFile1 :即 1 >logFile1,1是标准信息输出,是默认的,可以省略,logFile1是 日志文件名字。

  • 2 >logFile2 :2 是错误信息,即将 错误信息 输出 到 logFile2 文件中 。

到这时,明白 2 含义了吧!

3.2、错误信息 和 标准输出 输出在同一个文件中

如果想把 错误信息 和 标准输出 在同一个文件中 ,使用 2>&1 。 语法如下:

>logFile   2>&1

说明:

  • >logFile 表示 标准信息 输出到 logFile 文件中;
  • 2>&1 表示 把 2(错误信息) 重定向, 输出到 1(标准输出) 中 。

两者的共同使用,表示 把 2(错误信息) 、1(标准输出) 都输出到同一个文件(logFile)中。

3.3、思考:不想输出日志信息怎么办 ?

提示:/dev/null 表示空设备文件。 如果不想输出任何的日志时,使用此参数 。

四、综合使用(推荐)

综上所述, 功能最全、推荐语法如下:

nohup  command  >logFile   2>&1  &

示例:

nohup  start.sh > mySysLog.log  2>&1   &

说明: 执行命令后,并且将 标准输出(1)错误信息(2) 写入到 mySysLog.log 文件中。

五、知识扩展

5.1、不停止服务,直接清空nohup.out

如果脚本一直运行下去,nohup.out 日志会一直增长,日志但是硬盘容量有限,怎么把日志文件的大小减少 ?
注意,千万别直接删除日志文件,会造成服务无法输出日志,服务异常直接停止运行,这是最严重生产事故。

不停止服务,直接清空nohup.out文件有两种方法:

cat /dev/null > nohup.out

cp /dev/null nohup.out
5.2、只记录警告级别比较高的日志

输出的日志太多,nohup.out 增长特别快,对于不重要的日记,可以不记录,选择只记录警告级别比较高的日志。

 nohup ./program > /dev/null   2>error.log  &
5.3、不想输出日志

不想输出日志,什么日志都不要,只要服务能正常运行就行了。文章来源地址https://www.toymoban.com/news/detail-835836.html

nohup ./program > /dev/null   2>&1   &

到了这里,关于Linux shell 命令中nohup 、&、重定向的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux nohup 命令详解

    nohup是Linux/Unix系统中非常有用的命令之一。它允许您在后台运行命令或脚本,并且在退出终端会话后仍然保持运行。这对于长时间运行的任务或进程非常有用,特别是当您需要离开终端但希望任务继续运行时。 nohup命令语法 nohup命令的基本语法如下: 您只需将要在后台运行的

    2024年02月14日
    浏览(44)
  • Linux:Nohup命令详解

    这是最简单的方式,也是 linux 新手们很容易搞混淆的一个经典问题: 请回答以上命令的异同…… 具体不一一解释了。直接说答案,想要维持一个长期后台运行的 logstash,你需要同时在命令前面加 nohup,后面加 。 nohup 不挂断的运行,注意并没有后台运行的功能就是指,用n

    2024年02月11日
    浏览(57)
  • linux后台执行命令:&与nohup的用法

    背景:电脑使用ssh工具远程连接服务器跑深度学习的时候,本地的终端叉掉的时候,会把服务器上的代码进程一起叉掉了,这在实际场景中,非常的不方便,因为不可避免会遭受不可抗拒的原因需要代码只在服务器上跑,比如,网络原因ssh连接不稳定,本地电脑断电等。 直接

    2024年02月10日
    浏览(41)
  • 「Linux系列」Shell 输入/输出重定向

    在Shell中,输入重定向允许你将一个文件或命令的输出作为另一个命令的输入,而不是从标准输入(通常是键盘)读取。这是通过特殊符号 实现的。使用输入重定向,你可以将文件的内容作为命令的输入,从而执行特定的操作。 下面是一个Shell输入重定向的案例: 假设你有一

    2024年04月15日
    浏览(46)
  • linux 中的 nohup 命令(设置后台进程): nohup: ignoring input and appending output to ‘nohup.out’

    Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 在程序结尾来让程序自动运行。 比如我们要运行weblogic在后台: ./startWebLogic.sh 但是加入我们很多程序并不象weblogic一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 结尾。 但是如果终端关

    2024年02月04日
    浏览(46)
  • 后端开发从小白到大佬之Linux的命令(一):nohup,详解底层!!!

    在 Linux 中, nohup 命令 用于在后台运行命令 , 并将其输出重定向到一个文件中,即使退出终端或关闭会话,该命令也能够持久的运行。 通常情况下,我们使用 nohup 命令来运行那些需要较长时间才能完成的任务,或者需要在长时间运行的过程中保持连接的任务,我们java的j

    2024年02月22日
    浏览(34)
  • 【Shell 命令集合 系统管理 内置命令】⭐⭐Linux 退出当前的Shell会话 exit命令 使用指南

    Shell 命令专栏:Linux Shell 命令全解析 exit命令是Linux操作系统中的一个内置命令,用于退出当前的Shell会话。 当我们在终端中运行exit命令时,它会终止当前的Shell进程,并返回到上一级Shell或者关闭终端窗口。它可以用于退出当前登录的用户会话,或者在脚本中用于结束程序的

    2024年02月04日
    浏览(78)
  • Linux shell 命令行环境下使用阿里云盘

    阿里云盘在内测的时候我就在使用,整体体验相当的好,最起码不会限速,比起下载速度只有十几 KB 的某垃圾云盘要强太多了。 当然除了使用各系统的客户端进行下载之外,我还想要在命令行进行操作,主要原因也是我有一台 NAS 服务器,需要用到命令行下载电影等相关资源

    2024年02月05日
    浏览(39)
  • 【Shell 命令集合 文件管理】Linux 拷贝命令 cp命令使用指南

    Shell 命令专栏:Linux Shell 命令全解析 cp命令是Linux中常用的文件复制命令,用于将一个或多个文件或目录复制到指定的目标位置。其基本语法如下: 其中, 源文件 表示要复制的文件或目录的路径, 目标文件 表示复制后的文件或目录的路径。 常用选项包括: -r :递归复制整

    2024年02月10日
    浏览(119)
  • 【Shell 命令集合 文件管理】Linux 读取命令 read命令使用指南

    Shell 命令专栏:Linux Shell 命令全解析 在Linux中, read 命令用于从标准输入或者文件中读取输入,并将其赋值给一个变量。它的基本语法如下: 选项可以是以下之一: -p :指定一个提示符,用于提示用户输入。 -r :取消对反斜杠的转义,保留其原始含义。 -t :设置等待用户输

    2024年02月04日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包