Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
#!/bin/sh

#    Script will be able to do next things: 
# -- run MILLE, PEDE or MILLEPEDE jobs 
# -- check out for FAILs and resubmit it
# -- send an email when MILLE, PEDE or MILLEPEDE jobs are ready
# you can setup time delay in FAILs checking (-t)
# plese setup mail adress to get INFO about jobs status

help(){
echo "*************************************************************************************"
                        echo " "
                        echo " Options:"
                        echo "-h, --help                show brief help"
			echo "-n, 			specify N mille jobs, default is Njobs = 429"
			echo "-m,			run MILLE jobs only"
			echo "-p,			run PEDE  jobs only"
			echo "-mp, 			run MILLEPEDE jobs"
			echo "-email, 			specify you e-mail adress, or manually change it in the script"
			echo "-t,			specify time of script sleeping, Example : -t 10m, -t 20s"
			echo ""
			echo "  Run example: sh nextMPS.sh -n 429 -m -email uname@gmail.com -t 5m"
			echo " "
echo "*************************************************************************************"
                        exit 0
}

if [ "$#" == "0" ]; then
        echo "This script needs arguments. Please use in this way:"
	help
        exit 1
fi

Njobs=429
echo "*************************************************************************************"

while (("$#")); do
        case "$1" in
                -h|--help)
                        help
                        exit 0
                        ;;
                -n)
                        shift
                        if (("$#")); then
				Njobs=$1
				echo "You specified Njobs = $Njobs"
                        else
                                echo "Number of jobs is not specified. Please use -h, --help"
                                exit 1
                        fi
                        shift
                        ;;
                -m)
                        if (("$#")); then
        			echo "You will run MILLE jobs only"
				runstatus="m"
				#echo "Runstatus = $runstatus"
                        fi
                        shift
                        ;;
                -p)
                        if (("$#")); then
                                echo "You will run PEDE jobs only"
                                runstatus="p"
                                #echo "Runstatus = $runstatus"
                        fi
                        shift
                        ;;
		-mp)
                        if (("$#")); then
                                echo "You will run MILLEPEDE jobs"
                                runstatus="mp"
                                #echo "Runstatus = $runstatus"
                        fi
                        shift
                        ;;
                -email)
			shift
                        if (("$#")); then
                                echo "Job status will be send to the email adress: $1"
                                email="$1"
                               # echo "Email = $email"
				else 
				email="0"
				echo "You did not specified e-mail adress"
                        fi
                        shift
                        ;;

	        -t)
                        shift
                        if (("$#")); then
                                TimeSleep=$1
				time_flag="spec"
                                echo "You specified time script sleeping = $1"
                        else
                                echo "TimeSleep is not specified. Please use -h, --help"
                                exit 1
                        fi
                        shift
                        ;;
					
                *)
                        break
                        ;;
        esac
done

echo "*************************************************************************************"
if [ "$runstatus" = "m" ] || [ "$runstatus" = "mp" ]; then
	if [ ! -f nextMPS.log  ]; then
    	echo "nextMPS.log will be created"
	else
    	rm nextMPS.log	
    	echo "Old nextMPS.log file removed"
	fi
fi

TESTJOBS(){
# testing your Jobs for FAIL status and resubmitting

while [ "$(mps_stat.py | grep OK | wc -l)" != "$Njobs" ]
do	
	if [ "$time_flag" = "spec" ]; then
        	sleep $TimeSleep
		else 
		sleep 10m
	fi

        echo "Fetch DONE jobs"
        mps_fetch.py

        if [ $(mps_stat.py | grep FAIL | wc -l) -ne 0 ];
        then
                Njfails=$(echo "$(mps_stat.py | grep FAIL | wc -l)")
                echo "Njob fails = $Njfails"
                echo "Retry failed jobs"
                mps_retry.pl FAIL
                mps_fire.py $Njfails
        else
                NjOK=$(mps_stat.py | grep OK | wc -l)
                echo " Checking jobs . Njobs OK = $NjOK"

        fi
done
}


MILLERUN(){
# Setup your folder for MILLEPEDE run. Job status after: PEND
	./setup_align.pl 

# Send your jobs for running. Job status after: RUN
	mps_fire.py $Njobs

# testing your MILLE jobs for FAIL status and resubmitting
	TESTJOBS

if [ "$email" != "0" ]; then
(echo "Subject: MILLE jobs ready"; echo "Your MILLE jobs are ready. Njobs mille OK = $NjOK";) | sendmail $email
else echo "You did not setup e-mail"
fi

	}

PEDERUN(){
	mps_fire.py -m
	Njobs=$[Njobs+1]
	TESTJOBS

if [ "$email" != "0" ]; then
(echo "Subject: PEDE jobs ready"; echo "Your PEDE jobs are ready. Njobs pede OK = 1";) | sendmail $email
else echo "You did not setup e-mail"
fi

	}

MILLEPEDERUN()	{
	MILLERUN
	PEDERUN
		}

# Run part:
            	if [ "$runstatus" = "m" ]; then
      		echo "MILLE jobs will be run"
		MILLERUN >> nextMPS.log          
            	else
			if [ "$runstatus" = "p" ]; then
                	echo "PEDE jobs will be run"
			PEDERUN >> nextMPS.log
			else 
				if [ "$runstatus" = "mp" ]; then
				echo "MILLEPEDE jobs will be run"
				MILLEPEDERUN >> nextMPS.log
				fi
			fi

            	fi	
# END SCRIPT
echo "THE END"