A Go rewrite of my original python curses-based wrapper script for LSF bjobs command.
Standard bjobs output is not interactive, is not color highlighted, and is not information dense, and I was frustrated with there being no default 'dashboard' option for bjobs, and instead having to write elaborate shell pipes to monitor the jobs I was interested in.
- Color highlight jobs based on their status (
RUN/DONE/EXIT) - Interactive interface so no need to rerun bjobs or use
watch - Show each job's maximum RAM usage compared to how much it was allocated
- Show how close each job is to its time-limit
- Show only a subset of the total jobs that match a project name
- Display in red and move to top of screen jobs that are approaching their time or RAM limit
- Display count of pending jobs but don't list each of them
- Receive email notification when jobs have finished with information on how many succeeded and how many exited
- Option to kill all jobs at once
- See jobs that are no longer visible with
bjobs -athanks to job caching on exiting interface
View of Better-Bjobs interface with buttons at bottom, and color-highlighted example jobs
When a job approches its memory or time limit it is highlighted in red and brought to the top for attention
If bj is in the PATH, then it can be run with the bj command
in a spare terminal window or tmux pane.
This will show all non-pending jobs for the user.
To show only jobs from a certain project (the most useful use-case) add the
name of the project as an argument to the bj command.
for example to show all bjobs related to the fq compression project:
bj "fq compression"
To set a project name when launching the jobs specify the project name as the
-Jd argument for the bsub relative to that project.
A compiled Ubuntu x86 binary is avaliable as a release, and this is the easiest way to start using it straight away as the binary is self-contained.
To quickly install :
mkdir -p $HOME/bin/ # make a bin folder in home dir if one doesn't exist
# download the binary for linux
curl -Ls https://github.com/seanlaidlaw/Better-Bjobs-Go/releases/download/0.8/bj --output $HOME/bin/bj
chmod +x $HOME/bin/bj # allow executable
# add to path so we can run just `bj` from anywhere if bin not already
# this should be copied to .bashrc or .zshrc for persistance
export PATH=$HOME/bin:$PATH
Better-Bjobs can be compiled from source with the usual go build but
requires the termui go library as a dependency.
As a wrapper script, the following command line tools are requried to be found in the PATH (although this is likely already the case if you're configured for using LSF):
- bjobs
- bkill