目前,我有两个服务器在一个EC2实例(MongoDB和bottlepy)上运行.当我连接到实例并启动这两个服务器时,一切正常.但是,当我关闭SSH会话(实例仍在运行)时,我丢失了这两台服务器.退出后有没有办法让服务器保持运行?我Bitvise Tunnelier在Windows 7上使用.我使用的实例是Ubuntu Server 12.04.3 LTS.
Joa*_*kim 16
对于那些从谷歌搜索登陆的人,我想添加tmux作为另一种选择.tmux广泛用于此目的,并预装在新的Ubuntu EC2实例上.
这是一个伟大的答案哈米什·唐纳给一个类似的问题在askubuntu.com过来:
我会使用终端多路复用器 - 屏幕是最知名的,而tmux是这个想法的最新实现.我使用tmux,并建议你这样做.
基本上tmux将在计算机上运行终端(或一组终端).如果在远程服务器上运行它,则可以在没有终端死机的情况下断开它.然后,当您稍后再次登录时,您可以重新连接,并查看您错过的所有输出.
要第一次启动它,只需输入
Run Code Online (Sandbox Code Playgroud)tmux然后,当您想要断开连接时,执行Ctrl+ B,D(即按Ctrl + B,然后释放两个键,然后按d)
再次登录时,您可以运行
Run Code Online (Sandbox Code Playgroud)tmux attach然后你将重新连接到tmux并查看发生的所有输出.请注意,如果您不小心丢失了ssh连接(假设您的网络出现故障),则tmux仍将运行,但它可能认为它仍然连接到连接.您可以告诉tmux从最后一个连接分离并通过运行连接到新连接
Run Code Online (Sandbox Code Playgroud)tmux attach -d实际上,您可以一直使用该
-d选项.在服务器上,我在我的>中有这个.bashrcRun Code Online (Sandbox Code Playgroud)alias tt='tmux attach -d'因此,当我登录时,我可以输入
tt并重新连接.如果需要,可以更进一步>将命令集成到ssh的别名中.我在服务器上运行tmux中的邮件客户端>,我有一个本地别名:Run Code Online (Sandbox Code Playgroud)alias maileo='ssh -t mail.example.org tmux attach -d'这会对服务器执行ssh并在最后运行命令 -
tmux attach -d该-t选项可确保终端启动 - 如果提供了命令,则默认情况下不会在终端中运行.所以现在我可以maileo在本地命令行上运行并连接到服务器和tmux会话.当我从tmux断开连接时,ssh连接也被终止.这显示了如何将tmux用于特定用例,但tmux可以做更多的事情.这个tmux教程将教你更多,还有更多的东西.
如果您需要同时在后台运行多个进程,这可能很有用.为了有效地执行此操作,将为每个会话命名.
启动(并连接到)新的命名会话:
tmux new-session -s session_name
Run Code Online (Sandbox Code Playgroud)
如上所述从任何会话中分离:Ctrl+ B, D.
列出所有活动会话:
tmux list-sessions
Run Code Online (Sandbox Code Playgroud)
连接到命名会话:
tmux attach-session -t session_name
Run Code Online (Sandbox Code Playgroud)
要杀死/停止会话,您有两种选择.一种选择是exit在连接到要杀死的会话时输入命令.另一种选择是使用命令:
tmux kill-session -t session_name
Run Code Online (Sandbox Code Playgroud)
gun*_*ert 10
如果您不想将某个进程作为服务运行(或通过apache模块),您可以(就像我使用IRC一样)使用gnome-screen安装屏幕http://hostmar.co/software-small.
screen 即使你关闭了连接,它也会继续在你的服务器上运行 - 因此你开始运行的每个进程都会继续运行.
| 归档时间: |
|
| 查看次数: |
16044 次 |
| 最近记录: |