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

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

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

  • Нужно ли создавать резервные копии файлов в каталоге / opt при обновлении Solaris 11 до Solaris 11.3?
  • tiff2pdf автоматически поворачивает мое изображение
  • Как восстановить поведение обработки сигналов по умолчанию в Solaris?
  • Solaris находит предыдущую строку журнала
  • Получение патчей Solaris 10
  • Как получить уведомление, когда svcadm перезапустит службу, которая умерла
  • Запуск службы во время запуска
  • Не удается зарегистрировать или обновить Solaris 11 Express
  • 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 

    }

    Linux и Unix - лучшая ОС в мире.