Существует ли действительно простой и надежный способ создать уникальный файл блокировки ()в Linux? без использования `флок`

Это может быть следствием «улучшения динамической контрастности» от Nvidia, которое можно отключить через панель управления Nvidia.

-1
23.01.2021, 00:09
2 ответа

Просто используйте четыре команды сценария оболочки :pexlock, pshlock, punlock и pcllock из ShellShoccar -jpn/misc -tools ; исключительная блокировка и общая блокировка реализуются с помощью (set -C; :>filename)и mkdirсоответственно, поэтому они полезны не только для GNU/Linux, но и для любой другой среды POSIX.

0
18.03.2021, 22:37

Я использовал только повторную попытку создания символической ссылки, например:

while true;do
  if ln -s "/a/b/c/myExisingRealFile.ext" /tmp/myFileSymlink.lock 2>/dev/null;then
    : #do something
    rm /tmp/myFileSymlink.lock
    break
  fi
done

проверено с помощью (bash )myLockTest.sh:

#!/bin/bash

echo "the idea is: after every OK must always follow a single REMOVED"
echo "so also no subsequent OKs."

echo >/tmp/tstMyScript.sh;
export strLock="/tmp/tstUniqueLock.lock";
rm -v "$strLock" 2>/dev/null;

trap -- "echo EXIT;rm -v "$strLock"" EXIT
trap -- "echo INT;rm -v "$strLock"" INT

FUNClock(){ 
 n=0;
 while true;do 
  if ln -s "/tmp/tstMyScript.sh" "$strLock" 2>/dev/null;then 
   echo "$n:$BASHPID:ok";
   rm -v "$strLock"; 
   break;
  fi;
  echo "$n:$BASHPID:retry:$((++n))";
  sleep 0.25
 done;
};export -f FUNClock;
for((i=0;i<100;i++));do FUNClock&:;done # lower from 100 to 1 if you are unsure, then increase slowly

Если есть другие простые и легкие для понимания и использования способы, я хотел бы знать!

-1
18.03.2021, 22:37

Теги

Похожие вопросы