Linux: screen command

From Define Wiki
Jump to navigation Jump to search

Initiate a screen session and disconnect immediately

[root@nodea ~]# screen -S 'jhtest' -d -m
[root@nodea ~]# screen -list
There is a screen on:
	2653.jhtest	(Detached)

Parse a command to a running screen session

  • Initiate and disconnect from your named screen session
screen -r "jhtest" -X stuff $'cd /benchmark\n'
  • -r = reconnect screen session
  • "jhtest" = name of the screen session
  • -X = send commands to a running screen session
  • stuff = stuff command lets you send keystrokes
  • $ = $ before the command is to make the shell parse the \n inside the quotes and the newline is required to execute the command (like when you press enter)
  • 'cd /tmp\n' = the command to run followed by \n keystroke

Injecting a command into an existing, remote screen session

Much the same as above:

ssh 172.28.130.1 screen -dmS test

ssh 172.28.130.1 screen -S test -p 0 -X stuff "/pool/LEOPARD150723M_2.16/Yafuflash\ -kcs\ /pool/LEOPARD150723M_2.16/LEOPARD150723M_2.16.ima\ -ignore-module-location"`echo -ne '\015'`
  • -dmS = create a new detached screen session (dm) and name it (S "test").
  • -S test = name of the screen session
  • -p 0 = select screen 0 of screen session
  • -X = send commands to a running screen session
  • stuff = stuff command lets you send keystrokes
  • `echo -ne '\015'` = send a carriage return after the main command, similar to $ and \n in previous example.

NB: It seems an escape character (\) needs to be entered before a <space>.