Linux服务器SSH客户端断开后保持程序继续运行的方法

这篇具有很好参考价值的文章主要介绍了Linux服务器SSH客户端断开后保持程序继续运行的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在申请服务器连接到桌面后,有些时候需要跑一些运行时间很长的程序(深度学习的训练程序)。在这期间如果退出断开连接,即:关闭桌面的编辑器或网页端的jupyter界面后Linux系统会自动关闭所有进程,程序也会随之终止运行(被挂起),这是不希望看到的,因此本文将通过使用nohup命令教大家一种在用户关闭编辑软件程序仍保持运行的方法。

一、在终端界面运行程序

首先在终端界面打开要执行程序的所在目录,使用如下命令开始运行程序:

nohup 程序运行的编译器 程序名称(带有文件类型后缀) &

例如,我要运行main_attetion_train.py程序,它使用python编译器进行编译,该文件相对于当前终端的位置在:data/ygw/NESP/working目录下。因此我的运行命令需要这样写:

cd data/ygw/NESP/working
nohup python main_attetion_train.py &

运行结果如下:
Linux服务器SSH客户端断开后保持程序继续运行的方法
从图中看出在执行了这两条命令出现了两行输出:
第一行出现了[1] 23024的字样,“[1]”是此进程的编号,“23024”是本次运行程序在linux中的进程号PID,这个在后期手动结束进程的时候需要,一定要记下来!!!
第二行出现的字样就是程序运行成功的标致,意思是将程序的输出日志信息放到“nohup.out”文件中存储,如果在执行程序后发现该行出现的字样与上图的不符,应该就是没有执行成功。

二、监视和查看程序的运行情况

在成功执行程序后,可以通过如下命令查看程序的运行情况:

tail -f nohup.out

这个nohup.out就上在运行程序时nohup命令指定的日志信息存储文件,它也在当前终端对应的目录下,所以除了用此命令在终端中查看内容也可以直接找到这个文件用记事本打开查看。
例如我在运行程序后输入此命令显示:
Linux服务器SSH客户端断开后保持程序继续运行的方法
其中文件里的内容就是程序执行时输出的日志信息。

Tick:对于深度学习程序来讲我们可以通过实时查看GPU的使用情况来判断程序是否在运行。查看GPU当前使用情况的命令是:

python nvidia-smi

我在运行程序前查看的GPU信息为:
Linux服务器SSH客户端断开后保持程序继续运行的方法
可以看出此时的GPU现存使用率为0,也就是当前没有什么进程在使用GPU。
当我把程序运行起来后再查看GPU的信息:
Linux服务器SSH客户端断开后保持程序继续运行的方法
此时发现GPU基本是满功耗运行,从侧面印证了程序在正常运行。

三、结束程序

现在运行的程序被设置为了不会随客户端断而终止的程序,所以在我们就得通过手动命令的形式在我们需要终端的时候终止程序,否则它就会一直执行到结束为止。终止程序可以采用Linux系统中的强制结束进程的方法,命令为:

kill -9 进程号

这里说一下,kill是一个命令组,后面跟的数字不同对应的kill效果不同,-9表示强制杀死进程,对kill其它使用方法有兴趣的小伙伴可以去自行查阅。这里只需要强制结束进程的效果,所以只介绍kill -9
下面以我的程序为例展示结束程序(杀死进程)的方法:
对第一步运行程序的时候通过输出端看到程序的进程号为:2304,因此需要执行的具体命令为:

kill -9 23024

Linux服务器SSH客户端断开后保持程序继续运行的方法
执行后会弹出[1]+ Killed的提示,说明命令执行成功。为了再次验证程序是否终止,可以查看此时GPU的使用率:
Linux服务器SSH客户端断开后保持程序继续运行的方法
从GPU使用信息中可以看出,此时GPU几乎无占用率,说明程序确实终止运行了。

四、忘记PID号的补救措施——查看运行程序的PID

一定有小伙伴在运行程序后关闭了终端页面,忘记了程序的PID号(我第一次就是这样)。这时可以通过查看目前终端中正在执行程序的PID号来找出之前程序的PID号。命令为:

ps -e|grep 程序的运行类型

这里我的程序运行类型为python,所以我的操作为:

ps -e|grep python

运行结果为:
Linux服务器SSH客户端断开后保持程序继续运行的方法
可以看到PID号为:23195。然后再执行kill命令就可以了。
PS1:上一个程序已经结束,为了演示我又从新运行了程序,所以现在的PID号和上面的那个不一样。
PS2:这里我的系统只开了一个python进程,所以很容易找到程序的PID号,当系统同时开了很多python进程的时候就很难定位要停止的python进程对应的PID号(此时可以通过估计自己程序的执行时间来确定,就是python字样前面的那个00:00:40),这个表示目前这个进程执行了40s。当然还是建议记住PID号,这个估计的找法在有多个进程时容易弄错!!!

五、总结

通过上述方法可以使得程序在关闭客户端后仍然运行,这可以解放我们的电脑。同时相比于那种申请训练任务直接执行的模式,这种连接可以充分发挥桌面调试的优势(任务+调试模式兼得),不至于当程序中存在错误时直接导致训练任务失败,再次运行就需要重新申请。对于不想刷爆实验室集群服务器申请记录的小白来说是十分友好的。文章来源地址https://www.toymoban.com/news/detail-452454.html

