Linux nohup命令详解

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

Linux nohup命令详解

我们自己笔记本或台式机的显卡往往不能支持我们进行深度学习实验或大模型训练,因此我们往往使用SSH连接服务器然后去运行代码。

有的时候我们跑的程序需要跑几个小时甚至几天,这样我们就需要一直开着电脑挂着SSH;偶尔也会遇上网络断开,程序半途中止的情况。

所以,我们需要一个下述的功能:即使我们远程连接SSH的终端被关闭了,程序依旧在服务器上运行。这时候就需要用到Linux的nohup指令。

nohup命令是英语词组 no hangup的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。HUP 信号是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而 nohup命令做的就是这个事情。


首先来看nohup的语法:

nohup Command [Arg...] [ &]

最后的" &":表示后台运行,不占用交互命令行

如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。

如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

假设用nohup运行一个名为task.sh的脚本: nohup task.sh > my_log.out 2>&1 &

该命令中的数字解释如下:

  • 0 – stdin (standard input,标准输入)
  • 1 – stdout (standard output,标准输出)
  • 2 – stderr (standard error,标准错误输出)

2>&1解释: 将标准错误(2)重定向到标准输出(&1), 标准输出(&1)再被重定向输入到my_log.out文件中。


使用举例:

nohup python train.py &

后台运行train.py,会在train.py目录下创建一个nohup.out文件来记录程序的输出。

在使用时,我们会发现一个问题,nohup.out文件中的内容并不会立刻变化,这是因为python的标准输出是有缓冲的。

如果我们想要立刻在nohup.out中实时看到python程序的输出,可以使用以下命令:

nohup python -u train.py &

-u会禁用python的缓冲。

假如我们的训练脚本名为train.sh,我们可以使用以下命令启动训练:

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

该命令会在后台运行train.sh,同时将标准错误重定向到标准输出,然后再将标准输出写入到log.out文件中。


上面有提到,nohup 命令结合 & 符号可以使进程在后台运行,即使关闭了终端依然不受影响。这时,如果想要终止这个进程,可以按照以下步骤操作:

ps aux | grep train.sh
或
ps -ef | grep python

通过上面的命令获取进程的pid。

然后用以下命令杀死对应的进程:文章来源地址https://www.toymoban.com/news/detail-838887.html

kill -9 pid

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

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

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

相关文章

  • Linux nohup后台启动/ 后台启动命令中nohup 、&、重定向的使用

    经常看到一些jar包,sh脚本用nohup命令后台启动,今天就讲解一下nohup的用法。 nohup主要作用就是可以在后台运行,并可以选择将日志输出到指定文件。如启动jar包,若使用 java -jar demo.jar 的方式启动程序当窗口关闭的时候程序也停止了,而且日志会直接输出到控制台非常不直

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

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

    2024年02月10日
    浏览(41)
  • Linux中安装和使用nohup命令

    nohup 英文全称 no hang up(不挂起) 当我们把项目部署到服务器上时,只有一直保持linux终端的连接才能够运行项目,当我们把连接软件Xshell或者Finalshell连接工具关掉时,项目也就停止运行。只要用了nohup命令,我们的项目就能够一直运行了,此时就实现了我们需求。 例如:

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

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

    2024年02月04日
    浏览(46)
  • Linux shell 命令中nohup 、&、重定向的使用

    一、nohup 和 使用方法 1.1、 nohup (不挂断) nohup 是 no hung up 的缩写,意思是不挂断 。 使用 Xshell 等Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用 nohup 指令来运行指令,即

    2024年02月22日
    浏览(51)
  • nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向 输入报错信息保留

    # yourcommand:启动对象命令。可以跟该命令需要的各种参数。 # 是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出. nohup与结合起来,可以实现不挂断的后台运行。 实现屏幕输出记录到日志文件 # 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standa

    2024年02月05日
    浏览(63)
  • nohup 命令之 nohup: ignoring input and appending output to ‘nohup.out’

    当我在linux中使用nohup 命令的时候,出现了这个错误: nohup  英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup  命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup

    2023年04月09日
    浏览(38)
  • centos后台运行使用nohup命令

    nohup ./my_script.sh nohup命令运行后如何关闭 nohup 命令用于在用户注销系统后继续运行指定的命令。如果您想关闭使用 nohup 运行的进程,您可以使用 kill 命令。 首先,您需要找到 nohup 运行的进程的进程ID(PID)。可以使用 ps 或 pgrep 命令来查找。例如,如果您的命令是 nohup ./my

    2024年04月14日
    浏览(38)
  • nohup启动jar包详解

    nohup解释: nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 解释: 代表后台运行 命令结尾没有 “” ,则变成 “java -jar XXX.jar ” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗口,则程序直接退出 命

    2024年02月10日
    浏览(36)
  • CentOS系统中部署和维护中进程有关的命令[ps,kill,killall,nohup ,systemctl,init]

    目         录 一、显示进程的状态 1、PS的语法 2、命令示例用法 二、杀指定ID的进程 1、Kill的语法 2、命令使用示例 三、杀掉指定名称的进程 1、killall命令的语法 2、命令使用示例 三、启动进程 1、启动进程的方法 (1)使用nohup命令 (2)使用systemctl命令 (3)使用init脚本

    2024年01月18日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包