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 c64fc3fb05
commit f907a6cf73
2 changed files with 22 additions and 7 deletions

View File

@ -1,5 +1,5 @@
# Terminal for launching Osmocom programs
# Supported: auto, urxvt, xterm
# Supported: auto, urxvt, xterm, tmux
TERMINAL="auto"
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" "$wrapperdir"
find_term() {
# Find a terminal program and write to the global "terminal" variable
local programs="urxvt xterm"
local programs="urxvt xterm tmux"
if [ -n "${TERMINAL}" ] && [ "${TERMINAL}" != "auto" ]; then
case " $programs " in
@ -122,12 +130,19 @@ done
EOF
chmod +x "$wrapper"
$terminal \
-title "CN:$title" \
-e sh -c "$wrapper" \
&
case "$terminal" in
tmux)
tmux new-window -d -n "$title" "$wrapper &; echo \$! > $pidfile_term; fg; wait"
;;
*)
$terminal \
-title "CN:$title" \
-e sh -c "$wrapper" \
&
echo "$!" > "$pidfile_term"
echo "$!" > "$pidfile_term"
;;
esac
}
kill_pids() {