Uzak ssh komutunu arka planda çalıştırıp yine de görüntülemenin en iyi yolu nedir?


15

Yerel olarak görüntülenen çıkış ile SSH komutlarını uzaktan çalıştırmam gerekiyor. Ancak bağlantı koparsa komutun hala çalışmasını istiyorum.

Giriş yapma ve yürütme hakkında çok konuşmuyorum ama ssh user @ remotehost 'komutları && command etc'

Bağlantı kopsa bile komutun çalışmasını nasıl sağlayabilirim?

Yanıtlar:


27

Bunu yapmanın en iyi yolu, bağlantı kopsa bile oturumu kalıcı bir şekilde açık tutan ekranı kullanmaktır (ve tekrar kullanmaya başlamak istiyorsanız, screen -r ve tekrar açacaktır).

Çalıştırmak istediğiniz komutu önekleme screen(ör.ssh -t user@host screen command ) İşi yapmalıdır.

Kabuğun arka planında çalışmasını istiyorsanız &, her şeye bir de ekleyebilirsiniz .


Komutun çalışması için bir terminal atamak üzere ssh -t kullanmanız gerekecektir. Aksi takdirde hata "Bir terminale bağlanmalıdır."
bonsaiviking

11

Devam edebileceğiniz kalıcı bir oturum mu arıyorsunuz, yoksa yalnızca bağlantı kesmenin exection'ı öldürmesini mi durdurmak istiyorsunuz?

screenBirincisi için, ikincisi için kullanın nohup.


7

Erken belirtildiği gibi, screentüm hile yapabilir. Ama sadece ihtiyacınız olan şey değil. Ekranı yıllardır kullanıyorum ve şimdi sisteme her giriş yaptığımda kullanıyorum. Bu tür bir yapılandırmayla yüklemeyi screenve oluşturmayı deneyin ~/.screenrc:

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

Sonra koş screen -Rd vcf. Bu, ekranın tercih edilen çağrılmasıdır. Önceden oluşturulmuş oturuma vcf * adıyla yeniden bağlanacaksınız (veya belirsiz ise uyarılacaksınız) veya oturum henüz açılmadıysa oluşturulacak. CTRL+ Aher şeyi yapan bir meta anahtardır. CTRL+A C( CTRL+ A, sonra C) oturum içinde yeni pencere (ekran) oluşturun. CTRL+A SPACEodağı bir turdaki sonraki pencereye taşıyın. CTRL+A DBağlantılar arasındaki tüm pencereleri işlevsel tutmak için geçerli oturumu ayırın. Bazı looooong görevini başlattıysanız, ekrandan ayrılabilir ve ne olduğunu görmek için daha sonra yeniden atayabilirsiniz. Aynı şey ssh oturumunuz kaybolduğunda da gerçekleşir - ekran tüm açık pencerelerle ve başlatılan tüm görevlerle canlı kalır.

Ekranın içindeki bir pencereyi kapatmak istiyorsanız - sadece içindeki exitkabuktan. Tüm pencerelerdeki tüm mermileri / görevleri kapatmak ve ekrandan çıkmak istiyorsanız - sadece CTRL+A CTRL+\sorulduğunda "Y" ye basın.

Diğerleri için man ekranına bakınız.



1

Genellikle yapardım:

nohup mycommand &

tail -f nohup.out
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.