net: run.sh: support tmux as terminal

Create one tmux session, with each Osmocom program in one window, if
tmux is chosen as "terminal". This allows using osmo-dev's run.sh over
ssh without X forwarding. Also the existing supported terminals
automatically scroll to the bottom as soon as there is new output,
making it hard to read logs.

Change-Id: Iaef08fb3cb3c6f58cd8490a631e177a03af9c974
This commit is contained in:
Oliver Smith 2022-01-17 15:59:31 +01:00
parent 6327371e4c
commit cd472bdbf7
2 changed files with 22 additions and 7 deletions

View File

@ -1,5 +1,5 @@
# Terminal for launching Osmocom programs
# Supported: urxvt, xterm
# Supported: urxvt, xterm, tmux
TERMINAL="urxvt"
ETH_DEV=eth0

View File

@ -1,5 +1,13 @@
#!/usr/bin/env bash
# tmux: start this script inside a new session
tmux_session="CN"
if [ "${TERMINAL}" = "tmux" ] && [ "$1" != "inside-tmux" ]; then
echo "Starting tmux session '$tmux_session'"
unset TMUX
exec tmux new-session -s "$tmux_session" -n "RUN" "$0" "inside-tmux"
fi
if ! ../fill_config.py --check-stale; then
echo
echo "WARNING: STALE CONFIGS - your net configs are older than the templates they should be based on!"
@ -46,7 +54,7 @@ mkdir -p "$logdir" "$piddir" "$launcherdir"
find_term() {
# Find a terminal program and write to the global "terminal" variable
local programs="urxvt xterm"
local programs="urxvt xterm tmux"
if [ -z "${TERMINAL}" ]; then
echo "ERROR: TERMINAL is not defined in your osmo-dev net config file. Please add it."
@ -118,12 +126,19 @@ done
EOF
chmod +x "$launcher"
$terminal \
-title "CN:$title" \
-e sh -c "$launcher" \
&
case "$terminal" in
tmux)
tmux new-window -d -n "$title" "$launcher &; echo \$! > $pidfile_term; fg; wait"
;;
*)
$terminal \
-title "CN:$title" \
-e sh -c "$launcher" \
&
echo "$!" > "$pidfile_term"
echo "$!" > "$pidfile_term"
;;
esac
}
kill_pids() {