#!/bin/ksh #************************************************************** # Author: Martial Mancip # Contact: Martial.Mancip__at__ipsl.jussieu.fr # $Revision:: $ Revision of last commit # $Author:: $ Author of last commit # $Date:: $ Date of last commit # IPSL (2006) # This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC # #************************************************************** #set -eu #set -vx libIGCM=::modipsl::/libIGCM #D--------------------------------------------------------------------== #D- -1. User modification place #D--------------------------------------------------------------------== #D- Increased verbosity (1, 2, 3) Verbosity=3 #D- Low level debug : to bypass lib test checks and stack construction #D- Default=true DEBUG_debug=false #D--------------------------------------------------------------------== echo "clean month script :" echo "Script used to clean a month on SAVE directory !" echo "This script will erase some files !!! Be careful and read all informations !" echo "----" echo "It must be called in Experience directory (so-called SUBMIT_DIR)." echo "----" #D--------------------------------------------------------------------== . ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh ( ${DEBUG_debug} ) && IGCM_debug_Check . ${libIGCM}/libIGCM_card/libIGCM_card.ksh ( ${DEBUG_debug} ) && IGCM_card_Check . ${libIGCM}/libIGCM_date/libIGCM_date.ksh ( ${DEBUG_debug} ) && IGCM_date_Check #------- SUBMIT_DIR=$( pwd ) . ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh . ${libIGCM}/libIGCM_config/libIGCM_config.ksh #================================== IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/config.card UserChoices for option in ${config_UserChoices[*]} ; do IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card UserChoices ${option} done IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/config.card Post for option in ${config_Post[*]} ; do IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Post ${option} done IGCM_card_DefineArrayFromSection ${SUBMIT_DIR}/config.card Ensemble for option in ${config_Ensemble[*]} ; do IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Ensemble ${option} done IGCM_debug_Print 1 "DefineArrayFromOption : config_UserChoices" IGCM_debug_PrintVariables 3 config_UserChoices_JobName if [ 3 -le ${Verbosity} ] ; then echo "--------------Debug3-->" "config_UserChoices_LongName=" echo "--------------Debug3-->" \"${config_UserChoices_LongName}\" fi IGCM_debug_PrintVariables 3 config_UserChoices_TagName IGCM_debug_PrintVariables 3 config_UserChoices_CalendarType IGCM_debug_PrintVariables 3 config_UserChoices_DateBegin IGCM_debug_PrintVariables 3 config_UserChoices_DateEnd IGCM_debug_PrintVariables 3 config_UserChoices_PeriodLength IGCM_debug_PrintVariables 3 config_Ensemble_EnsembleName IGCM_debug_PrintVariables 3 config_Ensemble_EnsembleDate #================================== # Define default value to keep compatibility with previous card: means before changes due to TGCC if [ X${PackDefault} = Xtrue ] ; then [ X${config_Post_PackFrequency} = X ] && config_Post_PackFrequency=${config_Post_RebuildFrequency} else config_Post_PackFrequency=NONE fi #================================== # Is the pack active if ( [ ! X${config_Post_PackFrequency} = X${NULL_STR} ] && [ ! X${config_Post_PackFrequency} = XNONE ] ) ; then Pack=true fi #==================================================== #R_SAVE : Job output directory #R_BUFR : Job output buffered directory if ( [ ! X${config_UserChoices_SpaceName} = X ] && [ ! X${config_UserChoices_ExperimentName} = X ] ) ; then FreeName=$( echo ${config_UserChoices_JobName} | sed 's/.*_//' ) if ( [ ! X${config_Ensemble_EnsembleName} = X ] && [ ! X${config_Ensemble_EnsembleDate} = X ] ) ; then R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} else R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} fi else if ( [ ! X${config_Ensemble_EnsembleName} = X ] && [ ! X${config_Ensemble_EnsembleDate} = X ] ) ; then R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${config_UserChoices_JobName} R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${config_UserChoices_JobName} else R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_JobName} R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_JobName} fi fi IGCM_sys_TestDirArchive ${R_SAVE} [ $? != 0 ] && IGCM_debug_Exit "IGCM_sys_TestDirArchive" if [ ! -f ${SUBMIT_DIR}/run.card ]; then echo "You seem NOT to have a run.card in this directory !!" echo "This script will fail because it doesn't know what to do without run.card available." exit 1 else #===================================# # Read updated run.card # #===================================# IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration OldPrefix IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateBegin IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateEnd IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration CumulPeriod PeriodDateEnd=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateEnd} ) echo "Search files with ${PeriodDateEnd} in ${R_SAVE}" set +A ListFiles -- $( IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" " ) CountListFiles=${#ListFiles[@]} if [ X${Pack} = Xtrue ] ; then echo "Search files with ${PeriodDateEnd} in ${R_BUFR}" set +A ListFilesBuf -- $( IGCM_sys_RshMaster "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" " ) CountListFilesBuf=${#ListFilesBuf[@]} else CountListFilesBuf=0 fi # If exist, erase REBUILD DIR PeriodDateBegin=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateBegin} ) CountRebuildDir=0 if [ X${config_Post_RebuildFrequency} != X ] ; then if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then REBUILD_DIR=${R_SAVE}/TMP set +A RebuildDir -- $( IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" " ) else REBUILD_DIR=${BIG_DIR}/${config_UserChoices_TagName}/${config_UserChoices_JobName} set +A RebuildDir -- $( find ${REBUILD_DIR} -type d -name "*${PeriodDateBegin}*" ) fi CountRebuildDir=${#RebuildDir[@]} fi IGCM_debug_Print 1 "Number of files to be erased : ${CountListFiles}." if ( [ ${CountListFiles} -gt 0 ] || [ ${CountListFilesBuf} -gt 0 ] ) ; then for file in ${ListFiles[@]} ; do IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" done if [ X${Pack} = Xtrue ] ; then for file in ${ListFilesBuf[@]} ; do IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" done fi echo -e "\033[1;32mDo you REALLY want to erase all those files ?" echo -n -e " Your answer (y/n) : \033[m" read reponse case ${reponse} in oui|OUI|o|y|yes|YES) echo "OK. It will be erased." IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" if [ X${Pack} = Xtrue ] ; then IGCM_sys_RshMaster "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" fi echo "done." ;; non|NON|n|no|NO) echo "Nothing to do !" ;; esac fi if [ ${CountRebuildDir} -gt 0 ] ; then IGCM_debug_Print 1 "Number of REBUILD Dirs to be erased : ${CountRebuildDir}." for Dir in ${RebuildDir[@]} ; do IGCM_debug_Print 2 -e "\033[1;31m ${Dir}\033[m" done echo -e "\033[1;32mDo you REALLY want to erase all those Directories ?" echo -n -e " Your answer (y/n) : \033[m" read reponse case ${reponse} in oui|OUI|o|y|yes|YES) echo "OK. It will be erased." if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" -exec rm -Rf '{}' \;" else find ${REBUILD_DIR} -type d -name "*${PeriodDateBegin}*" -exec rm -Rf '{}' \; fi echo "done." ;; non|NON|n|no|NO) echo "Nothing to do !" ;; esac fi IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState if ( [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then echo -e "\033[1;32mNOW do you want to continue the simulation (Set PeriodState=OnQueue into run.card) ?" echo -n -e " Your answer (y/n) : \033[m" read reponse case ${reponse} in oui|OUI|o|y|yes|YES) echo "OK. Now you can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue" ;; non|NON|n|no|NO) echo "Nothing to do !" ;; esac else echo "You can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." fi fi exit 0