35

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

更新解决方案

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

我选择了 Norman Ramsey 的答案作为最喜欢的答案,因为使用 commands 和screen提出了几种解决方案。但是请特别检查 PEZ 的其他答案,然后您将了解屏幕能够做什么。

4

9 回答 9

86

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

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

  1. 使用“screen -dR”启动屏幕会话(习惯使用 -dR)
    • 在一个窗口中运行一些命令
    • CTRL- A,C创建一个新窗口在 vim 中打开一个文件
    • CTRL- A,0返回第一个窗口并对刚刚编辑的文件发出一些命令
    • CTRL- A,1回到你的 vim 会话
    • CTRL- AC对于另一个窗口,也许做“sudo - su”(因为你恰好需要一个完整的 root shell)
    • CTRL- A0并启动后台进程
    • CTRL- AC创建一个新窗口,“tail -f”该后台进程的日志
    • CTRL- A,d断开您的屏幕然后CTRL-D断开与服务器的连接
    • 去度假三周
    • 再次登录服务器并发出“screen -dR”以连接到您现有的屏幕会话
    • CTRL用-检查第四个窗口中的日志A3(就像你一直在那里看着它一样)
    • CTRL- A1再次拿起那个vim会话
    • 我猜你现在开始看照片了?=)

这就像魔术一样。我使用屏幕的时间比我记忆中的要长,但我仍然对它的出色表现感到惊讶。

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

于 2009-01-10T19:20:09.323 回答
30

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

于 2009-01-10T18:58:57.277 回答
10

尝试使用GNU Screen。它允许您一次打开多个 shell。您可以断开与那些正在运行的 shell(即与 Putty 的关闭会话)的连接,他们将继续做他们的事情。

于 2009-01-10T18:48:49.967 回答
9

您正在寻找的是nohup

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

于 2009-01-10T18:48:08.813 回答
5

screen是最好的。

尝试:

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

这个在后台启动命令。

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

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

于 2009-01-11T04:40:35.137 回答
4

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

于 2009-01-10T19:13:47.857 回答
3

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

at像 cron 一样工作,但是是一次性工作。我今天用它来下载一个大文件,而不必让我的会话保持活动状态。

例如:

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

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

维基百科有更多信息at

于 2009-11-13T05:51:38.643 回答
1
./command & disown
于 2009-01-10T18:54:47.877 回答
0
ssh localhost && ./command && exit
于 2014-10-10T06:45:43.580 回答