2013-04-14 13 views
8

Sto progettando uno script per avviare un processo all'interno di una sessione schermata denominata.Invio di ctrl-c a una sessione specifica dello schermo

as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'" 

Così bash myscript.sh start test creerà un provino di nome ed eseguire il test.cfg con il software.

Ora voglio il mio script per accedere alla sessione di screen specifica e fare un CTRL +C per fermare il processo in esecuzione in modo che io possa uccidere la sessione di screen.

Qualcosa di simile a questo:

as_user "screen -p 0 -S **$command** **... kill the process with ctrl-c...**" 
as_user "screen -p 0 -S **$command** -X eval 'stuff \"exit\"\015'" 

risposta

13

io non capisco voi, ma di inviare ctrl-c ad un finestra in una schermata sessione:

screen -S session_name -X at window_number stuff $'\003' 
# or 
screen -S session_name -X -p window_number stuff $'\003' 

Se si desidera inviare qualcosa a tutte le le finestre, utilizzare # (deve essere quotato) come window_number.

UPDATE:

comando di schermo stuff supporta anche ^X (o ^x) a significare CTRL-X quindi il seguente comando può essere utilizzato anche per inviare CTRL-C.

screen -S session_name -X at window_number stuff ^C 
+1

Impossibile ottenere 'at' per lavorare, ma questo ha lavorato per me per la finestra attiva solo, che potrebbe essere utile per qualcuno:' screen -S session_name -X roba $ '\ 003'' –

+0

'screen -S session_name -X in "#" stuff $ '\ 003'' con 'screen -S session_name -X quit' funziona perfettamente per me. Sono in grado di uccidere qualsiasi sessione di schermo ora. Grazie. – puchu

Problemi correlati