Come eseguire un secondo comando nella stessa sessione dello schermo


12

Sto avviando il primo comando nella schermata in questo modo:

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

che mi dà una sessione dello schermo in esecuzione in background e posso riconnettermi in un secondo momento.

Come posso eseguire un secondo comando in una nuova finestra nella stessa sessione dello schermo?

Risposte:


11

Avviare una sessione schermo denominata ( -S) con una finestra denominata ( -t) adattandosi alle dimensioni del terminale ( -A) in modalità staccata ( -d -m):

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

Avvia un'altra finestra denominata ( -t) nella stessa schermata ( -S):

screen -S mySessionName -X screen -t myWinName2

Inserisci alcuni comandi ( -X stuff $'cmds') nella prima finestra con nome ( -p) nella sessione ( -S):

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

Inserisci alcuni comandi ( -X stuff $'cmds') nella seconda finestra ( -p) nella sessione ( -S):

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

Elenca le sessioni dello schermo e ricollegala per vedere cosa è successo:

screen -ls
screen -r mySessionName

Nota: Linefeed ( \n) simula la pressione Enter. Puoi anche usare i punti e virgola per separare i comandi.


Non devi fare i bit "roba". screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus,

4

Schermo interno:

  • Ctrl-A, cper aprire una nuova finestra della shell
  • Ctrl-A, :screen newcmdper correrenewcmd

Al di fuori:

screen -X testen "screen newcmd"

ciao grawity , lo so, ma mi piacerebbe farlo da uno script di init. sostanzialmente voglio avviare 2 comandi in finestre separate nella stessa sessione dello schermo. ci vediamo

1
@bob: vedi esempio # 3, "Schermo esterno", in questa risposta.
user1686

ciao grawity, screen -S testen -X 'screen echo "hi"'non funziona.

Inoltre, non sono riuscito a far funzionare il metodo -X. In seguito, il mio schermo -v dice "Versione schermo 4.00.03 (FAU) 23-ott-06"
Lauri Lehtinen,

4

Ho provato l'approccio sopra, ma il secondo comando non è stato eseguito sulla seconda finestra. Ho leggermente modificato l'esempio usando il numero della finestra, anziché il nome della finestra:

  1. crea sessione

    screen -S mySessionName -t 0 -A -d -m
    
  2. crea una seconda finestra

    screen -S mySessionName -X screen -t 1
    
  3. invia il comando alla prima finestra

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. invia il comando alla seconda finestra

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. ora controlla se il comando è stato eseguito sulla prima finestra

    screen -R mySessionName -p 0
    
  6. ora controlla se il comando è stato eseguito sulla seconda finestra

    screen -R mySessionName -p 1
    

Testato con lo schermo 4.00.03 (CENTOS 6.3 x64).


1

È possibile impostare un .screenrc alternativo tramite l' -cargomento. In questo nuovo screenrc è possibile impostare più comandi per l'avvio all'avvio della sessione dello schermo.

Alla fine di questo .screenrc alternativo inserisci i seguenti comandi:

screen 1 cmd1 args
screen 2 cmd2 args

Non è necessario impostare un file di configurazione alternativo se si prevede di eseguire solo un tipo di sessione dello schermo e l'esecuzione dei comandi predefiniti va sempre bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.