#!/bin/sh # v 0.1.3.1 # script to quickly admin maui NORMAL=`echo -en "\\033[0;32m"` SUCCESS=`echo -en "\\033[1;32m"` INFO=`echo -en "\\033[1;34m"` WARNING=`echo -en "\\033[1;33m"` WHITE=`echo -en "\\033[1;39m"` # check user maui if [ `whoami` != maui ]; then echo " WARNING" echo " - Must be run by maui user" 1>&2 exit 1 fi # usage of $0 usage() { echo $SUCCESS echo "----------------------------------------------" echo "| usage: joborga <options> |" echo "| |" echo "| info: -view (show all Idle job) |" echo "| -chk (check job Idle) |" echo "| -a (node priority job) |" echo "| -res (show reservation) |" echo "| |" echo "| actions: -sub (submit all Idle job) |" echo "| -rdef (run all possible Idle job)|" echo "----------------------------------------------" echo $NORMAL } # list all Idle job LIST_IDLE() { IDLE_JOB=`diagnose -j | grep Idle | awk '{print $1}'` JOB_ID=`echo $IDLE_JOB | grep -v DEF` } # view all IDLE job view_idle() { echo echo "$INFO - View idle job" LIST_IDLE echo "$WHITE $JOB_ID" echo $NORMAL } # release all idle job sub_idle() { LIST_IDLE echo echo $INFO " - Resubmit all Idle job" for job in `echo $JOB_ID` do echo -en "$WHITE |- Resubmiting jobid: $job" releasehold -a $job done echo $NORMAL } diag_a() { echo echo "$INFO - Show Job" echo $WHITE ; showq ; sleep 2 ; echo echo "$INFO - Diagnose Priority of job" echo $WHITE ; diagnose -p ; sleep 2 ; echo echo echo $INFO " - Diagnose nodes of cluster" echo $WHITE ; diagnose -n echo $NORMAL } # check job chk_idle() { LIST_IDLE echo echo $WHITE " - Check all Idle job" for job in `echo $JOB_ID` do echo " |- Checking Job_id: $job" echo -ne $WHITE; checkjob -v $job | grep run ; echo done echo $NORMAL } # run all possible Idle job run_idle() { echo "$INFO - Checking node available" NB_NODE=`cat /etc/nodes_list | wc -l` echo " |- $NB_NODE nodes available" NB_FREE_NODE=`pbsnodes -a | grep free | wc -l` echo " |- $NB_FREE_NODE free node(s)" while [ $NB_FREE_NODE != 0 ]; do LIST_IDLE echo "$WHITE |- Running all Possible Idle job" for job in `echo $JOB_ID` do CHE=`checkjob -v $job | grep "job can run" ` if [ ! -z "$CHE" ]; then echo " Job $job can run, running it" runjob $job fi done done echo " No Free node available" echo $NORMAL } show_res() { echo "$INFO - Show reservation by job and node" echo -ne $WHITE ; showres ; showres -n echo $NORMAL } ############## # MAIN ############## case $1 in -view|view|v) view_idle;; -sub|sub|s) view_idle; sub_idle;; -a|a) diag_a ;; -res|res|re) show_res;; -chk|chk|c) chk_idle;; -rdef|rdef|r) run_idle;; *) usage ;; esac