Это может быть следствием «улучшения динамической контрастности» от Nvidia, которое можно отключить через панель управления Nvidia.
Просто используйте четыре команды сценария оболочки :pexlock, pshlock, punlock и pcllock из ShellShoccar -jpn/misc -tools ; исключительная блокировка и общая блокировка реализуются с помощью (set -C; :>filename)
и mkdir
соответственно, поэтому они полезны не только для GNU/Linux, но и для любой другой среды POSIX.
Я использовал только повторную попытку создания символической ссылки, например:
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
Если есть другие простые и легкие для понимания и использования способы, я хотел бы знать!