首页 > 系统相关 >ssh连接linux服务器中断后,如何让命令继续在服务器运行

ssh连接linux服务器中断后,如何让命令继续在服务器运行

时间:2024-12-02 15:54:56浏览次数:5  
标签:窗口 byobu ssh linux 进程 服务器 连接

ssh连接linux服务器中断后,如何让命令继续在服务器运行

这个问题也许是我们这些小白比较头疼的问题,尤其对于做机器学习需要花很久的时间才能训练出一个结果。然而就在这时,因为各种不可抗力我们使用ssh连接服务器时,ssh的窗口突然断开了连接,那么在服务器上跑的程序就也跟着断掉了,之前所有跑的数据也将丢失,这样将会浪费我们大量的时间。

参考链接:

http://blog.csdn.net/gukesdo/article/details/6901902

为什么ssh一旦断开我们的进程也将会被杀掉?

元凶:SIGHUP 信号

让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。

在Linux/Unix中,有这样几个概念:

进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。

会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。

会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

根据POSIX.1定义:

挂断信号(SIGHUP)默认的动作是终止程序。

当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。

如果会话期首进程终止,则该信号发送到该会话期前台进程组。

一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。

这里我认为我们的进程被杀掉也就是因为ssh与服务器之间的通信断掉了,这个通信断掉之后linux程序就默认将该连接下的所有进程都杀掉

解决方案

针对上面的问题,上面的参考链接中也有讲解,在此进行一个简单的整理。

这里主要有三个方案,一个是使用nohup指令,一个是使用screen指令,最后一个是screen的升级版byobu。这三个指我更倾向于使用byobu指令,因为byobu指令更加的强大,是screen的升级版本,并且界面也比较友好。

byobu命令

byobu感觉就是screen的一个升级版本,界面比较友好,操作也比较方便。一般Ubuntu系统服务器开始的时候默认没有安装,我们需要手动在服务器中安装byobu:

sudo apt install byobu

安装好后在自己的ssh连接窗口输入byobu命令进入byobu窗口

byobu

在窗口中输入想要执行的命令

byobu的窗口基本简单操作

注意:直接在ssh连接窗口的shell中按下就行,不是说在服务器上按。

按键 说明
F2 新建窗口,当一个窗口已经在执行程序时,还想执行其他程序是可以新建一个窗口
F3 移动到前一个窗口
F4 移动到后一个窗口
F6 退出byobu窗口
F9 打开byobu菜单,查看帮助信息的配置信息

关闭当前窗口其实Ctrl+D就可以完成

剩余操作我们可以F9查看byobu的帮助即可。

如果我们想要一登陆就显示byobu界面的话,可以使用指令

byobu-enable

如果想取消一登陆就显示byobu界面可以是用指令

byobu-disable

byobu相比之下继承了screen的所有优点,并且拥有了更加方便快捷的操作界面,同时在界面下方还能很好的显示目前计算机的硬件使用情况,十分方便。

关闭ssh连接窗口后,想重新看到运行的程序

先打开byobu窗口,在ssh窗口输入

byobu

然后可以直接看到程序运行情况

标签:窗口,byobu,ssh,linux,进程,服务器,连接
From: https://www.cnblogs.com/77ff/p/18582025

相关文章

  • vscode连接远程服务器vscode 未能下载vscode服务器(XHR failed)
    前言全局说明一直使用Vscode连接服务器调试代码,今天突然连接不上了,网上搜索了好多,都是没有效果。一、说明1.1环境:Windows11家庭版23H222631.3737VScode版本:1.91.0(usersetup)Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMP......
  • 使用Go语言开发的一款轻量级可视化服务器监控监控软件
    大家好,我是兔兔,兔兔答题的开发者。兔兔答题是一款简单、易用的答题系统,可应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。兔兔答题官网文档进入给大家分享的内容是一款轻量级的日志可视化图形工具。在兔兔答题在部......
  • 将Linux内核参数ip_forward设置为0后,以下那些功能可能受影响:Nginx、LVS、Keepalived、
    将Linux内核参数ip_forward设置为0后,以下那些功能可能受影响:Nginx、LVS、Keepalived、iptables、firewalld、HAProxy将Linux内核参数ip_forward设置为0后,影响的是系统的IP数据包转发功能。它决定了Linux是否能够作为路由器转发非本机目标的数据包。当其值为0时,系......
  • 【云原生系列】如何判断哪家云服务器提供商更适合我
    选择合适的云服务器提供商是每个企业在进行云迁移时都会遇到的关键决策。随着云计算的广泛普及,各大云服务商都提供了丰富的服务和解决方案。但问题来了,怎么判断哪家云服务器提供商更适合自己的需求呢?这个问题没有统一答案,因为每个企业的需求、预算和技术背景各不相同。今天......
  • Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌
    一、前言首先泼一盆冷水,在不同的电脑上实现完完全全的帧同步理论上是不可能的,市面上所有号称帧同步的播放器,同一台电脑不同拼接视频可以通过合并成一张图片来绘制实现完完全全的帧同步,不同电脑,受限于网络的延迟,命令交互的时间占用,不同硬件之间的主频偏差等,肯定会有些许的误差,只要......
  • 渗透测试之Web基础之Linux病毒编写——泷羽sec
    声明:        学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频(bilibili.com)https://space.bilibili.com/350329294导读:时刻保持谦逊......
  • Linux C/C++编程之静态库
    【图书推荐】《LinuxC与C++一线开发实践(第2版)》_linuxc与c++一线开发实践pdf-CSDN博客《LinuxC与C++一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)10.3.1 静态库的基本概念静态库文件的后缀为.a,在Linux下一般命名为libxxx.a。当......
  • linux将命令挂在后台执行
    在日常工作中,可能会需要执行一些脚本,数据备份,数据迁移等短时间无法结束的任务,最好将其挂后台执行,这样可以保证命令的持续性,确保任务不受终端异常状态影响最佳实践eg:nohupCommand>output.log2>&1&">"符号用于将命令的`标准输出`重定向到指定的文件中>outlog.log表示将......
  • Linux C/C++编程之动态库
    【图书推荐】《LinuxC与C++一线开发实践(第2版)》_linuxc与c++一线开发实践pdf-CSDN博客《LinuxC与C++一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)10.4.1 动态库的基本概念动态库又称为共享库。这种类型的库的命名规则一般是libx......
  • Linux的一些常用命令
    1.查看系统信息系统版本uname-acat/etc/redhat-release查看CPUlscpu内存free-h硬盘df-Th 2.firewall防火墙启动:systemctlstartfirewalld查状态:systemctlstatusfirewalld停止:systemctldisablefirewalld禁用:systemctlstopfirewalld在开机时启用一......