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

目录

1. nohup 命令:

2. tmux 或 screen:

3 final shell 断开后服务器如何继续执行令?

方法一:使用 nohup 命令

方法二:将命令放在后台执行

4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务

(1) 查看后台作业:

(2)将作业移动到前台:

(3) 将作业放到后台:

(4)终止后台作业

5 如果你使用了 nohup 或者在终端关闭后重新连接到服务器,如何管理后台任务?

(1)ps 命令:

(2)pgrep 命令:

(3)pkill 命令:

(4)tmux 或 screen:


如果你使用SSH连接到Linux服务器,并且希望在断开SSH连接后继续运行程序,例如深度学习训练模型需要长时间周期进行,在这期间如果退出服务器客户端或者网页连接,服务器Linux系统会自动关闭所有进程,程序也会随之终止运行(被挂起),你可以使用以下几种方法保证在客户端ssh断开连接后,服务器执行的命令不中断:

1. nohup 命令:

使用nohup命令可以在后台运行程序,而且在SSH连接断开后仍然保持运行。示例:

nohup your_command &

这会将your_command命令在后台运行,并将输出写入nohup.out文件。你可以使用jobs命令来查看后台任务,或者使用ps aux | grep your_command来查看特定命令的运行情况。

2. tmux 或 screen:

使用tmuxscreen是一种更强大的方法,它允许你创建和管理终端会话,而不受SSH连接断开的影响。你可以在tmuxscreen会话中运行你的程序,然后在需要的时候重新连接到会话。示例:

  • 对于 tmux:

tmux
# 在 tmux 会话中运行你的程序
your_command
# 按下 Ctrl-b,然后按下 d 来断开 tmux 会话

对于 screen:

screen
# 在 screen 会话中运行你的程序
your_command
# 按下 Ctrl-a,然后按下 d 来断开 screen 会话

选择使用nohuptmuxscreen取决于你的偏好和需求。tmuxscreen还提供了许多其他功能,例如在多个窗格中同时运行不同的命令。

3 final shell 断开后服务器如何继续执行令?

        在Linux中,当你在终端中执行一个命令,并且希望在终端关闭后该命令继续执行,你可以使用 nohup 命令,或者将命令放在后台执行。下面是两种常用的方法:

方法一:使用 nohup 命令

nohup your_command > output.log 2>&1 &
  • your_command 是你要执行的命令。
  • output.log 是命令输出的日志文件,可以省略。

此命令将 your_command 在后台执行,并将输出写入 output.log 文件。nohup 命令会忽略挂断(hangup)信号,从而使命令在终端关闭后继续执行。

方法二:将命令放在后台执行

your_command &

在命令末尾加上 & 符号,将命令放在后台执行。这样在终端关闭后,命令仍然在后台继续执行。你可以使用 jobs 命令查看后台任务。

请注意,这两种方法都可以在终端关闭后使命令继续执行,但在某些情况下,你可能还需要考虑输出和错误信息的重定向,以及可能产生的日志。

4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务

这个命令会列出当前终端会话中的作业(jobs)信息,包括作业编号、作业状态以及相关的命令。以下是一些常用的 jobs 命令选项:

(1) 查看后台作业:

jobs

(2)将作业移动到前台:

fg %job_number

使用这个命令,你可以将指定编号的作业移动到前台运行。

(3) 将作业放到后台:

bg %job_number

这个命令可以将指定编号的作业从前台移到后台运行。

(4)终止后台作业

kill %job_number

使用这个命令可以终止指定编号的后台作业。

在上述命令中,%job_number 是作业的编号,可以使用 jobs 命令查看。

请注意,这些命令在当前终端会话中有效。如果你使用了 nohup 或者在终端关闭后重新连接到服务器,你可能需要使用其他方式来管理后台任务,比如使用 ps 或者其他作业控制工具。

5 如果你使用了 nohup 或者在终端关闭后重新连接到服务器,如何管理后台任务?

        如果你在终端关闭后重新连接到服务器,可能需要使用其他工具来管理后台任务,因为 jobs 命令只能查看当前终端会话中的作业。以下是一些其他用于管理后台任务的工具和命令:

(1)ps 命令:

使用 ps 命令可以列出当前正在运行的进程。你可以使用以下命令来查找特定的进程:

ps aux | grep your_command

这会列出包含 your_command 的所有进程。通过查看进程的PID(进程ID),你可以确定后台任务的运行情况。

(2)pgrep 命令:

pgrep 命令可以通过进程名来查找进程的PID。例如

pgrep your_command

这将返回包含 your_command 的所有进程的PID。

