解决服务器长时间跑代码出现自动断连的问题(推荐使用screen)

一、前言

在好不容易跑通了代码的前提下

愉快的跑了15个小时

结果刚刚出现了自动断开连接服务器的情况出现

尽管程序还在进行中

导师推荐了使用nohup和screen两种方法解决此问题

但是我查询了nohup的用法

发现好像大多数是需要root权限

但是在服务器上跑

学生没有root权限

又不想周末打扰老师

所以直接转用screen方法

二、使用方法

1、安装screen

conda install screen

在这里插入图片描述

2、创建新的会话

!!!注意!!!:screen操作与是否进入虚拟环境是有关系的,此时我已经进入了虚拟环境才使用screen命令

使用screen创建一个新的会话:screen -S KD

(KD是我起的名字,可以随意更改)会清空之前的命令行
在这里插入图片描述

3、跑代码

然后开始打开环境,跑代码
在这里插入图片描述

4、验证(选做)

然后我关掉了ssh,尝试着看看后台有没有继续接着跑(这一步可以不做)

screen -ls	# 查看当前后台运行的列表

在这里插入图片描述
如果发现这一步的screen状态为Attached,而不是正常的Detached

请参考这篇文章进行修复

连接上服务器,会变回正在运行代码的界面(这一步可以不做)

screen -r 44459.KD

在这里插入图片描述
在这里插入图片描述

5、关闭会话

跑完结束可以删掉之前创建的screen:screen -S name -X quit

三、注意

如果不小心手动停止程序

GPU使用率减少了,但是GPU的内存却没有释放

使用nvidia-smi发现,内存还是依然占用状态

此时删除这个screen会话

再次nvidia-smi就会发现,占用的内存释放了

