Commit 8e1a31be authored by Holger Brandl's avatar Holger Brandl

started migration of cluster tools to github

parent 0171a891
alias bj='bjobs -w'
alias isub='bsub -q interactive -Is bash'
alias isub8='bsub -n 4 -R span[hosts=1] -q interactive -Is bash'
joblist(){
## use default joblist-filename or user-provided name
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
# add the job-id to the list
cat - | tee /dev/stderr | cut -f2 -d" " | sed 's/[<>]//g' >> $joblistFile
}
export -f joblist
jlistKill(){
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
# cat $joblistFile | xargs -L1 bkill
cat $joblistFile | while read id ; do bkill "$id" ; done
}
export -f jlistKill
killByName(){
echo killing jobs which include: $1 ...
bjobs -w | grep $1 | awk '{ print $1 }' | while read id ; do bkill $id ; done
}
export -f killByName
jlistBtop(){
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
cat $joblistFile | xargs -L1 btop
}
export -f jlistBtop
jlistStatus(){
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
bjobs -w | grep -Ff $joblistFile
}
export -f jlistStatus
jlistReport(){
if [ $# -ne 1 ]; then
joblistFile=$(ls -a | grep "cluster_snapshots.txt" | sed "s/.cluster_snapshots.txt//g")
else
joblistFile=$1
fi
echo "reportName='$joblistFile'; source('http://dl.dropboxusercontent.com/u/113630701/rlibs/BjobsReport.R',local=T)" | R --no-save --no-restore 2>&1 > /dev/null
}
export -f jlistReport
wait4jobs(){
## use default joblist-filename or user-provided name
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
# wait until all jobs from the list are done
sleep 2
while [ -n "$(bjobs 2>&1 | grep -f $joblistFile)" ]; do
sleep 15; ## or use bparams output
done
# remove the joblist-file
rm $joblistFile
}
export -f wait4jobs
blockScript(){
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
joblist $joblistFile
echo "waiting now for joblist:
$(cat $joblistFile)"
## add jobs to top of queue
jlistBtop $joblistFile
wait4jobs $joblistFile
}
export -f blockScript
wait4jobsReport(){
## use default joblist-filename or user-provided name
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
# rm $joblistFile.cluster_usage.txt $joblistFile.cluster_snapshots.txt
# wait until all jobs from the list are done
sleep 2
while [ -n "$(bjobs 2>&1 | grep -f $joblistFile)" ]; do
sleep 15; ## or use bparams output
export curTime=$(date +"%d-%m-%Y_%H:%M:%S")
# bjobs -W $(cat $joblistFile ) 2>/dev/null | sed 's/ \+/\t/g' | tail -n +2 | awk -v OFS='\t' '{print $0, ENVIRON["curTime"]}' >> $joblistFile.cluster_snapshots.txt
bjobs -W $(cat $joblistFile ) 2>/dev/null | sed 's/ \+/\t/g' | tail -n +2 | awk -v OFS='\t' '{print $0, ENVIRON["curTime"]}' >> $joblistFile.cluster_snapshots.txt
done
# bjobs -W $(cat $joblistFile ) >> $joblistFile.cluster_usage.txt
echo "reportName='$joblistFile'; source('http://dl.dropbox.com/u/113630701/rlibs/BjobsReport.R',local=T)" | R --vanilla 2>&1 > /dev/null
# echo "source('http://dl.dropbox.com/u/113630701/rlibs/BjobsReport.R',local=T)" | R --vanilla 2>&1 > /dev/null
# remove the joblist-file
rm $joblistFile
}
export -f wait4jobsReport
blockScriptReport(){
if [ $# -ne 1 ]; then
joblistFile=".jobs"
else
joblistFile=$1
fi
joblist $joblistFile
echo "waiting now for joblist:
$(cat $joblistFile)"
## add jobs to top of queue
jlistBtop $joblistFile
wait4jobsReport $joblistFile
}
export -f blockScriptReport
mailme(){
echo "Subject:"$1 "$2" | sendmail -v $(whoami)@mpi-cbg.de > /dev/null ;
}
export -f mailme
lsloop(){
while :
do
lsload | sort -k1
sleep 1
done
}
bjloop(){
while :
do
echo "----------------------------------------------------------------------------------------------------"
## http://theunixshell.blogspot.de/2012/12/print-first-80-characters-in-line.html
bjobs -w | head -n 50 | cut -c1-100
bjobs | awk '{print $3}' | sort | uniq -c | head -n2
sleep 2
done
}
bstatus(){ bjobs -u all | awk '{print $2 " " $4}' | sort | uniq -c ; }
bjsloop(){
while :
do
bjobs | grep short | head -n 50
sleep 1
done
}
retouch(){
find $1 | xargs -n1 touch
}
export -f retouch
# old output redirection scheme
#mysub(){
# if [ $# -lt 2 ]; then echo "Usage: mysub <jobname> <script> [<additional bsub arguments>]"; return; fi
#
# jobName=$1; shift
# jobCmd=$1; shift
#
# bsub -e $jobName.err.log -o $jobName.out.log -J $jobName $@ "$jobCmd"
#}
mysub(){
if [ $# -lt 2 ]; then echo "Usage: mysub <jobname> <script> [<additional bsub arguments>]"; return; fi
jobName=$(echo $1| tr ' ' '_'); shift
jobCmd=$1; shift
bsub -J $jobName $@ "( $jobCmd ) 2>$jobName.err.log 1>$jobName.out.log"
}
export -f mysub
#mysub testjob "echo test; echo blabla 1>&2;" -q medium
rmEmptyLogFiles(){ find . -maxdepth 1 -name ".log" -type f -empty -print0 | xargs -0 echo rm -f ; }
export -f rmEmptyLogFiles
zipRmLogFiles(){
if [ $# -lt 2 ]; then echo "Usage: zipRmLogFiles <tarbasename> [<logfile>]+"; return; fi
tarName=$(date +'%y%m%d')_"$1"_logs.tar.gz; shift
tar czf $tarName $@; rm $@;
}
export -f zipRmLogFiles
## lock a node
lockNode(){
bsub -J "node_locker" -R span[hosts=1] -n 6 -q long 'echo "locked $HOSTNAME" >> ~/locked_worker.txt; sleep 10h' | joblist /tmp/tmp.gHDskZ7c77
mailme "locked node: $(tail -n1 ~/locked_worker.txt | cut -d' ' -f2)"
# ssx $(tail -n1 ~/locked_hosts.txt | cut -d' ' -f2)
# jlistKill $tmpJoblistFile
}
#isubNode(){
# tmpJoblistFile=$(mktemp)
# bsub -J "node_locker" -R span[hosts=1] -n 8 -q long 'echo "locked $HOSTNAME" >> ~/locked_hosts.txt; sleep 10h' | wait4jobs $tmpJoblistFile
# ssx $(tail -n1 ~/locked_hosts.txt | cut -d' ' -f2)
# jlistKill $tmpJoblistFile
#}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment