bash – lockfile-progs实用程序用法

参见英文答案 > Check for Process if Same is Running                                    6个
有一个相关的another question,但它实际上是不同的,因为我问为什么lockfile-create&的行为. lockfile-touch与手册页的当前内容不同.

我有这个脚本来学习和理解lockfile-progs实用程序.我测试过它并且运行良好.但是,我发现与lockfile-touch相关的行是不必要的.我的脚本只需要在每台用户的一台机器上启动一个xterm实例.我会做正确的事情去除锁定文件触摸线?有人知道我修改过的脚本会不会有问题?

#!/bin/bash

function atexit {
    kill $LOCKFILE_TOUCH_PID
    lockfile-remove $DOTLOCK_FILENAME
    echo atexit!
    exit
}

DOTLOCK_FILENAME=/tmp/xterm-one-instance-$UID
lockfile-create --retry 0 --use-pid $DOTLOCK_FILENAME || exit

lockfile-touch $DOTLOCK_FILENAME & LOCKFILE_TOUCH_PID=$!
echo lockfile-touch running, PID=$LOCKFILE_TOUCH_PID

trap atexit EXIT HUP INT TERM
xterm

我修改过的脚本:

#!/bin/bash

function atexit {
    lockfile-remove $DOTLOCK_FILENAME
    echo atexit!
    exit
}

DOTLOCK_FILENAME=/tmp/xterm-one-instance-$UID
lockfile-create --retry 0 --use-pid $DOTLOCK_FILENAME || exit

trap atexit EXIT HUP INT TERM
xterm

仍然在5分33秒后阻止另一个xterm实例.我在手册页中阅读后发现这种行为令人困惑,我需要每五分钟触摸一次锁文件.

最佳答案
消息来源说:

 *  Without a pid in the lockfile, the lock
 *  is valid if it is newer than 5 mins.

因此,如果您使用–use-pid选项,似乎您不需要lockfile-touch.

转载注明原文:bash – lockfile-progs实用程序用法 - 代码日志