sshpc_summary.sh
por EDSON - LAMBDA
—
última modificação
13/06/2023 11h32
sshpc_summary.sh
— 5 KB
Conteúdo do arquivo
#!/bin/bash
#########################################################################################
## SSHPC - Cluster de processamento distribuído baseado em SSH ##
## ##
## Local: Laboratório Multiusuário de Bioinformática e Análise de Dados (LAMBDA) ##
## Centro de Biotecnologia (CBiotec), Universidade Federal da Paraíba (UFPB) ##
## Data: 30/05/2023 ##
## Coordenador: Edson Luiz Folador ##
## IC: Arthur Araújo de Lacerda ##
#########################################################################################
readonly PROGNAME=$(basename "$0")
readonly PROGDIR=$(readlink -m $(dirname "$0"))
readonly SSHPC_DIRECTORY="/home/sshpc"
debugging() { ${debug} && echo -e "$1"; }
### RUN SUMMARY
get_run_files_amount() {
debugging "\nFiles in the run directory:"
find /home/sshpc/run/ -type f | wc -l
}
get_run_directories_amount() {
debugging "\nDirectories in the run directory:"
find /home/sshpc/run/ -type d | wc -l
}
### RUNNING SUMMARY
get_running_amout() {
debugging "\nCurrent processes in progress:"
find /home/sshpc/running/ -type f | wc -l
}
get_running_nodes_amount() {
debugging "\nCurrent amount of nodes computing:"
ps aux | grep "sshpc_run" | head -n -1 | wc -l
}
get_running_nodes() {
debugging "\nCurrent nodes computing:"
ps aux | grep "sshpc_run" | head -n -1 | sed -E 's/\ +/\t/g' | cut -f14-17
}
### RUNNED SUMMARY
get_runned_day_data() {
if [[ -n ${year} ]]; then
debugging "\nData runned in ${day}/${month}/${year}:"
find "${SSHPC_DIRECTORY}/runned" -type f -name "${current_log_file}" | xargs grep "${day}/${month}"
else
debugging "\nData runned till today"
find "${SSHPC_DIRECTORY}/runned" -type f | xargs cat
fi
}
get_runned_day_amount(){
if [[ -n ${year} ]]; then
debugging "\nData count runned in ${day}/${month}/${year}:"
find "${SSHPC_DIRECTORY}/runned" -type f -name "${current_log_file}" | xargs grep "${day}/${month}" -c
else
debugging "\nData runned amount till today"
find "${SSHPC_DIRECTORY}/runned" -type f | xargs cat | wc -l
fi
}
get_runned_day_data_pernode() {
if [[ -n ${year} ]]; then
debugging "\nData runned per node in ${day}/${month}/${year}:"
find "${SSHPC_DIRECTORY}/runned" -type f -name "${current_log_file}" | sudo xargs grep "${day}/${month}" | cut -f 3,5 | sed 's/_/\t/' | cut -f 1,2 | sort -k2,2 | uniq -f 1 -c | sed -E -e 's/ +//' -e 's/ +/\t/' | sort -nr
else
debugging "\nData runned per node till today"
find "${SSHPC_DIRECTORY}/runned" -type f | sudo xargs cat | cut -f 3,5 | sed 's/_/\t/' | cut -f 1,2 | sort -k2,2 | uniq -f 1 -c | sed -E -e 's/ +//' -e 's/ +/\t/' | sort -nr
fi
}
### ARGS PARSING
parse_options() {
case "$t_type" in
"0" | "") run="1"; runned="1"; running="1";;
"1") run="1";;
"2") running="1";;
"3") runned="1";;
"4") sshpc_log="1";;
"5") auth_log="1";;
*) echo "-t option: $t_type not valid"; exit 1;;
esac
}
parse_date() {
# Fulldate
if [[ "${date_input}" == "today" ]]; then
date_today=$(date +"%d%m%Y")
day=${date_today:0:2}
month=${date_today:2:2}
year=${date_today:4}
elif [[ "${date_input}" =~ ^((0[0-9]|1[0-9]|2[0-9]|3[0-1])(0[0-9]|1[0-2])20[0-9]{2})$ ]]; then
day=${date_input:0:2}
month=${date_input:2:2}
year=${date_input:4}
# day of the month
elif [[ "${date_input}" =~ ^(0[0-9]|1[0-9]|2[0-9]|3[0-1])(0[0-9]|1[0-2])$ ]]; then
day=${date_input:0:2}
month=${date_input:2:2}
year=$(date +"%Y")
# days past
elif [[ "${date_input}" =~ ^-[0-9]+$ ]]; then
date_today=$(date --date "-${date_input} day" +"%d%m%Y")
day_temp=${date_today:0:2}
day=${date_today:0:2}
month=${date_today:2:2}
year=${date_today:4}
fi
current_log_file="${year}${month}_sshpclog.txt"
}
execute_options() {
if [[ -n $run ]]; then
get_run_files_amount
get_run_directories_amount
fi
if [[ -n $runned ]]; then
[[ -n ${g_type} ]] && get_runned_day_data
get_runned_day_amount
get_runned_day_data_pernode
fi
if [[ -n $running ]] && [[ "${date_input}" == "today" ]]; then
get_running_amout
get_running_nodes_amount
get_running_nodes
fi
if [[ -n $sshpc_log ]] ; then
debugging "\nCurrent sshpc.log"
cat /home/sshpc/sshpc.log
fi
if [[ -n $auth_log ]] ; then
debugging "\nCurrent auth.log"
sudo tail -500 /var/log/auth.log | grep -P "^[a-zA-Z]+ ${day} .* (?!root)Invalid user sshpc_"
fi
}
main() {
debug=true
while true; do
case "$1" in
-t) [[ -n $2 ]] && [[ "$2" == *"-"* ]] && echo "-t option: $2 not valid" && exit 1 || t_type=$2; shift; shift;;
-g) g_type="1"; shift;;
-d) if [[ -z $2 ]] || [[ "$2" =~ ^-[a-z]$ ]]; then date_input="today"; else date_input=$2; shift; fi; shift;;
-q) debug=false; shift;;
-*) echo "$1 :not such option"; exit 1;;
*) break;;
esac
done
parse_date
parse_options
execute_options
}
main $@