Schlagwort: shell

Kleines Shell Script zum Auffinden von Bildern mit gewisser Größe

Voraussetzungen:

  • Bash
  • find, awk
  • identify von ImageMagick oder GraphicsMagick
#!/bin/bash

MIN_WIDTH=240
MIN_HEIGHT=200

# internal field separator, https://bash.cyberciti.biz/guide/$IFS
# changed to make file names with spaces work
OIFS="$IFS"
IFS=$'\n'
# find all files with type image
for image in `find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'`; do
# get image dimensions (width/height), ignore errors
       width_and_height=`identify -format '%w %h' "$image" 2>/dev/null`
       if test -n "$width_and_height"; then
               width=`echo "$width_and_height" | awk '{print $1}'`
               height=`echo "$width_and_height" | awk '{print $2}'`

               if [ "$width" -lt $MIN_WIDTH ] || [ "$height" -lt $MIN_HEIGHT ]; then
                       echo "wrong dimensions: $image $width x $height"
               fi
       else
               echo "unable to get image dimensions for $image"
       fi
done
IFS="$OIFS"

Wenns mal wieder länger dauert

Szenario:

  • Ein Shell-script wird in relativ kurzen Intervallen via cron ausgeführt (z.B. „pseudo Echtzeit“-Sync o.ä).
  • „Normalerweise“ läuft das Script immer kürzer als der Cron-Intervall (2min Laufzeit, 4min Intervall).
  • „Manchmal“ dauerts länger und dann laufen auf einmal mehrere Instanzen (und kommen sich vielleicht in die Quere)

Es soll/muss also ein Lockfile her.

Hier hilft folgendes kleine C-Programm lockrun.c.
Es sollte sich auf allen Unix/Linux/wasweissichfüreinX – Systemen mit gcc übersetzen lassen (gcc -o lockrun lockrun.c) und arbeitet dann als Wrapper ums Script und erledigt das Lock-File-Handling.

In die crontab kommt dann sowas in der Art:

Anfrage