Sending ctrl-c to specific screen session

user2280032 picture user2280032 · Apr 14, 2013 · Viewed 19k times · Source

I am designing a script to launch a process inside a named screen session.

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

So bash myscript.sh start test will create a screen named test and run the test.cfg with the software.

Now I want my script to access the specific screen session and do a CTRL+C to stop the running process so i can kill the screen session.

Something like this:

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

Answer

pynexj picture pynexj · Apr 15, 2013

I don't quite understand you but to send ctrl-c to a window in a screen session:

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

If you want to send something to all the windows, use # (needs to be quoted) as the window_number.

UPDATE:

Screen's stuff command also supports ^X (or ^x) to mean CTRL-X so the following command can also be used to send CTRL-C.

screen -S session_name -X at window_number stuff ^C