当前位置: 首页 > news >正文

断开SSH连接后继续执行任务

断开SSH连接后继续执行任务

我们经常需要通过 SSH 连接到远程 Linux 服务器来执行各种任务。但有时,我们希望即使在断开 SSH 连接后,这些任务也能继续运行。

事前使用 nohup命令

nohup,可以使运行的命令忽略 SIGHUP 信号。因此,即使退出登录,程序仍旧会继续执行。通常情况下,在 nohup 命令尾部加上 & 字符,才能将命令放至后台执行。具体示例如下所示:

nohup python hello.py > nohup.out &

在命令头尾分别加上 nohup& 后回车,可以看到 nohup 输出了一行信息,再 Enter 键就跳回了 Shell 命令行,此时命令已经在后台执行了,nohup 将命令的输出重定向至当前目录的 nohup.out 文件中。同时,nohup 会将对应程序的 PID 输出,PID 可用于需要中断进程时结束进程。

程序监控

执行如下命令,可以持续的查看 nohup.out 的输出,达到监控程序的效果。

tail -f nohup.out

查看 PID

使用 ps 命令查找该进程的进程 ID(PID)。例如,执行以下命令可以查看所有运行中的 Python 进程:

ps -ef | grep python

结束进程

结束进程使用 kill 命令,其语法格式如下:

kill [signal] PID

其中,signal 表示要发送的信号类型,PID 表示要结束的进程 ID。

常用的信号类型包括:

  • 15(SIGTERM):默认信号,表示终止进程。
  • 9(SIGKILL):强制终止进程,不能被进程忽略或捕获。

我们通常使用以下命令即可:

kill -9 PID

缺点

使用 nohup 命令的一个缺点就是不方便进行程序监控,只能通过写入到文件中的方式来”曲线救国“,但是这种方式可能导致写入的文件非常大,占据大量磁盘资源。

事后使用 disown 命令

将正在运行中的任务放入后台

首先,如果任务已经在前台运行,可以通过按下 Ctrl+Z 来暂停它。然后,输入 bg 命令将暂停的任务放入后台继续运行。

Ctrl + Z
bg

将任务从当前会话中移除

为了确保任务在 SSH 会话关闭后仍然运行,可以使用 disown 命令。首先,通过 jobs 命令查看后台任务的编号,然后使用 disown 命令将其从当前会话中移除。

jobs
disown -h %jobid # 例如 disown -h %1

其中 jobid 是通过 jobs 命令查看到的后台任务编号。这样,即使 SSH 会话关闭,任务也会继续在后台运行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • grpc-go服务端接口添加
  • SPE连接器技术革新汽车制造业
  • 恒指头肩底要走出来了?
  • 实践致知第12享:如何新建一个Word并设置格式
  • Python数据分析案例50——基于EEMD-LSTM的石油价格预测
  • 雷达视频采集卡 HPx-410
  • 技术速递|宣布为 .NET 升级助手提供第三方 API 和包映射支持
  • 2024亚太杯中文赛数学建模B题word+PDF+代码
  • Spring Boot集成fastjson2快速入门Demo
  • 【大模型LLM面试合集】大语言模型基础_NLP面试题
  • uboot学习:(一)基础认知
  • Linux运维:MySQL中间件代理服务器,mycat读写分离应用实验
  • ceph存储
  • 大语言模型应用--AI工程化落地
  • 高中数学:立体几何-基本立体图形分类
  • 【前端学习】-粗谈选择器
  • Android优雅地处理按钮重复点击
  • HTML中设置input等文本框为不可操作
  • IndexedDB
  • JAVA SE 6 GC调优笔记
  • JavaScript创建对象的四种方式
  • JavaScript对象详解
  • Java深入 - 深入理解Java集合
  • JS字符串转数字方法总结
  • React组件设计模式(一)
  • tab.js分享及浏览器兼容性问题汇总
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • webpack+react项目初体验——记录我的webpack环境配置
  • Windows Containers 大冒险: 容器网络
  • 阿里研究院入选中国企业智库系统影响力榜
  • 关于Java中分层中遇到的一些问题
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 你不可错过的前端面试题(一)
  • 前端知识点整理(待续)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 最简单的无缝轮播
  • python最赚钱的4个方向,你最心动的是哪个?
  • Spring Batch JSON 支持
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #### golang中【堆】的使用及底层 ####
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $.ajax()方法详解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (备忘)Java Map 遍历
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (接口封装)
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite