2013-04-14 28 views
8

Adlandırılmış bir ekran oturumunda bir işlemi başlatmak için bir komut dosyası tasarlıyorum.Belirli ekran oturumuna ctrl-c gönderme

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

Yani bash myscript.sh start test ekran adında testi oluşturmak ve yazılım ile test.cfg çalışacaktır.

Şimdi benim komut belirli ekran oturumuna erişmek ve bu yüzden ekran oturumu öldürebilir çalışan işlemini durdurmak için CTRL + C yapmak istiyorum. Böyle

şey:

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'" 

cevap

13

Oldukça sen ancak bir ekran oturumda bir pencereye için ctrl-c göndermek anlamıyorum: Eğer göndermek istiyorsanız

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

ile ilgili tüm pencerelerine, # (alıntılanması gerekir) window_number olarak kullanın.

GÜNCELLEME:

Screen'in stuff komut da ^X (veya ^x) destekleyen bu yüzden aşağıdaki komutu da CTRL-C göndermek için kullanılabilir CTRL-X demek.

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

at' çalışmaya 'olsun, ama bu kişi için yararlı olabilir yalnızca etkin pencerenin, benim için çalışıyor alınamadı:' ekran -S session_name -X şeyler $ '\ 003'' –

+0

'ekran -S session_name -X "#" şeyler $ '\ 003' 'ile ekran -S session_name -X quit 'benim için mükemmel çalışır. Şimdi herhangi bir ekran oturumunu öldürebiliyorum. Teşekkür ederim. – puchu