diff --git a/slurm/sq b/slurm/sq new file mode 100755 index 0000000..6ca9d69 --- /dev/null +++ b/slurm/sq @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Extended squeue wrapper +# +# Wirawan Purwanto +# Created: 20180720 + +shopt -s extglob +set -e + +optAllUsers=0 +optHasUsers=0 +optHasFormat=0 +optSlurmFlags=() + +FORMAT_DEFAULT="%.18i %.9P %.20j %.9u %.2t %.12M %.12l %.5D %R" + +function ParseArgs() +{ + local i + local nopass + + local args args_count arg + args=( "zeroth-arg-not-used" "$@" ) + args_count=$# + for ((i = 1; i <= args_count; ++i)); do + arg="${!i}" + case "$arg" in + # This script's options + (+a) + optAllUsers=1 + ;; + (+*) + : # ignore + ;; + (-*|*) + optSlurmFlags[ ${#optSlurmFlags[@]} ]="$arg" + case "$arg" in + (-u*|--user?(=*)) + optHasUsers=1 + ;; + (-l|-s|--long|--steps|-o|--format?(=*)) + optHasFormat=1 + ;; + esac + ;; + esac + done +} + +function do_squeue() +{ + # My old default is to show jobs for me only: + if ! (( optHasUsers || optAllUsers )); then + optSlurmFlags=( "${optSlurmFlags[@]}" -u "$USER" ) + fi + if ! (( optHasFormat )); then + optSlurmFlags=( "${optSlurmFlags[@]}" -o "$FORMAT_DEFAULT" ) + fi + squeue "${optSlurmFlags[@]}" +} + + +ParseArgs "$@" +do_squeue + +