Команда Flock в AIX
Когда я пытался использовать flock в AIX, я обнаружил, что flock не найден. Системный администратор установил пакет util-linux, но сказал, что исполняемый файл flock недоступен в AIX. Пожалуйста, дайте мне знать, как получить команду flock в AIX??
2 ответа
Вы можете скомпилировать flock.c
из пакета util-linux
, но у него не будет всей функциональности версии linux:
flock -n <handle>
не работает, потому что в AIX дочерние и родительские процессы не разделяют блокировки файлов.С опцией
-w <timeout>
он будет ждать вечно (если время ожидания не равно нулю), так какflock(2)
в AIX не возвращается с errno=EINTR при срабатывании таймера (SIGALRM).
Вот пример, который работает в AIX:
#!/bin/sh
if [ "x$1" = x-locked ]; then
shift
else
echo "Trying flock on 'flock.tmp'"
if ! flock --verbose -w 0 flock.tmp "$0" -locked "$@"; then
echo 'Flock failed'
fi
exit
fi
echo "After flock -- sleeping 15 sec"
sleep 15
echo "Exiting"
Вот версия стада, которую я собрал из источника: http://web.axelero.hu/lzsiga/flock.tgz
Этот пакет, я думаю, имеет команду flock. http://www.perzl.org/aix/index.php?n=Main.Util-linux