Byobu Startup
On my servers, I like to have two things:
~/README.mdwhich documents everything that’s installed on the server machine; its purpose, paths, commands, etc etc- A Byobu startup script which runs all programs, supposed to be running on the server, in byobu
I’ll use the Byobu Tmux integration. Tmux scripting sucks hard (any problem in the script is silently ignored),
but it kinda works so we’ll use that. First, install byobu via sudo apt install byobu. Then,
let’s create a Byobu profile named startup (it’s just a name, you can use foo equally well).
Create a file named ~/.byobu/windows.tmux.startup with the following contents:
new-session -n stats ;
send-keys ./stats Enter ;
new-window -n growatt ;
send-keys ./growatt Enter ;
new-window -n syntak ;
send-keys cd Space local Enter ;
send-keys ./syntak Enter ;
new-window -n rslsync ;
send-keys ./rslsync Enter ;
new-window -n apt ;
The tmux scripting is horrible, so I’ll explain:
new-session -n statscreates a new session and ALSO a new window namedstats. The window will run your shell automatically.send-keys ./stats Enterwill run the~/statsscript in the shell, without terminating the shell. Note theEnterconstant which sends the Enter key, to run the./statsscript.new-window -n growattcreates a new window namedgrowatt.send-keys ./growatt Enterruns the~/growattscript in the shell.send-keys cd Space local Enterwill runcd local(note theSpacewhich inserts space – wtf) and keeps the shell running.
etc etc. To run Byobu and open all windows and run the script above, run:
$ BYOBU_WINDOWS=startup byobu
I like to have a ~/startup script which runs the command above. I simply run manually after the server boots up, from a ssh session.
#!/bin/bash
set -e -o pipefail
BYOBU_WINDOWS=startup byobu
Written on September 2, 2023