Send a link

runlock

Table of contents



Shell script utility: runlock


This piece of code prevents multiple copies of the same program (i.e. crontab jobs) to run at the same time.

#!/bin/sh

if [ "\$1" != "1" ]; then
        # Debug
        #exit
fi

ECHO=/bin/echo
GREP=/usr/bin/grep
HOSTNAME=/bin/hostname
MAIL=/usr/bin/mail
PS=/bin/ps
RM=/bin/rm
TOUCH=/usr/bin/touch

if [ -z $MAILTO ]; then
        MAILTO="user@domain"
fi

if [ -e /tmp/$1.lock ]; then
  HOST=`$HOSTNAME`
  LIST=`$PS axuwww|$GREP \$1`
  LIST="\n\n$LIST\n"
  $ECHO "Could not execute \$1 due to lockfile...$LIST" | $MAIL -s "LOCKFILE: $HOST - error running \$1" $MAILTO
  exit 1;
fi

$TOUCH /tmp/\$1.lock

\$2

$RM /tmp/\$1.lock


  • + : A leading plus sign indicates that this word must be present in every object returned.
  • - : A leading minus sign indicates that this word must not be present in any row returned.
  • By default (when neither plus nor minus is specified) the word is optional, but the object that contain it will be rated higher.
  • < > : These two operators are used to change a word's contribution to the relevance value that is assigned to a row.
  • ( ) : Parentheses are used to group words into subexpressions.
  • ~ : A leading tilde acts as a negation operator, causing the word's contribution to the object relevance to be negative. It's useful for marking noise words. An object that contains such a word will be rated lower than others, but will not be excluded altogether, as it would be with the - operator.
  • * : An asterisk is the truncation operator. Unlike the other operators, it should be appended to the word, not prepended.
  • " : The phrase, that is enclosed in double quotes ", matches only objects that contain this phrase literally, as it was typed.

Menu