目前,我有兩臺運行在EC2
實例(MongoDB
和bottlepy
)上的服務器。當我將SSH連接到實例並啓動這兩臺服務器時,一切正常。但是,當我關閉SSH會話(實例仍在運行)時,我丟失了這兩臺服務器。退出後有沒有辦法讓服務器繼續運行?我在Windows 7上使用Bitvise Tunnelier
。 我使用的實例是Ubuntu Server 12.04.3 LTS。保持服務器在ssh終止後在EC2實例上運行
回答
如果你不想運行某些程序作爲服務(或通過Apache模塊),你可以(像我使用IRC做)使用gnome-screen Install screen http://hostmar.co/software-small。
screen
即使關閉了連接,您的服務器也會繼續運行 - 因此您啓動的每個進程也將繼續運行。
如果您提供了有關您的環境的更多信息,但假設它是Ubuntu Linux,則可以在後臺啓動服務或作爲守護程序啓動服務。
sudo service mongodb start
nohup python yourbottlepyapp.py &
您也可以使用Apache mod_wsgi的運行bottle.py的應用程序(如果你想在一個SSH會話,並希望防止它關閉文件描述符使用的nohup)。 (在apache服務下運行)更多的信息在這裏:http://bottlepy.org/docs/dev/deployment.html
希望這會有所幫助。
增加:(你的進程仍然運行退出後的SSH會話)
拿這個例子time.py
import time
time.sleep(3600)
然後運行:
$ python3 time.py &
[1] 3027
$ ps -Af | grep -v grep | grep time.py
ubuntu 3027 2986 0 18:50 pts/3 00:00:00 python3 time.py
$ exit
然後通過ssh回服務器
$ ps -Af | grep -v grep | grep time.py
ubuntu 3027 1 0 18:50 ? 00:00:00 python3 time.py
個
過程仍在運行(沒有TTY通知)
我正在運行Ubuntu,我會測試你的建議。謝謝! –
我認爲mongodb正在運行,因爲'mongod'包含在init.d文件夾中。但是這個聲明沒有成功'python yourbottlepyapp.py&'... –
它是做什麼的?該程序退出? – Rico
您將希望啓動的服務與控制終端斷開連接。我建議你使用nohup
來做到這一點,例如
ssh my.server "/bin/sh -c nohup /path/to/service"
你可能需要把在那裏的&
(在引號)在後臺運行。
正如其他人所評論的,如果您運行適當的init腳本來啓動/停止服務(或ubuntu的service
命令),則不應該看到此問題。
對於那些從谷歌搜索這裏登陸,我想添加tmux作爲另一種選擇。 tmux廣泛用於此目的,並且已預安裝在新的Ubuntu EC2實例上。
在askubuntu處,Hamish Downer給similar question給出了很好的回答。com:
我會使用一個終端多路複用器 - 屏幕是最有名的,tmux是這個想法的最近實現。我使用tmux,並會建議你這樣做。
基本上tmux將在計算機上運行一個終端(或一組終端)。如果您在遠程服務器上運行它,則可以在沒有終端死機的情況下斷開連接。然後,當您稍後再次登錄時,您可以重新連接,並查看您錯過的所有輸出。
要開始它的第一次,只需鍵入
tmux
然後,當要斷開連接,你做按Ctrl + 乙,d(即按Ctrl + B,然後鬆開這兩個鍵,然後按d。
當您再次登錄時,你可以運行
tmux attach
,您將重新連接到tmux並查看發生的所有輸出。請注意,如果您意外丟失了ssh連接(說您的網絡出現故障),tmux仍然會運行,儘管它可能認爲它仍然連接到連接。你可以告訴TMUX從最後連接到分離,並通過運行
tmux attach -d
事實上,你可以使用
-d
選項所有的時間連接到您的新的連接。在服務器上,我有這個在我的>.bashrc
alias tt='tmux attach -d'
所以,當我登錄我可以只輸入
tt
並重新安裝。你可以更進一步>如果你想要並將命令集成到ssh的別名中。我的服務器上運行郵件客戶端>裏面TMUX,我有一個本地別名:alias maileo='ssh -t mail.example.org tmux attach -d'
這確實SSH服務器和運行在最後的命令 -
tmux attach -d
的-t
選項確保終端啓動 - 如果提供了命令,則默認情況下它不會在終端中運行。因此,現在我可以在本地命令行上運行maileo
並連接到服務器和tmux會話。當我從tmux斷開連接時,ssh連接也被終止。這顯示瞭如何爲您的特定用例使用tmux,但tmux可以做得比這更多。這tmux tutorial會教你多一點,而且還有更多。
- 1. 在運行Tomcat的EC2實例上終止HTTPS
- 2. AWS Ealstic Beanstalk:在運行PHP的EC2實例上終止HTTPS
- 3. 無法在ubuntu 10.10服務器上運行cronjob,EC2實例
- 4. 在amazon EC2上運行websocket服務器
- 5. 無法在Amazon EC2實例中運行兩臺服務器
- 6. 如何終止後臺的ssh實例
- 7. 確保RMI只在一個服務器實例上運行
- 8. Boto3:創建,執行shell命令,在ec2實例上終止
- 9. 無法ssh到443端口,我在Amazon EC2上運行的ssh一個在Amazon EC2服務器
- 10. 在ec2實例上運行sudo命令
- 11. 無法在EC2實例上運行nginx
- 12. RoR - 「服務器已在運行」 - 如何終止運行的服務器?
- 13. Python ssh - 在腳本終止後保持連接打開
- 14. 確保停止EC2實例
- 15. AWS似乎在終止後自動啓動另一個EC2實例,並終止
- 16. 保持Derby網絡服務器在生成後運行
- 17. 在運行腳本時將SSH轉換爲EC2實例
- 18. 由java運行ssh commande在ec2實例中啓動腳本
- 19. minimongo是否在運行Meteor的服務器實例上存在?
- 20. 保持應用程序始終在Android上運行在後臺
- 21. 如何在AWS AutoScaling終止EC2實例時在Tomcat上完成長時間運行的任務?
- 22. 在22以外的端口上運行Amazon EC2實例上的ssh
- 23. AWS縮放EC2容器服務的終止保護
- 24. 在EC2實例上安裝後無法運行節點
- 25. 如何保持在jenkins服務器上運行的硒
- 26. 在ubuntu ec2實例上安裝tomcat 6和mysql服務器
- 27. 我的EC2服務器實例在PHPU中的無限循環上運行。我該如何阻止它?
- 28. Android:始終在後臺運行服務?
- 29. 在使用Jmeter的EC2實例上執行Linux命令ssh sampler
- 30. Amazon EC2實例無法停止/終止默認環境實例
屏幕是一個不錯的選擇,特別是對於OP的用例。很多人也喜歡tmux,這對於更高級的使用需求來說可能是更好的選擇 – adavea
如何在EC2 Ubuntu實例上安裝它,我只有會話 – AMH