Bağlantı kesildikten sonra SSH Oturumlarını çalışır durumda tut


208

Bazen eve gitmeden önce başlatmak istediğim uzun süren süreçlerim var, bu yüzden süreci başlatmak için sunucuya bir SSH oturumu açarım, ancak daha sonra dizüstü bilgisayarımı kapatmak ve eve gitmek istiyorum, daha sonra akşam yemeğinden sonra, istiyorum İşten ayrılmadan önce başladığım süreci kontrol et. Bunu SSH ile nasıl yapabilirim? Anladığım kadarıyla eğer SSH bağlantınızı koparırsanız, sunucuda oturum açma oturumunuzu da koparacaksınız, bu nedenle uzun süren işlemi öldüreceksiniz.

Yanıtlar:


205

nohupİşleminizin kilitlenme sinyalini yok saymasını sağlamak için kullanın :

$ nohup long-running-process &
$ exit

20
Budur. Ekran veya tmux kurmanıza gerek yok. Bu aslında bunu yapmanın en güzel yolu. Tabii ki 'ekran' veya 'tmux' hem harika uygulamalardır hem de gerektiğinde kullanılmaları gerekir, ancak arka plandan çıkıp giriş yapabileceğiniz bir işlem yürütmek kadar basittir.
saat

2
mutsuzluk gibi mi?
cjac

28
Benzer amaçları var, ancak birçok yönden farklı. nohupSIGHUP ile kesişir, böylece koşturan kabuk durmadan devam eden tüm çocuklarına SIGHUP'u bırakır ve göndermezse long-running-processölmez. disownsadece belirtilen işi Bash'in alt listesinden kaldırır, böylece SIGHUP göndermeye çalışmaz. nohupkabuğundan ayrı bir programdır, bu yüzden tüm kabukları ile çalışır, oysa disownbir Bash yerleşiktir. nohupÇalıştırılacak komutu kabul eder, oysa disownyalnızca iş başladıktan sonra çalışır ve arka plana geçiş yaptınız, böylece kabuğa geri dönebilirsiniz.
Warren Young

3
Yanı sıra, terminal oturumları ile başa çıkmak için bazı kolay yollar - nohup ve inkâr aşina olanlar için harika kısa incelemesi serverwatch.com/tutorials/article.php/3935306/...
Dan

7
tail -f nohup.outDöndüğünde neler olup bittiğini kontrol etmek için.
Ricardo Stuven

141

GNU ekranını kullanmak istiyorsun. Süper harika!

ssh me@myserver.com
screen               #start a screen session
run-a-long-process

CTRL+ a, dekran oturumunuzdan ayrılmak için

exit                 #disconnect from the server, while run-a-long-process continues

Dizüstü bilgisayarınıza geri döndüğünüzde:

ssh me@myserver.com
screen -r            #resume the screen session

Ardından uzun süren sürecinizin ilerlemesini kontrol edin!

screençok kapsamlı bir araçtır ve açıkladığımdan çok daha fazlasını yapabilir. Bir ekran oturumunda, ctrl + a ,? birkaç ortak komut öğrenmek için. Muhtemelen en yaygın olanları:

  • CTRL+ a, cyeni bir pencere oluşturmak için
  • CTRL+ a, nekran oturumunuzdaki bir sonraki pencereye geçmek için
  • CTRL+ a, pekran oturumunuzdaki önceki pencereye geçmek için
  • birçok farklı sistemden giriş yaparsanız, yanlışlıkla yanlışlıkla farklı bir bilgisayardaki etkin bir ekran oturumuna bağlı kaldınız. bu nedenle, screen -d -rekran oturumuma başka bir kabuk eklenmişse, mevcut sistemime devam etmeden önce bağlantının kesileceğinden emin olmak için her zaman devam ederim.

8
tmux modern bir ekran analogudur.
zvolkov

Modern hakkında bilgim yok, ancak tmux'un varsayılan anahtar öneki (Ctrl + b) tuşları bash / emacs tuşlarına alıştıysanız yardımcı olur.
saat

2
nedense paylaşılan bir terminal istiyorsanız ekran oldukça serin. Bir ekran oluşturun screen -S nameve diğer arkadaşınızın buna bağlanmasına izin verin screen -x name.
Patrick

1
tmuxile tmuxinatorben tercih ederken, fantezi kurulumları için büyük bir kombinasyonudur screenhızlı ve basit bir çözüm olarak.
earthmeLon

Bu cevap en iyisidir .. Beğendim. Mükemmel araştırma
Jaffer Wilson

42

