Debugging Cmd-Queue Powered ScriptsΒΆ

When running a cmd-queue based script it is important to understand that it is primarilly a mechanism for building a sequence of commands to accomplish a task. The execution of those commands is secondary.

Idomatically, most cmd-queue scripts will have the options: --run and --print_commands. By setting --run=0 and --print_commands=1 it will simply show you the commands that it would execute in order. You can manually execute these commands step-by-step to diagnose problems.

Also there is usually a --backend option. Often this is set to --backend=tmux, but if you use --backend=serial it will run everything in the foreground terminal session allowing you to see everything happen one at a time. This is very similar to running commands one-by-one, but there are minor differences so its important to be aware of both strategies.

When using the tmux cmd-queue backend, if jobs are failing you can use tmux to inspect the status of the jobs. Use tmux a to attach to one of the tmux sessions, and you can use CTRL-b followed by s to show an interactive overview of all sessions. You can navigate to inspect what each session is doing. You will also notice that each tmux session has an associate script that it sources at the very beginning. You can look at that to see the details of what is happening in each tmux session (Note: there is a lot of bash boilerplate in these files, and most of it can be ignored: look for the part of the code with the # command comment).