首页 > 系统相关 >Linux nohup命令详解

Linux nohup命令详解

时间:2024-03-12 09:11:27浏览次数:17  
标签:输出 python train 命令 详解 nohup Linux out

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。

然后用以下命令杀死对应的进程:

kill -9 pid

标签:输出,python,train,命令,详解,nohup,Linux,out
From: https://www.cnblogs.com/yourenbo/p/18067565

相关文章

  • MySQL主从延迟原理详解
    前言在生产环境中,为了满足安全性,高可用性以及高并发等方面的需求,基本上采用的MySQL数据库架构都是MHA、MGR等,最低也得是一主一从的架构,搭配自动切换脚本,实现故障自动切换。上述架构都是通过集群主从复制(Master-Slave)的方式来同步数据。MySQL集群简单架构图:说到主从同步,离不开bi......
  • Java线上诊断神器Arthas:常用命令详解!
    有关Arthas基本介绍、安装部署、arthasidea插件在上篇文章已经介绍过,这里就不在重述。文章地址:Java诊断工具Arthas:开篇之watch实战上篇重点讲了watch命令。这篇把剩余一些重要命令讲解演示下。一、trace命令作用:展示方法内部调用路径,并输出方法路径上的每个节点上耗时......
  • C# 虚方法virtual详解
    原文链接:https://blog.csdn.net/m0_65636467/article/details/128797283C#虚方法virtual详解在C++、Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外。虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译......
  • C# 关键字之internal详解
    原文链接:https://blog.csdn.net/weixin_42565127/article/details/130927438一、internal我们都知道的三种类型/成员修饰符public、protected、private,也明白它们所表示的含义,internal也是一各类型/成员修饰符(被修饰的类型或者成员称为内部类型或成员),只是它所修饰的类只能在同一......
  • Redis安装之Redis7主从复制(replica)安装(Linux版)
    官网说明:https://redis.io/docs/management/replication/一.背景单机部署存在单点故障及数据丢失问题,为了实现读写分离容灾恢复数据备份水平扩容支撑高并发等功能,Redis可基于主从复制的特性搭建集群。二.方案原理2.1.读写分离Master主机负责写操作,Slave从机负......
  • MySQL数据库表关系详解
    MySQL数据库表关系详解(1)一对一一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面一对一的关系就是一种特殊的多对多的关系,一张表A中的一条记录只能对应另一张表B中的一条记录,另一张表B中的一条记......
  • Linux安装Libevent
    环境Ubuntu20.04.264位 软件包安装通过apt-get命令可以直接安装Libevent,这种方式方便快捷,省时省力。安装命令如下:sudoapt-getinstalllibevent-dev源码安装源码安装一般有如下步骤:./configuremakemakeinstall运行./configure命令:运行该命令会当前路......
  • Linux查看文件内容常用命令
    前言在Linux系统中,查看文件内容是进行系统管理和日常操作的基本技能之一。通过一些简单而有效的命令,您可以快速浏览文件的内容,检查配置文件、日志文件等。本文将介绍几个常用的Linux命令,帮助您轻松地查看文件内容。查看文件类型1、file命令:filefile_name查看文本内容查看......
  • Linux常用统计命令大全
    简介Linux系统作为一种常用的操作系统,具有丰富的命令行工具,其中包括了许多用于统计数据的命令。这些命令可以帮助系统管理员和开发人员轻松地分析和处理数据。本文将介绍一些常用的Linux统计命令,帮助读者更好地理解和使用它们。grepgrep命令用于在文本文件中搜索指定模式的文......
  • Linux系统的七个运行级别
    Linux系统有7个运行级别(runlevel):运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录运行级别2:多用户状态(没有NFS)运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式运行级别4:系统未使......