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
diff --git a/net/config_2g3g b/net/config_2g3g
index a46f55e..e50d13c 100644
--- a/net/config_2g3g
+++ b/net/config_2g3g
@@ -1,5 +1,5 @@
# Terminal for launching Osmocom programs
-# Supported: urxvt, xterm
+# Supported: urxvt, xterm, tmux
TERMINAL="urxvt"
ETH_DEV=eth0
diff --git a/net/templates/run.sh b/net/templates/run.sh
index 332b168..1d78db5 100755
--- a/net/templates/run.sh
+++ b/net/templates/run.sh
@@ -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 @@
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 @@
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() {