~ralf-claussnitzer-deactivatedaccount/goobi-contrib/master

« back to all changes in this revision

Viewing changes to slub/config/scripts/script_manageJobDefinitions.sh

  • Committer: Ralf Claussnitzer
  • Date: 2011-06-21 12:30:35 UTC
  • Revision ID: git-v1:f8c0264b1c0bbd7ed02f101e5c456eb58cb60a46
contribute SLUB Dresden Goobi configuration script files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
 
 
3
# Datenverzeichnis von Goobi
 
4
Goobidata=/home/goobi/work/staging1
 
5
# Unterverzeichnis in dem die Images liegen
 
6
Images=images
 
7
# Unterverzeichnisstruktur, in der bestimmte Images liegen - z.B. Originalscans, beschnittene Scans usw.
 
8
Scans=scans_
 
9
# Liste der Imagevarianten
 
10
Jobs="tif orig"
 
11
# Verzeichnis, in dem die später per Cron zu bearbeitenden Goobi Jobs abgelegt werden soll
 
12
JobDir=$Goobidata/jobs
 
13
 
 
14
## Funktionen
 
15
# Funktion: Goobi ID der Vorganges ermitteln
 
16
DetectGoobiID () {
 
17
    # Aufruf: DetectGoobiID
 
18
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: DetectGoobiID"; fi
 
19
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Linkname |sed -e 's/.*\[\(.*\)\]$/\1/'"; fi
 
20
    ID=`echo "$Linkname" |sed -e 's/.*\[\(.*\)\]$/\1/'`
 
21
    Errorlevel=$?
 
22
    errorlevel
 
23
}
 
24
 
 
25
# Funktion: Zeitstempel der aktuellsten Datei ermitteln und ermittelten Zeitstempel mit gespeicherten vergleichen
 
