Solaris 10을 잠그는 방법은 무엇입니까?

Solaris 10을 잠그는 방법은 무엇입니까?

Linux에서는 flock lock command배타적 잠금을 사용하여 명령을 실행합니다.

쉘에서 동일한 작업을 수행하는 Solaris 10 표준 운영 체제 명령은 무엇입니까?

답변1

flockSolaris에는 이와 유사한 명령이 없습니다. 간단한 잠금을 수행하고 싶다면 mkdir원자적 작업이므로 이것을 사용하고 파일 존재/터치 조합에 대한 일반적인 확인을 통해 잠재적인 경쟁 조건을 피할 것입니다.

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

답변2

잠시 후뉴스그룹 토론해결 방법으로 다음을 사용했습니다 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

답변3

저는 이 두 가지 아이디어를 결합하겠습니다.

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

}

관련 정보