#!/bin/bash JOB_FILES="config.json run_analysis" DATA_FILE="file.list" JOB_DATA_FILE="file.list" BASE_DIRNAME="flow3" #PROCESS_CMD="/software/alice/cvmfs2go ./run_analysis" PROCESS_CMD="./run_analysis" ######################################### TIME=$(date +%Y%m%d_%H%M) TMPDIR=${TMPDIR:-/tmp} TOKEN_FILES="$(ls ${TMPDIR}/token{cert,key}_$(id -u).pem)" [[ -z ${TOKEN_FILES} ]] && { echo "This task need JAliEn token files, which were not found in ${TMPDIR}!"; exit 1; } ######################################### PERIOD="${1}" is_period=$(expr match "$PERIOD" '^lhc') if (( is_period != 3 )) ; then echo "Second argument must be the period name and should start with \"lhc\"" exit 1 fi LABEL=${2:-unknown_sample} TAG="${PERIOD}_${LABEL}" DATA_FILE=${3} [[ -z "${DATA_FILE}" ]] && { echo "Specify the data file list"; exit 1; } [[ -f "${DATA_FILE}" ]] || { echo "The data file list ${DATA_FILE} is not found"; exit 1; } DATA_FILE_LIST=$(cat ${DATA_FILE}) JOBS_PACK=${4:-1} NR_FILES=$(wc -l ${DATA_FILE} | awk '{print $1}') NR_JOBS=$((${NR_FILES}/${JOBS_PACK} + 1)) DIR_JOBS="${BASE_DIRNAME}_${TAG}_${TIME}" mkdir -p ${DIR_JOBS} echo "NR_FILES : " ${NR_FILES} echo "NR_JOBS : " ${NR_JOBS} echo "RUN DIR : " ${DIR_JOBS} DATA_PREFIX="subdata_" split -a 6 -d -l ${JOBS_PACK} ${DATA_FILE} ${DATA_PREFIX} for data in $(ls -1 ${DATA_PREFIX}*) ; do IDX=${data#"subdata_"} ## create job dir SUBJOB_DIR="${DIR_JOBS}/job_${IDX}" mkdir -pv "${SUBJOB_DIR}" ## create the slurm scripts SCRIPT=${SUBJOB_DIR}/job.slurm cat s_head > ${SCRIPT} cat s_body >> ${SCRIPT} echo "export JALIEN_TOKEN_CERT=tokencert_$(id -u).pem JALIEN_TOKEN_KEY=tokenkey_$(id -u).pem" >> ${SCRIPT} echo "${PROCESS_CMD}" >> ${SCRIPT} cat s_tail >> ${SCRIPT} # Tokens copy cp -n -t ${SUBJOB_DIR}/ ${TOKEN_FILES} chmod 666 ${SUBJOB_DIR}/token{cert,key}_$(id -u).pem mv "${data}" "${SUBJOB_DIR}/${JOB_DATA_FILE}" for f in ${JOB_FILES} ; do cp -H ${f} ${SUBJOB_DIR}/ ; done done