Aynı ekran oturumunda ikinci bir komut nasıl çalıştırılır


12

Ekrandaki ilk komutu şu şekilde başlatıyorum:

screen -d -m -S testen -t lalala watch df -h

Bu da bana arka planda çalışan bir ekran oturumu veriyor ve daha sonra tekrar bağlanabiliyorum.

Aynı ekran oturumunda yeni bir pencerede ikinci bir komutu nasıl çalıştırabilirim?

Yanıtlar:


11

Ayrılmış modda ( ) terminal boyutuna ( ) adapte -Sbir adlandırılmış pencere ( ) ile adlandırılmış bir ekran oturumu ( ) -tbaşlatın :-A-d -m

screen -S mySessionName -t myWinName0 -A -d -m

-tAynı ekran oturumunda ( -S) adlı başka bir window ( ) başlat :

screen -S mySessionName -X screen -t myWinName2

Session ( ) -X stuff $'cmds'içindeki ilk adlandırılan pencereye ( -p) birkaç komut ( ) girin -S:

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Session ( ) -X stuff $'cmds'içindeki ikinci adlandırılmış pencereye ( -p) birkaç komut ( ) girin -S:

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Ekran oturumlarını listeleyin ve ne olduğunu görmek için yeniden takın:

screen -ls
screen -r mySessionName

Not: Satır besleme ( \n) basmayı simüle eder Enter. Komutları ayırmak için noktalı virgül kullanabilirsiniz.


"Şeyler" bitleri yapmak zorunda değilsiniz. screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus

4

İç ekran:

  • Ctrl-A, cyeni bir kabuk penceresi açmak için
  • Ctrl-A, :screen newcmdkoşmaknewcmd

Dışarıda:

screen -X testen "screen newcmd"

merhaba grawity , bunu biliyorum, ama bir init betiğinden yapmak istiyorum. temelde ben aynı ekran oturumunda ayrı pencerelerde 2 komut başlatmak istiyorum. görüşürüz

1
@bob: Bu cevaptaki # 3, "Dış ekran" konusuna bakın.
user1686

merhaba grawity, screen -S testen -X 'screen echo "hi"'çalışmıyor.

Ayrıca -X yöntemini çalıştıramadım. Fwiw, ekranım -v "Ekran sürümü 4.00.03 (FAU) 23-Oct-06" diyor
Lauri Lehtinen

4

Yukarıdaki yaklaşımı denedim, ancak ikinci komut ikinci pencerede yürütülmedi. Pencere adı yerine pencere numarasını kullanarak örneği biraz ayarladım:

  1. oturum oluştur

    screen -S mySessionName -t 0 -A -d -m
    
  2. ikinci pencere oluştur

    screen -S mySessionName -X screen -t 1
    
  3. ilk pencereye komut gönder

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. komutu ikinci pencereye gönder

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. şimdi komutun ilk pencerede çalıştırılıp çalıştırılmadığını kontrol edin

    screen -R mySessionName -p 0
    
  6. şimdi komutun ikinci pencerede çalıştırılıp çalıştırılmadığını kontrol edin

    screen -R mySessionName -p 1
    

Ekran 4.00.03 (CENTOS 6.3 x64) ile test edilmiştir.


1

Bağımsız -cdeğişken aracılığıyla alternatif bir .screenrc kurabilirsiniz . Bu yeni screenrc'de, ekran oturumu başlatıldığında başlatmak için birden çok komut ayarlayabilirsiniz.

Bu alternatif .screenrc'nin sonuna aşağıdaki komutları koyun:

screen 1 cmd1 args
screen 2 cmd2 args

Yalnızca bir tür ekran oturumu çalıştırmayı planlıyorsanız ve varsayılan komutlar her zaman iyi çalışıyorsa, alternatif bir yapılandırma dosyası ayarlamanız gerekmez.

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.