在这里插入图片描述

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;排序类; 3数字 数字类;格式化数字;转换数字进制;生成随机数; 4数组和集合 使用Arrays类;动态调整数组长度;java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;判一个字符串是否是合法的java标识符;使用StringBuffer;IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的格式; 6java异常处理 throw和throws、try和catch;自定义异常类;使用finally;使用异常的技巧和原则; 7 IO输入输出流 获取文件的基本信息;列出指定目录下的文件,并可过滤文件;创建文件和目录;删除文件和目录;移动文件和目录; 复制文件和目录;一个简单的文件搜索器; 多种方式读文件内容, 按字节读取文件内容、按字符读取文件内容、按行读取文件内容、随机读取文件内容; 多种方式写文件内容, 按字节写文件内容、按字符写文件内容、按行写文件内容 ; 添加内容到文件结尾;文件的分割和合并;使用StreamTokenizer统计文件的字符数; 序列化和反序列化对象(将不长用的对象暂时持久化到文件中为对象的序列化,反之用时再把对象恢复到内存为反序列化); 控制对象的序列化和反序列化; 读jar包的资源文件;用zip格式压缩 和解压文件;操作Excel文件;操作Pdf文件;自定义日志文件类; 8线程 线程的启动 和停止;线程的互斥;线程的协作;线程join;生产者、消费者问题;线程的优先级;列出虚拟机中所有的线程;守护线程Daemon;线程池;一个死锁的例子; 定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain.java);标准计算器(Callulator.java);更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框DialogWindows;制作欢迎界面SplashWindow.java; 10 java图形 一个圆形按钮,当单击按钮时颜色发生变化CircleButton.java; 捕捉屏幕相当于键盘上的PrintScreen,CsreenCaputure.java; 缩放图片JPGTransforme.java; 2d图形,实现一个2d画板,能够画2d的线、圆和矩形,能指定图形的颜色并且能够撤销和恢复图形,command.java; 3d图形,Graphic3d.java; 一个时钟程序,能够显示星期和日期,变化背景和透明度Clock.java; 11 java多媒体 滚动的消息,实现一个简单的动画,具有滚动效果的文本消息RollingMessage.java; 三维弹球,BouncingB.java; 贪吃蛇游戏SnakeModel.java; java的声音处理,介绍java中如何处理声音,包括实现响铃,播放wav,au等音频文件,以及控制声音的大小和音量,Beep.java; 媒体播放器,JMFMediaPlayer.java; 12反射 是java程序开发的特征之一,允许java程序对自身进行检查,并能直接操作程序的内部属性; instanceof操作符,instanceof.java; 获取类的信息,ViewClassInfoJrame.java; 动态调用类的方法,CallMetod.java; 13、网络编程 获取URL信息,主要是使用URLConnection类,GetUrlInfo.java; web浏览器,webbrowser.java; 获取IP地址和域名,GetIpAddress.java; Http客户端,httpClient.java; 基本socket编程,介绍socket编程的基本步骤,启动socket服务器后,在打开socket的客户端,在输入框里输入消息发送到服务器服务器受到消息后返回给客户端; Http服务器,httpsever.java; 一个支持多线程的服务器框架,GeneralServer.java; 代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; UDP编程,包括收发udp报文; 聊天室服务器端,Chatserver.java;聊天室客户端,ChatClient.java; Ftp客户端,Mainframe.java; 14数据库 连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用PreparedStatement,动态执行sql语句,UsingPreparedStatement.java; 读写二进制数据,BinaryData.java; 读写Blob数据,blob数据常以二进制形式存储比较大的文件数据,如图片、视频文件等,本文介绍如何往数据库中读写blob数据,BlobData.java; 使用ResultSet更新数据库,UpdateWithResultSet.java; 使用RowSet,.UsingRowSet.java; 调用存储过程,StorageProcedure.java; 一个数据库连接池,JDBCInfo.java; 15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容java的web浏览器中运行的程序; applet时钟,Clock.java; 处理鼠标和键盘,用户在applet上按下键盘时,该实列能把按下的建显示出来,点击鼠标时能把鼠标事件和鼠标坐标显示出来,MouseAndKeyapplet.java; 英文打字小游戏,TypingGame.java; applet间通信; 汉诺塔游戏, 16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore countdownlatch cyclicbarrier exchanger; 17 java与xml 用dom处理xml文档; 用sax处理xml文档; 用xslt转换xml; 对象与xml的转换; 18 java mail 使用smtp协议发送简单邮件; 发送带附件的邮件; 给多人发送邮件; 使用pop3接收邮件; 19jsp与servlet 获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;
### 回答1: "screen 使用时进程了" 通常是指在使用screen工具时,被执行的进程因为某种原因而中了。这可能是由于进程崩溃、网络连接中、权限问题、系统错误等原因导致的。 要确定确切的原因,可以检查screen会话中的日志或使用命令行工具来诊问题。例如,可以使用ps命令查看进程是否仍在运行使用dmesg命令查看系统错误消息,或者检查进程的日志文件以了解进程中的原因。 一些常见的解决方法包括重新启动screen会话、重新启动中的进程、解决权限问题、修复系统错误等。具体的解决方法取决于中的原因。 ### 回答2: 当我们使用`screen`命令时,如果它所连接的进程意外终止,我们可以通过以下步骤来解决这个问题。 首先,我们需要重新连接到`screen`会话。我们可以使用`screen -r [会话名称]`命令来实现这一点。如果只有一个会话,我们可以直接使用`screen -r`命令来重新连接。 如果我们发现无法重新连接到会话,可能是由于会话仍处于活动状态,我们可以尝试使用`screen -D -r [会话名称]`命令来强制连接到会话,并且如果必要,会使会话脱机。 如果重连仍然无效,我们可以尝试在重新连接之前发送一个`screen -X -S [会话名称] quit`命令来终止会话。这将强制终止会话,并且我们可以重新启动一个新的`screen`会话。 另外,我们还可以通过检查活动进程的状态来解决进程开的问题使用`ps`命令可以查看活动进程的列表。我们可以使用`ps aux`来获得完整的进程列表,并找到已开的进程。 找到开的进程后,我们可以尝试重新启动该进程。我们可以使用`kill -CONT [进程ID]`命令来恢复进程的执行。 如果上述方法仍然无效,我们可能需要查看该进程的日志文件或调试输出来解决问题。根据进程的具体情况,我们可以在配置文件或命令行参数中设置日志文件路径或调试模式。 总结起来,当使用`screen`时进程开时,我们可以尝试重新连接会话,强制终止会话,检查和恢复开的进程以及查看日志文件或调试输出来解决问题。 ### 回答3: 当我们使用screen命令创建一个新的会话时,我们可以在该会话中运行多个进程。然而,有时候会出现进程掉的情况。 进程掉的原因可能有很多。一种可能是因为进程本身出现了错误或异常导致崩溃。另一种可能是由于系统资源的限制,比如内存不足或CPU负荷过重,导致进程被终止。 当进程掉时,我们通常可以通过以下几种方式解决这个问题: 1. 查看进程日志:首先,我们可以通过查看进程的日志文件来获取有关进程崩溃的详细信息。日志文件通常会记录进程崩溃时的错误消息、异常堆栈等相关信息,帮助我们确定问题的根本原因。 2. 重新启动进程:一旦我们找到了进程崩溃的原因,我们可以尝试重新启动进程。这可以通过在screen会话中运行启动进程的命令来实现。如果进程在启动时需要特定的参数或配置文件,我们需要确保这些参数和配置文件正确地传递给启动命令。 3. 调整系统资源:如果进程掉是由于系统资源的限制引起的,我们可以尝试调整系统资源以解决问题。这可能包括增加内存容量、优化进程的CPU使用率或者调整系统的负载平衡策略。 4. 更新进程或依赖库:有时,进程的崩溃可能是由于软件版本过旧或存在已知的BUG导致的。在这种情况下,我们可以尝试更新进程或其依赖库到最新的版本,以修复已知问题。 总的来说,当screen会话中的进程掉时,我们需要通过查看日志、重新启动进程、调整系统资源或更新软件等方式来解决问题。关键是要确定开的原因,并采取适当的措施来应对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值