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

我正在使用腻子连接到远程服务器。 我想知道的是,如果有什么方法来写我的命令,让他们继续运行后,我用腻子closures会议。 原因是我不想让计算机始终处于开启状态。 有没有办法做到这一点?

更新与解决scheme

对于我提出的问题,最好的解决scheme是使用提供的命令之一,如nohup ,因为你不必安装任何额外的软件。 但是,如果您使用同一个屏幕,请安装并使用它。 这太神奇了。

我select了诺曼·拉姆齐的答案作为最喜欢的,因为使用命令和屏幕提出了几个解决scheme。 但是请特别检查一下PEZ的其他答案,然后你会看到什么屏幕能够待办事项。

nohupdisownscreen都很好,但screen是最好的,因为与其他两个screen不同的是, screen允许您从远程服务器断开连接,保持一切正常运行,然后重新连接以查看正在发生的事情。 nohupdisown你不能恢复交互。

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

屏幕就像ummmm一样,就像使用VNC或类似的东西连接到GUI的destop,但是对于命令shell的窗口。 您可以在同一个屏幕会话中同时打开几个shell“窗口”。 你可以做这样的东西:

  1. 使用“screen -dR”开始一个屏幕会话(习惯使用-dR)
    • 在一个窗口中运行一些命令
    • CTRLAC创build一个新窗口在vim中打开一个文件
    • CTRLA0返回到第一个窗口,并在您刚刚编辑的文件上发出一些命令
    • CTRLA1返回到你的vim会话
    • CTRLAC的又一个窗口,也许做“sudo su”(因为你只是需要一个完整的root shell)
    • CTRLA0并开始后台进程
    • CTRLAC创build一个新的窗口,“tail -f”这个后台进程的日志
    • CTRLAd断开你的屏幕,然后CTRLD与服务器断开连接
    • 去度假三个星期
    • 再次login到服务器并发出“屏幕-dR”连接到您现有的屏幕会话
    • CTRLA3检查第四个窗口中的日志(这就像你一直在那里一直在看)
    • CTRLA1再次select该vim会话
    • 我猜你现在已经开始了? =)

这就像魔术一样。 我一直在使用屏幕的时间比我所能记得的要长,我仍然为它的血腥程度而感到惊讶。

编辑 :只想提一下现在还有tmux 。 非常喜欢屏幕 ,但有一些独特的function,拆分最突出的窗口。

尝试使用GNU屏幕 。 它允许你一次打开几个炮弹。 而且你可以从那些正在运行的shell中断开连接(比如用Puttyclosures会话),他们会继续做他们自己的事情。

你正在寻找的是nohup 。

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

屏幕是最好的。

尝试:

screen -dmS“MyTail”tail -f / var / log / syslog

这个启动命令在后台。

使用屏幕-r列出,或屏幕-r Mytail进入会话。

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

如果您不能使用screen (例如,因为您的SSH会话正在以编程方式驱动),您也可以使用守护进程作为守护程序来运行程序。

有一种方法对我很好,

像cron这样的工作,但一次性工作。 我今天使用它来下载一个大文件,而不必保持我的会话活着。

例如:

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

你一次通过(在将来),它会给你一个提示。 你input你想要运行的命令,然后点击ctrl + d。 您可以退出会话,并在指定的时间运行命令。

维基百科有更多的信息at

 ./command & disown 
 ssh localhost && ./command && exit