应用场景

设置了一个每隔一小时执行的cron任务,但发现脚本执行时间大于1小时,所以在下一小时内会有两个该脚本在执行,为了避免这种情况,需要设置文件锁lockf(freebsd下为lockf,linux下为flock),在脚本执行前需要检测能否获取某个文件锁,防止脚本运行冲突。

安装

点击下载package:lockf_linux.tar.gz

然后安装

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

默认安装到 /user/bin目录下,可以在makefile更改安装路径。

使用

$ lockf --help
usage: lockf [-ks] [-t seconds] file command [arguments]

比如:

*/30 * * * * ( lockf -s -t 0 /tmp/create.lock /usr/local/php/bin/php -f /home/test.php >> create.log 2>&1)

每次执行脚本前需要获取临时文件create.lock的文件锁,如果当前create.lock被锁住了,则当前任务不等待立即退出。

参数说明:

-k:一直等待获取文件锁,如果文件锁已经被锁住则输出:lockf: /tmp/create.lock: already locked

-s:silent,不输出任何信息

-t seconds:timeout时间,超时就退出

文件锁(lockf)相关推荐

  1. Linux文件锁学习-flock, lockf, fcntl

    参考  linux中fcntl().lockf.flock的区别 这三个函数的作用都是给文件加锁,那它们有什么区别呢? 首先flock和fcntl是系统调用,而lockf是库函数.lockf实际上是f ...

  2. linux lockf文件锁存在,进程停止,Linux文件锁学习-flock, lockf, fcntl

    这三个函数的作用都是给文件加锁,那它们有什么区别呢? 首先flock和fcntl是系统调用,而lockf是库函数.lockf实际上是fcntl的封装,所以lockf和fcntl的底层实现是一样的,对文 ...

  3. linux中lockf的例子,小何讲Linux: 文件锁及其实例

    1.  文件锁基本概念 Linux中软件.硬件资源都是文件(一切皆文件),文件在多用户环境中是可共享的. 文件锁是用于解决资源的共享使用的一种机制:当多个用户需要共享一个文件时,Linux通常采用的方 ...

  4. Linux进程间通信中的文件和文件锁

    Linux进程间通信中的文件和文件锁 来源:穷佐罗的Linux书 前言 使用文件进行进程间通信应该是最先学会的一种IPC方式.任何编程语言中,文件IO都是很重要的知识,所以使用文件进行进程间通信就成了 ...

  5. Perl IO:文件锁

    文件锁 当多个进程或多个程序都想要修同一个文件的时候,如果不加控制,多进程或多程序将可能导致文件更新的丢失. 例如进程1和进程2都要写入数据到a.txt中,进程1获取到了文件句柄,进程2也获取到了文件 ...

  6. python os 文件锁_python 中给文件加锁——fcntl模块

    如果没有fcntl模块则用 sudo pip install fcntl安装 模块简单说明: 打开文件,不存在则创建之 f = open('./test','w') fcntl.flock(f,fcn ...

  7. 嵌入式Linux基础学习笔记-文件IO编程-文件锁(1)

    文件锁-文件共享 共享资源竞争问题的解决方法:文件锁. 文件锁包括 建议性锁 要求每个上锁文件的进程都要检查是否有锁存在,并且尊重 已有的锁 强制性锁 由内核执行的锁,当一个文件被上锁进行写入操作的时 ...

  8. linux中fcntl()、lockf、flock的区别

    fcntl().lockf.flock的区别 --lvyilong316 这三个函数的作用都是给文件加锁,那它们有什么区别呢?首先flock和fcntl是系统调用,而lockf是库函数.lockf实际 ...

  9. golang下文件锁的使用

    前言 题目是golang下文件锁的使用,但本文的目的其实是通过golang下的文件锁的使用方法,来一窥文件锁背后的机制. 为什么需要文件锁 只有多线程/多进程这种并发场景下读写文件,才需要加锁, 场景 ...

最新文章

  1. 设置redis能远程访问
  2. 操作系统01_进程和线程管理
  3. 组织模式 - Introduction
  4. linux c 禁止对外通信,Linux C套接字:在recv调用时被阻止
  5. LeetCode之两数之和
  6. 牛客14718 开心的涂刷
  7. MySQL实现分页查询
  8. 利用正则按固定长度分割字符串
  9. asterisk php agi,asterisk AMI入门
  10. C# 实现程序最小化到托盘
  11. 【第24章】工控安全需求分析与安全保护工程(软考:信息安全工程师)-- 学习笔记
  12. 啊哈 c语言pdf百度云,啊哈c语言完整版
  13. java scjp考试_通过Java认证 SCJP 考试之精辟总结
  14. 74LS138设计一位二进制全减器
  15. 我,90后,从审计员到程序员,四年在南京买房
  16. 【深度分析】汽车零部件供应商管理+采购体系
  17. 【模型库】大卡车货车 集装箱 叉车 三维模型
  18. 关于Ubuntu14.04拼音不能正常使用的解决方案
  19. 全网唯一OpenCyphal/UAVCAN教程(10)canfd协议详解
  20. 手机数控模拟器安卓版_数控机床模拟器下载

热门文章

  1. MTK6592 GPIO模拟I2C
  2. wm6 打开外部文件方法
  3. Linux Deepin
  4. 基金操作术语与收益术语
  5. C# NewtonJson 使用技巧
  6. 仿iPhone开关按钮switch
  7. C# Form在Panel居中问题绝对的解决方案
  8. android 自带备份软件下载,手机备份还原下载
  9. 百度、豆丁、道客巴巴文库免费下载
  10. 用Qt的MinGW编译VTK9.0.1