(3)pkill 命令:

使用 pkill 命令可以通过进程名终止进程。例如:

pkill your_command

这将终止所有包含 your_command 的进程。

(4)tmux 或 screen:

如果你在使用 tmuxscreen,你可以使用相应的命令来查看和管理后台会话。例如,在 tmux 中,你可以使用以下命令:

tmux list-sessions

 这会列出所有 tmux 会话,你可以重新连接到其中一个会话以查看和管理后台任务。

这些命令和工具可以帮助你在终端关闭后重新连接到服务器时查看和管理之前在后台运行的任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/219288.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rsyslog出现Unit rsyslog.service is masked不可用问题解决

博主在测试将日志发送到日志服务器的功能时遇到了rsyslog服务不可用的问题,具体来说,就是执行systemctl restart rsyslog或者 service rsyslog restart命令时,出现了标题中所述的Unit rsyslog.service is masked问题。网上查找了很多资料&…

使用VC++设计程序对一幅256级灰度图像进行全局固定阈值分割、自适应阈值分割

图像分割–全局固定阈值分割、自适应阈值分割 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章: 01- 一元熵值、二维熵值 02- 图像平移变换,图像缩放、图像裁剪、图像对角线镜像以及图像的旋转 03-邻域平均平滑算法、中值滤波算法、…

【DevOps】基于 KubeSphere 的 Kubernetes 生产实践之旅(万字长文)

基于 KubeSphere 的 Kubernetes 生产实践 1.KubeSphere 简介1.1 全栈的 Kubernetes 容器云 PaaS 解决方案1.2 选型理由(从运维的角度考虑) 2.部署架构图3.节点规划3.1 软件版本3.2 规划说明3.2.1 K8s 集群规划3.2.2 存储集群3.2.3 中间件集群3.2.4 网络规…

【开源】基于Vue+SpringBoot的农家乐订餐系统

项目编号: S 043 ,文末获取源码。 \color{red}{项目编号:S043,文末获取源码。} 项目编号:S043,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核…

Int8量化算子在移动端CPU的性能优化

本文介绍了Depthwise Convolution 的Int8算子在移动端CPU上的性能优化方案。ARM架构的升级和相应指令集的更新不断提高移动端各算子的性能上限,结合数据重排和Sdot指令能给DepthwiseConv量化算子的性能带来较大提升。 背景 MNN对ConvolutionDepthwise Int8量化算子在…

Elasticsearch集群部署 head监控插件 Kibana部署 Nginx反向代理 Logstash部署

一、组件介绍1、Elasticsearch:2 、Logstash3、Kibana4、Kafka:5、Filebeat: 二、 Elasticsearch集群部署服务器创建用户安装ES修改配置文件创建数据和日志目录设置JVM堆大小 #7.0默认为4G修改安装目录及存储目录权限系统优化(1)增…

Linux:docker容器操作(4)

docker的基础操作 Linux:docker基础操作(3)-CSDN博客https://blog.csdn.net/w14768855/article/details/134616198?spm1001.2014.3001.5501 我这里准备了两个镜像 镜像加载到容器 docker create [选项] 镜像 运行的程序 -i 让容器的标准输…

<JavaEE> 线程的五种创建方法 和 查看线程的两种方式

目录 一、线程的创建方法 1.1 继承 Thread -> 重写 run 方法 1.2 使用匿名内部类 -> 继承 Thread -> 重写 run 方法 1.3 实现 Runnable 接口 -> 重写 run 方法 1.4 使用匿名内部类 -> 实现 Runnable 接口 -> 重写 run 方法 1.5 使用 lambda 表达式 二…

【Linux】进程间通信——system V共享内存、共享内存的概念、共享内存函数、system V消息队列、信号量

文章目录 进程间通信1.system V共享内存1.1共享内存原理1.2共享内存数据结构1.3共享内存函数 2.system V消息队列2.1消息队列原理 3.system V信号量3.1信号量原理3.2进程互斥 4.共享内存的使用示例 进程间通信 1.system V共享内存 1.1共享内存原理 共享内存区是最快的IPC形式…

2018年1月22日 Go生态洞察:Hello, 中国!

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

罗技M590鼠标usb优联连接不上

手里有一个罗技M590鼠标从18年4月一直用到现在,质量很好,除了滚轮有些松别的没毛病。最近一台笔记本电脑办公不太够用,又领了一个台式机,就想到M590支持双模连接,并且支持Flow,就把usb优联接收器从电池仓拿…

球面的表面积

此推导需要用到重积分的知识,另外关于曲面的面积公式可以看我之前的博客