Я использую эту zsh функцию для синхронизации c моих записей в файлы:
sync-append () {
local file="$1"
local text="$2"
local lock_fd
{
exec {lock_fd}>> $file
flock -x "$lock_fd"
print -r -- "$text" >> $file
} always {
exec {lock_fd}>&-
}
}
Но это может не снять блокировку, если процесс будет принудительно завершен. Есть ли способ заставить flock
игнорировать блокировку, если она старше, скажем, 60 минут?
Я также открыт для использования других инструментов, кроме flock
. Однако они должны работать как на Ubuntu, так и на macOS.
Обновление: кажется блокировка автоматически закрывается, если процесс завершается.