Как заблокировать Solaris 10?

В Linux я использую flock lock command для выполнения команды с исключительной блокировкой.

Какая стандартная команда операционной системы Solaris 10 делает то же самое в оболочке?

3 Solutions collect form web for “Как заблокировать Solaris 10?”

Для Solaris нет никакой flock или аналогичной команды. Если я хочу сделать простое блокирование, я использую mkdir поскольку это атомная операция, и избегает возможных условий гонки с обычным файлом проверки / комбинацией касания.

 if ! mkdir /tmp/lockdir >/dev/null 2>&1 then echo >&2 "Lock exists exiting" exit 1 fi 

После небольшого обсуждения Usenet я использую следующее в качестве обходного пути для команды flock -n lockfile -c command :

 #! /bin/bash if [ $# != 4 -o "$1" = '-h' ] ; then echo "Usage: flock -n lockfile -c command" >&2 exit 1 fi lockfile=$2 command=$4 set -o noclobber if 2>/dev/null : > "$lockfile" ; then trap 'rm -f "$lockfile"' EXIT $BASH -c "$command" else exit 1 fi 

Я бы объединил две идеи:

 getLock() { PROG=$( basename $0 ) SHAREDLOCK="/tmp/lockdir-$PROG" if mkdir "$SHAREDLOCK" >/dev/null 2>&1 then trap 'rmdir "$SHAREDLOCK"' EXIT chmod 0 "$SHAREDLOCK" # discourage anyone from messing with it else the rmdir might fail else echo >&2 "Lock ($SHAREDLOCK) exists. exiting" exit 1 fi 

}

  • Использование памяти и дискового пространства на Solaris 11
  • Linux и Unix - лучшая ОС в мире.