欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Linux】Linux中借助lockf机制,保证只有一个任务进程在执行

程序员文章站 2024-02-20 21:07:34
...

文件锁机制的作用:防止多个程序同时对一个不允许同时操作的工作做操作。

实现(lockf)
在Linux中我们可以借助lockf命令来实现文件锁机制
安装

tar -xzf lockf_linux.tar.gz
cd lockf_linux
make && make install

使用

lockf –help
-k 锁定文件,如果当前文件被锁,则输出 lockf:/tmp/create/lock :already locked
-s 锁定文件,不输出任何信息 silent
-t second :超时时间,超时就退出

应用示例:

lockf -s -t 0 /tmp/create.lock /usr/local/bin/php -f xxx.php

先判断/tmp/create.lock 文件是否被锁,被锁则立即退出,否则将会执行后面的脚本。

第一次运行会给/tmp/create.lock 文件上锁,并执行后面的命令,(如果不存在则创建)

当第二次运行该命令时,/tmp/create.lock 文件已经被锁,命令将会直接退出,而不会去执行后面的/usr/local/bin/php -f xxx.php 的脚本。

例子:

//增加lockf机制,保证只有一个任务进程在执行
function runScript($file, $num = 1)
{
    $cmd = getCmd($file);
    if ($cmd === false) {
        return false;
    }
    for ($i = 0; $i < $num; $i++) {
        $lock = '.' . md5($file . $i) . '.lock';  //随机生成一个隐藏文件名
        $realCmd = '/usr/bin/lockf -t 0 ' . $lock . ' ' . $cmd;   //会自动创建$lock文件,当lockf执行完后,会自动清除$lock文件
        //pclose(popen($cmd, 'r'));
        shell_exec($realCmd);
    }
}
相关标签: linux 应用