Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Script/execute.sh
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Script/execute.sh
r85 r112 5 5 #----------------------------------------------------------- 6 6 7 declare -a COMMAND; 8 declare -i CPT_OLD; 9 declare -i CPT; 10 declare FILE_CMD=; 11 declare FILE_CPT=; 12 declare FILE_CPU=; 13 declare LOCK_CPT="${HOME}/.lock-cpt"; 14 declare LOCK_CPU="${HOME}/.lock-cpu"; 7 #-----[ global variable ]----------------------------------- 15 8 16 9 #-----[ lock ]---------------------------------------------- 17 10 function lock () 18 11 { 19 lockfile -1 $ 1;12 lockfile -1 ${1}; 20 13 } 21 14 … … 23 16 function unlock () 24 17 { 25 rm -f $ 1;18 rm -f ${1}; 26 19 } 27 20 28 #-----[ m ain ]----------------------------------------------29 function m ain()21 #-----[ my_date ]------------------------------------------- 22 function my_date () 30 23 { 31 # no test, because the script execute_n have make all test 32 FILE_CMD=$1; 33 FILE_CPT=$2; 34 FILE_CPU=$3; 24 date +"%F %T"; 25 } 35 26 36 lock $LOCK_CPT; 37 if test ! -s $FILE_CPT; then 38 echo "0" > $FILE_CPT; 27 #-----[ execute_usage ]------------------------------------- 28 function execute_usage () 29 { 30 echo "Usage : ${0} work_dir file_cmd file_cpt file_cpu"; 31 echo "Arguments : "; 32 echo " * work_dir : directory to execute command"; 33 echo " * file_cmd : list of command"; 34 echo " * file_cpt : file with the index of next command to execute"; 35 echo " * file_cpu : tmp file to stock the current index"; 36 exit; 37 } 38 39 #-----[ execute_test_usage ]-------------------------------- 40 function execute_test_usage () 41 { 42 if test ${#} -ne 4; then 43 execute_usage; 39 44 fi; 40 unlock $LOCK_CPT;41 45 42 # lit les fichiers ligne par ligne et le place dans un tableau 46 if test ! -d ${1}; then 47 echo "Directory ${1} is invalid"; 48 fi; 49 } 50 51 #-----[ execute ]------------------------------------------- 52 function execute () 53 { 54 # test_usage 55 execute_test_usage ${*}; 56 57 local -a COMMAND; 58 local -i CPT_OLD; 59 local -i CPT; 60 local WORK_DIR=${1}; 61 local FILE_CMD=${2}; 62 local FILE_CPT=${3}; 63 local FILE_CPU=${4}; 64 local LOCK_CPT="${WORK_DIR}/.lock-cpt"; 65 local LOCK_CPU="${WORK_DIR}/.lock-cpu"; 66 local FILE_CMD="distexe.command"; 67 local FILE_OUT="distexe.output"; 68 69 70 # Init CPT if this thread is the first 71 lock ${LOCK_CPT}; 72 if test ! -s ${FILE_CPT}; then 73 echo "0" > ${FILE_CPT}; 74 fi; 75 unlock ${LOCK_CPT}; 76 77 # read, line by line, the command file and write in array 43 78 CPT=0; 44 79 45 80 while read line; do 46 COMMAND[$ CPT]="$line";47 CPT=$(($ CPT+1));48 done < $ 1;81 COMMAND[${CPT}]="${line}"; 82 CPT=$((${CPT}+1)); 83 done < ${FILE_CMD}; 49 84 50 echo " * <$ $> {"`date +"%F %T"`"} is ready";85 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is ready"; 51 86 52 87 # infinite loop … … 56 91 while test 1; do 57 92 # Take a number 58 CPT_OLD=$ CPT;93 CPT_OLD=${CPT}; 59 94 60 lock $LOCK_CPT; 61 CPT=`cat $FILE_CPT`; # read the index 62 echo "$(($CPT+1))" > $FILE_CPT; # write the next index 63 unlock $LOCK_CPT; 95 # Read the index, and increase 96 lock ${LOCK_CPT}; 97 CPT=$(cat ${FILE_CPT}); 98 echo "$((${CPT}+1))" > ${FILE_CPT}; 99 unlock ${LOCK_CPT}; 64 100 65 101 # test if this number is valid 66 if test $ CPT-ge ${#COMMAND[*]}; then102 if test ${CPT} -ge ${#COMMAND[*]}; then 67 103 CPT=${#COMMAND[*]}; 68 104 fi; … … 70 106 # test if between the cpt_old and cpt, there are a synchronisation command 71 107 72 # local -i CPT_SYNC=$ CPT_OLD;108 # local -i CPT_SYNC=${CPT}_OLD; 73 109 # 74 # while test $ CPT_SYNC -lt $CPT; do75 # if test -z "${COMMAND[$ CPT_SYNC]}"; then76 # echo " * <$ $> {"`date +"%F %T"`"} synchronisation [$CPT_SYNC]";110 # while test ${CPT}_SYNC -lt ${CPT}; do 111 # if test -z "${COMMAND[${CPT}_SYNC]}"; then 112 # echo " * <${HOSTNAME}-$$> {"$(my_date)"} synchronisation [${CPT}_SYNC]"; 77 113 # fi; 78 # CPT_SYNC=$(($ CPT_SYNC+1));114 # CPT_SYNC=$((${CPT}_SYNC+1)); 79 115 # done; 80 116 81 117 # test if this number is valid 82 if test $ CPT-eq ${#COMMAND[*]}; then118 if test ${CPT} -eq ${#COMMAND[*]}; then 83 119 break; 84 120 fi; 85 121 86 122 # Test if command is empty ! 87 if test ! -z "${COMMAND[$ CPT]}"; then88 local CUR _DIR=$PWD;89 90 mkdir "Task_$ CPT" &> /dev/null;91 cd "Task_$ CPT" &> /dev/null;92 echo " * <$ $> {"`date +"%F %T"`"} execute command [$CPT] : ${COMMAND[$CPT]}";93 echo "${COMMAND[$ CPT]}" > "command";94 chmod +x "command";95 eval "${COMMAND[$ CPT]}" &> "output";96 cd $ CUR_DIR&> /dev/null;123 if test ! -z "${COMMAND[${CPT}]}"; then 124 local CURREN_DIR=${PWD}; 125 cd ${WORK_DIR} &> /dev/null; 126 mkdir "Task_${CPT}" &> /dev/null; 127 cd "Task_${CPT}" &> /dev/null; 128 echo " * <${HOSTNAME}-$$> {"$(my_date)"} execute command [${CPT}] : ${COMMAND[${CPT}]}"; 129 echo "${COMMAND[${CPT}]}" > ${FILE_CMD}; 130 # chmod +x ${FILE_CMD}; 131 eval "${COMMAND[${CPT}]}" &> ${FILE_OUT}; 132 cd ${CURREN_DIR} &> /dev/null; 97 133 fi; 98 134 done; 99 135 100 echo " * <$ $> {"`date +"%F %T"`"} is done";136 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is done"; 101 137 102 lock $ LOCK_CPU;103 CPT= `cat $FILE_CPU`;# read the index104 CPT=$(($ CPT-1));105 echo "$ CPT" > $FILE_CPU; # write the next index106 unlock $ LOCK_CPU;138 lock ${LOCK_CPU}; 139 CPT=$(cat ${FILE_CPU}); # read the index 140 CPT=$((${CPT}-1)); 141 echo "${CPT}" > ${FILE_CPU}; # write the next index 142 unlock ${LOCK_CPU}; 107 143 108 if test $ CPT-eq 0; then109 echo " * <$ $> {"`date +"%F %T"`"} All task is executed";110 rm $ FILE_CPU;144 if test ${CPT} -eq 0; then 145 echo " * <${HOSTNAME}-$$> {"$(my_date)"} All task is executed"; 146 rm ${FILE_CPU}; 111 147 fi; 112 148 } 113 149 114 150 #-----[ Corps ]--------------------------------------------- 115 main $*;151 execute ${*};
Note: See TracChangeset
for help on using the changeset viewer.