26
TimestampCompare () {
 
27
    # Aufruf: TimestampCompare ArtDerImages
 
28
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampCompare $1"; fi
 
29
    local Job="$1"
 
30
    # cTime-Zeitstempel der aktuellsten Datei ermitteln
 
31
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "stat -c %Z $Goobidata/$ID/$Images/${Scans}$Job/`ls -tc $Goobidata/$ID/$Images/${Scans}$Job |head -1`"; fi
 
32
    local cTimestamp=`stat -c %Z $Goobidata/$ID/$Images/${Scans}$Job/\`ls -tc $Goobidata/$ID/$Images/${Scans}$Job |head -1\``
 
33
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestamp = ${cTimestamp}"; fi
 
34
    Errorlevel=$?
 
35
    errorlevel
 
36
    if [ -z $cTimestamp ]; then logger -p user.info -t $0 "cTime-Zeitstempel der aktuellsten Datei konnte nicht ermittelt werden"; return; fi
 
37
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "cTime-Zeitstempel der aktuellsten Datei: $cTimestamp"; fi
 
38
    # Ermittelten cTime-Zeitstempel mit gespeicherten vergleichen
 
39
    if [ -f $Goobidata/$ID/$Job.ctimestamp ]
 
40
    then
 
41
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein gespeicherter cTime-Zeitstempel existiert in $Goobidata/$ID/$Job.ctimestamp"; fi
 
42
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.ctimestamp"; fi
 
43
        local cTimestampSave=`cat $Goobidata/$ID/$Job.ctimestamp`
 
44
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestampSave = ${cTimestampSave}"; fi
 
45
        Errorlevel=$?
 
46
        errorlevel
 
47
        if [ -z $cTimestampSave ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel konnte nicht ermittelt werden"; return; fi
 
48
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel: $cTimestampSave"; fi
 
49
        # Prüfung, ob der cTime-Zeitstempel neuer als der gespeicherte ist
 
50
        if [ "$cTimestamp" -gt "$cTimestampSave" ]
 
51
        then
 
52
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist neuer als der gespeicherte cTime-Zeitstempel $cTimestampSave"; fi
 
53
            # Gespeicherten cTime-Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
54
            cTimestampNew $cTimestamp $Job
 
55
        else
 
56
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist nicht neuer als der gespeicherte cTime-Zeitstempel in $cTimestampSave"; fi
 
57
        fi
 
58
    # Ermittelten cTime-Zeitstempel mit vorübergehend deaktivierten vergleichen
 
59
    elif [ -f $Goobidata/$ID/$Job.ctimestamp.bak ]
 
60
    then
 
61
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein vorübergehend deaktivierter cTime-Zeitstempel existiert in $Goobidata/$ID/$Job.ctimestamp.bak"; fi
 
62
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.ctimestamp.bak $Goobidata/$ID/$Job.ctimestamp"; fi
 
63
        mv $Goobidata/$ID/$Job.ctimestamp.bak $Goobidata/$ID/$Job.ctimestamp
 
64
        Errorlevel=$?
 
65
        errorlevel
 
66
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.ctimestamp"; fi
 
67
        local cTimestampSave=`cat $Goobidata/$ID/$Job.ctimestamp`
 
68
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestampSave = ${cTimestampSave}"; fi
 
69
        Errorlevel=$?
 
70
        errorlevel
 
71
        if [ -z $cTimestampSave ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter cTime-Zeitstempel konnte nicht ermittelt werden"; return; fi
 
72
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter cTime-Zeitstempel: $cTimestampSave"; fi
 
73
        # Prüfung, ob der cTime-Zeitstempel neuer oder gleich dem vorübergehend deaktivierten ist
 
74
        if [ "$cTimestamp" -ge "$cTimestampSave" ]
 
75
        then
 
76
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist neuer als oder gleich dem vorübergehend deaktivierten cTime-Zeitstempel $cTimestampSave"; fi
 
77
            # Gespeicherten cTime-Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
78
            cTimestampNew $cTimestamp $Job
 
79
        else
 
80
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist älter als der vorübergehend deaktivierte cTime-Zeitstempel in $cTimestampSave"; fi
 
81
            # Da nur falls ein Job definiert ist, ein vorübergehend deaktivierter cTime-Zeitstempel existiert: Gespeicherten cTime-Zeitstempel trotzdem mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
82
           cTimestampNew $cTimestamp $Job
 
83
        fi
 
84
    else
 
85
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Es existiert kein gespeicherter cTime-Zeitstempel, ein neuer wird angelegt"; fi
 
86
        # Gespeicherten cTime-Zeitstempel generieren, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
87
        cTimestampNew $cTimestamp $Job
 
88
    fi
 
89
    # Zeitstempel der aktuellsten Datei ermitteln
 
90
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "stat -c %Y $Goobidata/$ID/$Images/${Scans}$Job/`ls -t $Goobidata/$ID/$Images/${Scans}$Job |head -1`"; fi
 
91
    local Timestamp=`stat -c %Y $Goobidata/$ID/$Images/${Scans}$Job/\`ls -t $Goobidata/$ID/$Images/${Scans}$Job |head -1\``
 
92
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: Timestamp = ${Timestamp}"; fi
 
93
    Errorlevel=$?
 
94
    errorlevel
 
95
    if [ -z $Timestamp ]; then logger -p user.info -t $0 "Zeitstempel der aktuellsten Datei konnte nicht ermittelt werden"; return; fi
 
96
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Zeitstempel der aktuellsten Datei: $Timestamp"; fi
 
97
    # Ermittelten Zeitstempel mit gespeicherten vergleichen
 
98
    if [ -f $Goobidata/$ID/$Job.timestamp ]
 
99
    then
 
100
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein gespeicherter Zeitstempel existiert in $Goobidata/$ID/$Job.timestamp"; fi
 
101
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.timestamp"; fi
 
102
        local TimestampSave=`cat $Goobidata/$ID/$Job.timestamp`
 
103
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: TimestampSave = ${TimestampSave}"; fi
 
104
        Errorlevel=$?
 
105
        errorlevel
 
106
        if [ -z $TimestampSave ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel konnte nicht ermittelt werden"; return; fi
 
107
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel: $TimestampSave"; fi
 
108
        # Prüfung, ob der Zeitstempel neuer als der gespeicherte ist
 
109
        if [ "$Timestamp" -gt "$TimestampSave" ]
 
110
        then
 
111
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist neuer als der gespeicherte Zeitstempel $TimestampSave"; fi
 
112
            # Gespeicherten Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
113
            TimestampNew $Timestamp $Job
 
114
        else
 
115
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist nicht neuer als der gespeicherte Zeitstempel in $TimestampSave"; fi
 
116
        fi
 
117
    # Ermittelten Zeitstempel mit vorübergehend deaktivierten vergleichen
 
118
    elif [ -f $Goobidata/$ID/$Job.timestamp.bak ]
 
119
    then
 
120
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein vorübergehend deaktivierter Zeitstempel existiert in $Goobidata/$ID/$Job.timestamp.bak"; fi
 
121
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.timestamp.bak $Goobidata/$ID/$Job.timestamp"; fi
 
122
        mv $Goobidata/$ID/$Job.timestamp.bak $Goobidata/$ID/$Job.timestamp
 
123
        Errorlevel=$?
 
124
        errorlevel
 
125
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.timestamp"; fi
 
126
        local TimestampSave=`cat $Goobidata/$ID/$Job.timestamp`
 
127
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: TimestampSave = ${TimestampSave}"; fi
 
128
        Errorlevel=$?
 
129
        errorlevel
 
130
        if [ -z $TimestampSave ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter Zeitstempel konnte nicht ermittelt werden"; return; fi
 
131
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter Zeitstempel: $TimestampSave"; fi
 
132
        # Prüfung, ob der Zeitstempel neuer oder gleich dem vorübergehend deaktivierten ist
 
133
        if [ "$Timestamp" -ge "$TimestampSave" ]
 
134
        then
 
135
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist neuer als oder gleich dem vorübergehend deaktivierten Zeitstempel $TimestampSave"; fi
 
136
            # Gespeicherten Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
137
            TimestampNew $Timestamp $Job
 
138
        else
 
139
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist älter als der vorübergehend deaktivierte Zeitstempel in $TimestampSave"; fi
 
140
            # Da nur falls ein Job definiert ist, ein vorübergehend deaktivierter Zeitstempel existiert: Gespeicherten Zeitstempel trotzdem mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
141
            TimestampNew $Timestamp $Job
 
142
        fi
 
143
    else
 
144
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Es existiert kein gespeicherter Zeitstempel, ein neuer wird angelegt"; fi
 
145
        # Gespeicherten Zeitstempel generieren, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
146
        TimestampNew $Timestamp $Job
 
147
    fi
 
148
}
 
149
 
 
150
# Funktion: Gespeicherten Zeitstempel erzeugen oder überschreiben, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
151
cTimestampNew () {
 
152
    # Aufruf: cTimestampNew Zeitstempel ArtderImages
 
153
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: cTimestampNew $1 $2"; fi
 
154
    local cTimestamp="$1"
 
155
    local Job="$2"
 
156
    # Gespeicherten cTime-Zeitstempel erzeugen oder überschreiben
 
157
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $cTimestamp >$Goobidata/$ID/$Job.ctimestamp"; fi
 
158
    echo "$cTimestamp" >$Goobidata/$ID/$Job.ctimestamp
 
159
    Errorlevel=$?
 
160
    errorlevel
 
161
    # Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
162
    if [ ! -d $JobDir/$Job ]
 
163
    then
 
164
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Verzeichnis $JobDir/$Job zur Aufnahme der zu bearbeitenden Jobs existiert noch nicht"; fi
 
165
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mkdir -p $JobDir/$Job"; fi
 
166
        mkdir -p $JobDir/$Job
 
167
        Errorlevel=$?
 
168
        errorlevel
 
169
    fi
 
170
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "touch $JobDir/$Job/$ID"; fi
 
171
    touch $JobDir/$Job/$ID
 
172
    Errorlevel=$?
 
173
    errorlevel
 
174
}
 
175
 
 
176
# Funktion: Gespeicherten Zeitstempel erzeugen oder überschreiben, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
177
TimestampNew () {
 
178
    # Aufruf: TimestampNew Zeitstempel ArtderImages
 
179
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampNew $1 $2"; fi
 
180
    local Timestamp="$1"
 
181
    local Job="$2"
 
182
    # Gespeicherten Zeitstempel erzeugen oder überschreiben
 
183
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Timestamp >$Goobidata/$ID/$Job.timestamp"; fi
 
184
    echo "$Timestamp" >$Goobidata/$ID/$Job.timestamp
 
185
    Errorlevel=$?
 
186
    errorlevel
 
187
    # Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
 
188
    if [ ! -d $JobDir/$Job ]
 
189
    then
 
190
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Verzeichnis $JobDir/$Job zur Aufnahme der zu bearbeitenden Jobs existiert noch nicht"; fi
 
191
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mkdir -p $JobDir/$Job"; fi
 
192
        mkdir -p $JobDir/$Job
 
193
        Errorlevel=$?
 
194
        errorlevel
 
195
    fi
 
196
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "touch $JobDir/$Job/$ID"; fi
 
197
    touch $JobDir/$Job/$ID
 
198
    Errorlevel=$?
 
199
    errorlevel
 
200
}
 
201
 
 
202
# Funktion: Gespeicherten Zeitstempel vorübergehend deaktivieren und die später per Cron zu erledigenden Jobdefinitionen löschen
 
203
TimestampBackup () {
 
204
    # Aufruf: TimestampBackup ArtderImages
 
205
    if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampBackup $1"; fi
 
206
    local Job="$1"
 
207
    # Die später per Cron zu erledigenden Jobdefinitionen löschen
 
208
    if [ -f $JobDir/$Job/$ID ]
 
209
    then
 
210
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "rm $JobDir/$Job/$ID"; fi
 
211
        rm $JobDir/$Job/$ID
 
212
        Errorlevel=$?
 
213
        errorlevel
 
214
        # Gespeicherten cTime-Zeitstempel vorübergehend deaktivieren
 
215
        if [ -f $Goobidata/$ID/$Job.ctimestamp ]
 
216
        then
 
217
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.ctimestamp $Goobidata/$ID/$Job.ctimestamp.bak"; fi
 
218
            mv $Goobidata/$ID/$Job.ctimestamp $Goobidata/$ID/$Job.ctimestamp.bak
 
219
            Errorlevel=$?
 
220
            errorlevel
 
221
        else
 
222
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel $Goobidata/$ID/$Job.ctimestamp existiert nicht"; fi
 
223
        fi
 
224
        # Gespeicherten Zeitstempel vorübergehend deaktivieren
 
225
        if [ -f $Goobidata/$ID/$Job.timestamp ]
 
226
        then
 
227
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.timestamp $Goobidata/$ID/$Job.timestamp.bak"; fi
 
228
            mv $Goobidata/$ID/$Job.timestamp $Goobidata/$ID/$Job.timestamp.bak
 
229
            Errorlevel=$?
 
230
            errorlevel
 
231
        else
 
232
            if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel $Goobidata/$ID/$Job.timestamp existiert nicht"; fi
 
233
        fi
 
234
    else
 
235
        if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Jobdefinition $JobDir/$Job/$ID existiert nicht"; fi
 
236
    fi
 
237
}