到了这里,关于Linux服务器SSH客户端断开后保持程序继续运行的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • NFS服务器简介、在Linux上搭建NFS服务器和客户端,Linux上使用auto(autofs)进行NFS客户端自动挂载和卸载详解

    目录 一.NFS服务器简介 1.含义简介: 2.工作原理简介: 3.RPC服务与NFS服务配合使用 二.NFS配置文件参数命令介绍 1.主配置文件/etc/exports 2.日志文件/var/lib/nfs/ 3.showmount命令 三.主配置文件/etc/exports挂载写法 1.配置nfs服务端和客户端 2.windows客户端挂载测试 3.权限介绍 (1)rw/ro,服

    2024年02月04日
    浏览(57)
  • NFS服务器简介、在Linux上搭建NFS服务器和客户端,使用autofs进行NFS客户端自动挂载和卸载详解

    目录 一.NFS服务器简介 1.含义简介: 2.工作原理简介: 3.RPC服务与NFS服务配合使用 二.NFS配置文件参数命令介绍 1.主配置文件/etc/exports 2.日志文件/var/lib/nfs/ 3.showmount命令 三.主配置文件/etc/exports挂载写法 1.配置nfs服务端和客户端 2.windows客户端挂载测试 3.权限介绍 (1)rw/ro,服

    2024年02月04日
    浏览(56)
  • Linux 基于 TCP 协议的简单服务器-客户端应用

    目录 一、相关函数  1、listen() 2、accept() 3、connect()  4、两种IP地址转换方式  5、TCP和UDP数据发送和接收函数对比 5、log.hpp自定义记录日志 二、udp_server.hpp单进程版本 三、tcp_server.cc 四、Telnet客户端(代替tcp_client.cc) 五、多进程实现udp_server.hpp 1、多进程版本一 2、tcp_client.

    2024年04月27日
    浏览(51)
  • Linux下TCP网络服务器与客户端通信程序入门

    实现客户端连接服务器,通过终端窗口发送信息给服务器端,服务器接收到信息后对信息数据进行回传,客户端读取回传信息并返回。 服务器当前IP地址要知道 建立socket 绑定本地IP地址并设置端口号 知道服务器的IP地址和端口号 然后进行连接

    2024年02月14日
    浏览(62)
  • Linux网络编程:Socket服务器和客户端实现双方通信

    目录 一,什么是网络编程 二,为什么使用端口号 三,TCP协议与UDP协议 ①TCP(传输控制协议) ②UDP(用户数据报协议,User Data Protocol) ③总结归纳 四,Socket服务器和客户端的开发流程 五,服务器和客户端相关API说明 ①socket()函数 ②bind()函数 ③listen()函数 ④accept()函数 ⑤客户端

    2024年02月11日
    浏览(71)
  • 一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)

    参考大佬文章: 一台机器最多能撑多少个TCP连接? 今天掰扯清楚! 这个问题要分场景,先说下结论: 客户端: 最多支持TCP连接数 = IP数 * 端口数 = IP数 * 65535 ,其中的IP数是由于linux下可以配置多IP 服务端:取决于linux服务器的内存大小, 内存数 / 静默TCP连接所占大小 3.3k ,

    2024年02月09日
    浏览(63)
  • Linux系统编程,使用C语言实现简单的FTP(服务器/客户端)

    前言 跟着上官社长 陈哥花了一个月的时间终于把Linux系统编程学的差不多了,这一个月真的是头疼啊,各种bug,调的真心心累,不过好在问题都解决掉了,在此也感谢一下答疑老师,给我提供了很多的思路,本文章是对前段时间学习Linux,做一个小小的总结,才疏学浅,只学

    2024年02月12日
    浏览(72)
  • Linux网络编程:socket、客户端服务器端使用socket通信(TCP)

    socket(套接字),用于网络中不同主机间进程的通信。 socket是一个伪文件,包含读缓冲区、写缓冲区。 socket必须成对出现。 socket可以建立主机进程间的通信,但需要协议(IPV4、IPV6等)、port端口、IP地址。          (1)创建流式socket套接字。                 a)此s

    2024年02月11日
    浏览(65)
  • Linux网络编程:线程池并发服务器 _UDP客户端和服务器_本地和网络套接字

    文章目录: 一:线程池模块分析 threadpool.c 二:UDP通信 1.TCP通信和UDP通信各自的优缺点 2.UDP实现的C/S模型 server.c client.c 三:套接字  1.本地套接字 2.本地套 和 网络套对比 server.c client.c threadpool.c   server.c client.c server.c client.c

    2024年02月11日
    浏览(66)
  • Linux网络编程:Socket套接字编程(Server服务器 Client客户端)

    文章目录: 一:定义和流程分析 1.定义 2.流程分析  3.网络字节序 二:相关函数  IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结构(IP+port)) listen函数(设置最大连接数或者说能同时进行三次握手的最

    2024年02月12日
    浏览(85)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包