Linux “ekran” içinde çalıştığımı nasıl bilebilirim?


60

"Ekran", bağlantısı kesilmiş bir ssh oturumuna nasıl yeniden bağlanılır bölümünde bahsi geçen bir programı ifade eder . Bu iyi bir tesistir.

Ama gerçekten bilmek isteyeceğim bir soru var. Bir "ekran" içinde çalıştığımı nasıl bilebilirim? Fark:

  • Evetse, geçerli terminal penceresini güvenli bir şekilde kapatabileceğimi biliyorum, örneğin, bir PuTTY penceresini, kabuğumu (Bash vb) oturumumu kaybetmeden kapatın.
  • Hayır ise, terminal penceresini kapatmadan önce bekleyen işlerle ilgilenmem gerektiğini biliyorum.

Dahası, bu durumun PS1 isteminde görüntülenmesini istiyorum, böylece istediğim zaman otomatik olarak görebilirim.


3
Ekran yerine tmux kullanıyorsanız, varsayılan olarak küçük bir durum çubuğu alırsınız. Temel kullanım için hemen hemen aynılar.
Samuel Edwin Ward,

9
Toteminizi masaya yerleştirin ve dönmesine izin verin. Dönmeye devam ederse, sorun değil. Başka bir ekranda:]
Konerak

Ayrıca byobu'yu ekran ve tmux ile de kullanabilirsiniz . Giriş sırasında otomatik olarak yüklenecek ve ardından F6 tuşuna basılarak kurulabilir ve çıkılır.
mp3foley

Yanıtlar:


88

(" Ekranda olup olmadığımı nasıl söyleyebilirim? " Den çalındı , StackOverflow üzerinden ve kullanıcı jho tarafından yazılmış . PS StackExchange sitelerinde bir kopya için oy kullanamazsınız.)

Kontrol edin $STY. Eğer boş ise, "gerçek" bir terminaldesin. Herhangi bir şey içeriyorsa, içinde bulunduğunuz ekranın adı.

Ekranda değilseniz:

eric@dev ~ $ echo $STY
eric@dev ~ $ 

Ekrandaysanız:

eric@dev ~ $ echo $STY
2026.pts-0.ip-10-0-1-71

Ekran yerine tmux kullanıyorsanız, kontrol edin $TMUX. Bunu komut isteminize eklemek için aşağıdakileri ekleyin ~/.bashrc:

if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi

2
eğer bir şeyi sudovarsayılan olarak çalıştırırsanız , dahil olmak üzere ortam değişkenlerini devralmaz $STY. Ama edilir tipik belki ya denetlemek, sudo çevreye yayılır veya$TERM $STY $TERM=="screen"
rcoup

14

Kendisiyle iletişim kurmak için $STYkullanılan ayrıntıları sağlayanları arayın screen; $WINDOWo zaman geçerli screenpencere numarası olacaktır.


13

Genellikle kullandığım basit kontrol sadece vurmaktır Ctrl- a:

  • Eğer imleç satırın başlangıcına atlar , ben içeride değil bir ekran oturumu.

  • Eğer hiçbir şey olmuyor , bunu biliyorum içimde olduğum bir ekran oturumu ve ben sadece ekranlı kontrol anahtarını kullandım söyledi. Sonra komut satırına geri dönmek için ( asatırın başına atla), w(geçerli ekran pencerelerini göster) veya başka bir "zararsız" ekran komutu yürüttüm.

(Tabii ki, bu yalnızca şu anda bash veya “satırın başlangıcına atlayan” bir yazılım parçası kullanıyorsanız veya Ctrl-a'ya çarptığında eşit derecede zararsız bir şey yapıyorsanız çalışır.)


3
Bu, yalnızca ekran kontrol anahtarınız elbette varsayılan Ctrl-a'da bırakıldığında çalışır.
ShreevatsaR

1
kontrol tuşu + DD'ye basıldığında ssh ayrılır ve sonlandırılır. Daha fazla rahatlık için bu kombinasyonu vurabilirsiniz
akostadinov

Asıl soru için cevap iyi olsa da, bu yöntem komut dosyası değildir.
Nikodemus RIP

7

Eh, en seferinde senin (devamsızlık birinin girişimleri şeylerle vida) TERMolarak ayarlanır screen(veya en azından söz screenbir yerde).

Problemin kolay çözümü her yerde sadece ekran çalıştırmak. Onsuz evden ayrılma, derim.


$TERMAyrıca, genellikle sudobir artı olan aracılığıyla yayılır !
rcoup

7

Bunu bende saklıyorum .bashrc:

 PS1='[\u@\h \W'
 if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
 PS1="$PS1]$"

Kusursuz değil, ama ne zaman yeni bir ekran oluştursam, pencere numarasını komut satırına koyuyor. Kaçmıyorsam screen, numara yok.


3

Daha serin bir yolum var.

Aşağıdakileri ~ / .screenrc dosyasına ekleyin ve altta bir durum satırı göreceksiniz (ters çevrilmiş metinde tarih, saat ve sistem yükü gösteriliyor. Aşağıdaki man sayfa bağlantısında daha fazla kaçış kodu bulundu.

    hardstatus alwayslastline
    hardstatus string '%Y-%m-%d %c | %l'

Ekran oturumu sırasında bu kaynak ctrl-a:source ~/.screenrc.

Bunun için Linux Journal'dan Kyle Rankin'e teşekkür etmeliyim. Http://www.linuxjournal.com/article/10950 adresindeki harika makalesine bakın . Bahsettiği man sayfa bölümü http://www.gnu.org/software/screen/manual/screen.html#String-Escapes adresinde bulunabilir .


2

Ayrıca $$bir ekran örneği bulup bulamadığınızı görmek için işlem ağacını yineleyebilirsiniz . tam zincir kurulumunuza bağlı olacaktır - benim OS X kutumda, bir zshiç ekranın loginebeveyni, SCREENbüyükbabası ve screenbüyükbabası gibi.

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.