The problem:
If I have three nodes on a cluster, each with htop installed, how do I set up gnu screen so that it automatically signs in to each node and starts a copy of htop on each node, and display the output in a split window? Basically, how to you open screen instances and inject commands in them?
...like so. Guess which computer is running a full gnome-shell environment... |
The solution:
create a file called multitop.screenrc:
screen ssh 192.168.1.101stuff string injects string into the active window. \015 basically injects <enter>.
stuff htop\015
title node01
split
focus
screen ssh 192.168.1.102
title node02
stuff htop\015
split
focus
screen ssh 192.168.1.103
title node03
stuff htop\015
start screen using
screen -c multitop.screenrc
and as usual,don't exit using exit or q, but use C+a - d to leave it running.
To make things a bit prettier and to enable users to reconnect to a running session, edit /etc/screenrc:
multiuser onand
acladd me
defscrollback 5432
termcapinfo xterm|xterms|xs|rxvt ti@:te@
caption always "%{+b rk}%H%{gk} |%c %{yk}%d.%m.%Y | %72=Load: %l %{wk}"
hardstatus alwayslastline "%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%"
sudo chmod +s /usr/bin/screen
sudo chmod 755 /var/run/screen
If you start a session using e.g.
screen -S mytest
as user me
then other users can connect using
screen -x me/mytest