在 shell 中运行命令,并在关闭会话时继续运行该命令

2024-11-08 09:04:00
admin
原创
29
摘要:问题描述:我正在使用 Putty 连接到远程服务器。我想知道是否有任何方法可以编写命令并允许它们在关闭与 Putty 的会话后继续运行。这样做的原因是我不想一直开着电脑。有什么办法吗?更新解决方案对于我的问题,最好的解决方案是使用提供的命令之一,例如nohup,因为您不必安装任何其他软件。但如果您遇到同样的问...

问题描述:

我正在使用 Putty 连接到远程服务器。我想知道是否有任何方法可以编写命令并允许它们在关闭与 Putty 的会话后继续运行。这样做的原因是我不想一直开着电脑。有什么办法吗?

更新解决方案

对于我的问题,最好的解决方案是使用提供的命令之一,例如nohup,因为您不必安装任何其他软件。但如果您遇到同样的问题,请使用 screen,安装并使用它。它太棒了。

我选择了 Norman Ramsey 的答案作为收藏,因为他提出了几种使用命令和屏幕的解决方案。但请查看其他答案,特别是 PEZ 的答案,然后您就会了解屏幕可以做什么。


解决方案 1:

屏幕!这是自切片面包以来最好的东西。(是的,我知道其他人已经建议过了,但它太好了,全世界都应该加入并建议它。)

screen 就像,就像,嗯... 就像使用 VNC 或类似的东西连接到 GUI 桌面,但用于命令 shell 窗口。您可以在同一个 screen 会话中同时打开多个 shell“窗口”。您可以执行以下操作:

  1. 使用“screen -dR”启动屏幕会话(习惯使用-dR)

* 在一个窗口中运行一些命令
* 按`CTRL`- `A`,`C`创建一个新窗口,在 vim 中打开一个文件
* 按`CTRL`- `A`,`0`返回第一个窗口并对刚刚编辑的文件发出一些命令
* `CTRL`- `A`,`1`返回到你的 vim 会话
* `CTRL`- `A`,`C`对于另一个窗口,也许执行“sudo - su”(因为你恰好需要一个完整的 root shell)
* `CTRL`-`A`并`0`启动后台进程
* `CTRL`- `A`,`C`创建一个新窗口,“tail -f”该后台进程的日志
* `CTRL`- `A`,`d`断开屏幕连接,然后`CTRL`-`D`断开与服务器的连接
* 去度假三个星期
* 再次登录服务器并发出“screen -dR”以连接到您现有的屏幕会话
* `CTRL`使用-检查第四个窗口中的日志`A`(`3`就像你一直在那里观察它一样)
* `CTRL`- `A`,`1`再次启动该 vim 会话
* 我想你现在已经开始明白了吧?=)

这就像魔术一样。我使用 Screen 的时间已经不记得有多长了,但我仍然对它的出色表现感到惊讶。

编辑:只想提一下现在还有tmux。非常像screen,但有一些独特的功能,其中最突出的是分割窗口。

解决方案 2:

nohupdisownscreen都很好,但screen是最好的,因为与其他两个不同,screen它允许您断开与远程服务器的连接,保持一切运行,然后稍后重新连接以查看发生了什么。使用nohupdisown您无法恢复交互。

解决方案 3:

尝试使用GNU Screen。它允许您同时打开多个 shell。并且您可以断开与正在运行的 shell 的连接(即关闭与 Putty 的会话),它们将继续执行其工作。

解决方案 4:

您正在寻找的是nohup。

请参阅 wiki 链接以了解如何使用它。

解决方案 5:

screen是最好的。

尝试:

screen -dmS "MyTail" tail -f /var/log/syslog 

该命令在后台启动。

使用screen -r列出,和或screen -rMytail进入会话。

如果有更多用户需要访问同一个会话,请使用:screen -rx MyTail,然后两个或多个用户共享该会话。

解决方案 6:

如果您无法使用screen(因为例如您的 SSH 会话是由编程驱动的),您也可以使用daemonize将程序作为守护进程运行。

解决方案 7:

对我来说很有效的一种方法是at

at工作原理与 cron 类似,但只用于一次性任务。我今天使用它下载了一个大文件,而不必保持会话处于活动状态。

例如:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

您传递at一个时间(将来),它会给您一个提示。您输入要在当时运行的命令,然后按 ctrl+d。您可以退出会话,它会在指定的时间运行命令。

维基百科有更多关于的信息at

解决方案 8:

./command & disown

解决方案 9:

ssh localhost && ./command && exit
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用