Önceden planlama ve kurulum yapmadıysanız screen, aşağıdakileri yapın:

  1. İşleminiz arka planda çalışıyorsa: # 3, başka: Ctrl-Zön plan işlemini askıya almak için. Bu, askıya alınan sürecin iş sayısını bildirir, örneğin:

    [1]+  Stopped                 processName
    
  2. processNameArka plana gönder bg %1(# izleyen iş ne kullanıyorsa %). Bu processNamearka planda devam edecektir .

  3. İnkâr processName ile disown %1veya disown PID. -hGeçerli kabuğunuzu sonlandırana kadar sahipliğini korumak istiyorsanız bayrağı kullanın .


5
Bunun için teşekkürler! Çalışan bir işim vardı ve çalışmaya devam edemeyeceğimi düşündüm çünkü &işe başladığımda hiç kullanmadım . Bu harika iş gibi görünüyor!
Matt

4
Bu harika! Linux'un bu gibi aktif işlemlerin kontrolünü transfer etmenize izin vereceğini asla bilmiyordum. Uzun süredir devam eden bir işlemin ortasında sunucumun içine SSH yaparken pilimin tükenmesinden korkuyordum ve bu benim için cevaptı!
Pluto

14

Kullanmak istediğiniz ekran byobu adı verilen ekran etrafında kullanıcı dostu bir paketleyicidir.

Ekran, aynı ssh oturumunda birden fazla sanal terminal oturumu çalıştırmanıza izin verir. Bir öğretici ve yardım sayfaları mevcuttur.

byobu , ctrl-a tuş kombinasyonu yerine basit bir fonksiyon tuşuyla yeni ekranların kolayca açılmasını sağlayan bir sarıcıdır . Ayrıca, adlandırılabilecek tüm açık sanal terminallerin bulunduğu bir durum satırı gösterir.

Bir başka güzel özellik ise, ssh bağlantınız kopukken tüm ekranınızın açık kalması. Sadece ssh ile tekrar bağlanın ve byobu ile çağrı yapın ve her şey eskisi gibi.

Sonunda byobu'nun bazı ekran görüntüleri .


Byobu Terminali'ndeki sunucumda ne olduğunu bilmeden bir işlem başlattım (Terminal'i aradım ve daha önce hiç görmedim çünkü Byobu'ya tıkladım). Byobu'yu kullanmaya devam ettim çünkü altta renkli bir durum çubuğu vardı ve havalı olduğunu düşündüm. Bugün kendimi SSH aracılığıyla bu terminal oturumuna uzaktan erişmek istediğimi öğrendim. Tek yapmam gereken "byobu" tipiydi ve bu terminal oturumunu hemen gösterdi. Gerçekten mutlu byobu karşısında tökezledi!
nick

8

Bunu belirtmeye değer olabilir

ssh -t lala screen -rxU moolala ana bilgisayarındaki moo oturumuna eklenecek

ssh -t lala screen -S moolala ana bilgisayar oturumunda moo oturumu oluşturacak

ve

ssh -t lala screen -S moo quuxyaratacak Moo konak üzerindeki oturumu lala ve program çalıştırmak quux tamamlanması oturumu bırakma.


3

Eski soru, garip hala kimse , n konsolları için bir sarmalayıcı görevi gören ve gerektiğinde onları açık tutan tmux'u tavsiye etmedi . Bu, tmux'un sahip olduğu çeşitli fonksiyonların yanında daha fazla kontrol sağlar. Sadece ardından, kendi kabuğunda getirir ki, tmux yürütmek için Looong bir işe başlamak onu yönetmek kolaydır ctrl + b d (ayırmak) (izledi ctrl+btmux ait "Tamam google" olduğunu ve dkapatılması komut kabuktan çıkmadan). Bu aslında örneğin macun gibi kapatırsanız çalışır. Akşam yemeğinden sonra, tekrar bağlandığınızda, tmux attachekranınızı tam olarak kaldığınız gibi görmek için tmux'u yeniden açabilirsiniz . Sevdiğim bir şey bölmeyi bölmek: ctrl+bve sonra tuşuna basın ". Bir bölmeden diğerine geçmek için ctrl+bve ardından yukarı / aşağı oka basın.


3

Burada iyi bir rehber bulabilirsiniz: Bağlantıyı Kestiğinizde SSH Oturumu Devam Edin

sudo apt-get install screen

Şimdi sadece komut satırına ekran yazarak yeni bir ekran oturumu başlatabilirsiniz. Ekran hakkında biraz bilgi gösterilecek. Enter tuşuna basarsanız normal istekte bulunursunuz.

Kesmek (ancak oturum çalışmasına izin) için Hit Ctrl+ Asonra ve Ctrl+ Dhemen ard arda. [Müstakil] mesajını göreceksiniz

Zaten çalışan bir oturuma yeniden bağlanmak için

screen -r

Mevcut bir oturuma yeniden bağlanmak veya mevcut değilse yenisini oluşturmak için

screen -D -r

Çalışan bir ekran oturumu içinde yeni bir pencere oluşturmak için Hit Ctrl+ Ave sonra Chemen ard arda. Yeni bir bilgi istemi göreceksiniz.

Başka bir ekran penceresine geçmek için Hit Ctrl+ Asonra ve Ctrl+ Ahemen ard arda.

Açık ekran pencereleri listelemek için Hit Ctrl+ Ave sonra Whemen ard arda


<kbd>Ctrl</kbd>İsimleri klavye tuşu olarak göstermek için kullanabilirsiniz .
Tomasz

1

NX NoMachine kullanıyorum, bu benim için ücretsiz çünkü sadece benim. Temel olarak, sunucuda bağlanıp bağlantınızı kesebileceğiniz ve tekrar tekrar açabileceğiniz bir X oturumu çalıştırır. Bağlanmadığınızda X oturumu çalışmaya devam eder. Bağlantılar her yerden yapılabilir. Yüzen pencereler veya bütün bir masaüstünü içeren tek bir pencere (örneğin, Gnome masa üstü) arasından seçim yapabilirsiniz. İstemci (dizüstü bilgisayarınızda çalıştıracağınız) Linux, MacOS, Solaris veya Microsoft Windows üzerinde çalıştırılabilir. İkinci durumda, kayan pencereleri seçerseniz, Windows Görev Çubuğunda tek tek görünürler.

NX Nomachine kullanan iki Linux sunucum için Windows XP dizüstü bilgisayarımı (sahip olduğum belirli Windows donanımlarına ihtiyacım olan) ön uç olarak kullanıyorum. Windows dizüstü bilgisayarıma bağlı yazıcıya Linux'tan bile yazdırabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.