首页 > 系统相关 >Linux的文件锁-flock,控制程序重复执行

Linux的文件锁-flock,控制程序重复执行

时间:2024-12-27 11:43:15浏览次数:5  
标签:脚本 文件 -- 控制程序 Linux 进程 flock 执行

Linux的文件锁-flock,控制程序重复执行

在使用crontab管理定时脚本时,如果设定的脚本执行时间间隔较短,例如5分钟执行一次,正常情况下,脚本执行耗时1分钟,在非正常情况下(如服务器压力较大的情况下,或数据量突然增大),脚本执行时间超过5分钟,这时就会造成多个脚本同时执行,严重时甚至拖垮服务器,影响服务器上的其它服务

这时就需要Linux的文件锁-flock!

flock简介:

当多个进程可能会执行同一个脚本,这些进程需要保证其它进程没有在操作,以免重复执行。通常,这样的进程会使用一个「锁文件」,也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作。

flock -h

Usage:
 flock [options] <file|directory> <command> [command args]
 flock [options] <file|directory> -c <command>
 flock [options] <file descriptor number>

Options:
-s, --shared:    获得一个共享锁
-x, --exclusive: 获得一个独占锁
-u, --unlock:    移除一个锁,通常是不需要的,脚本执行完会自动丢弃锁
-n, --nonblock:  如果没有立即获得锁,直接失败而不是等待
-w, --timeout:   如果没有立即获得锁,等待指定时间
-o, --close:     在运行命令前关闭文件的描述符号;
                用于如果命令产生子进程时会不受锁的管控
-c, --command:   在shell中运行一个单独的命令
-h, --help       显示帮助
-V, --version:   显示版本

案例:

*/5 * * * * flock -xn /tmp/test.lock -c 'bash /home/chaic/test.sh'

当/tmp/test.lock被进程占用时,别的进程就不会再重复执行文件。还有一个好处是,不需要手动释放锁,禁止执行完之后会自动释放对lock文件的占用

标签:脚本,文件,--,控制程序,Linux,进程,flock,执行
From: https://www.cnblogs.com/xulinforDB/p/18633433

相关文章

  • 【linux合集】单机部署clickhouse--ubuntu环境
    clickhouse单机部署--ubuntu部署导入clickhouse密钥操作(ClickHouse(大数据分析DBMS)的软件包由其开发人员使用公钥进行签名,我们需要在我们的系统上使用它。这是因为只有我们的系统才能验证我们得到的软件包,它们来自源代码,因为它们是由其开发人员发布的。并且没有被中间的任何人修......
  • Linux磁盘阈值及内存阈值检测脚本
    #!/bin/bash#设置阈值,例如磁盘使用率超过80%,内存使用率超过90%DISK_THRESHOLD=90MEMORY_THRESHOLD=99#获取磁盘使用百分比(这里以根目录为例)DISK_USAGE=$(df/--output=pcent|grep-o'[0-9]\+')#获取内存使用百分比MEMORY_USAGE=$(free|grepMem|awk'{print......
  • linux 点对点语音通话及直播推流实践一: linux USB声卡或耳机 基本配置
    inuxUSB声卡或耳机基本配置工具安装查看设备录放音操作录音放音声音配置获取控制信息音量配置本文介绍linux下alsa声音原件工具使用方法,包括设备查询、声卡基本配置、录音放音等。保证alsa套件可正常操作和配置声卡,是实现SIP语音通话、音视......
  • linux 点对点语音通话及直播推流实践二: SRS流媒体服务器搭建及推流验证
    linux下基于SRS的流媒体服务器搭建及推流验证SRS介绍SRS功能特点协议支持广泛低延迟特性高并发处理能力易于扩展和定制应用场景直播领域视频监控与安防领域企业内部通信与培训Linux下搭建SRS流媒体服务安装运行查看状态推流验证ffmpeg推......
  • 【Linux】基础指令--(xshell - < unbuntu > )
    文章目录ls指令pwd命令cd指令touch指令mkdir指令rmdir指令&&rm指令rm命令可以同时删除文件或目录man指令cp指令mv指令cat指令more指令less指令head指令tail指令date指令cal指令find指令which指令whereis指令alias指令grep指令zip/unzip指令关......
  • 你自己安装过linux系统吗?
    作为前端开发,我本身并没有物理实体,也无法直接安装操作系统。但是我可以提供关于安装Linux系统的详细指导和建议。对于前端开发工作者来说,安装Linux系统可能是一个有益的选择,因为Linux提供了强大的命令行工具、开源软件支持以及稳定的开发环境。以下是一个基本的Linux系统安装步骤......
  • Linux内核蓝牙子系统有什么(8)
    接前一篇文章:Linux内核蓝牙子系统有什么(7) 本文内容参考:Linux之蓝牙相关代码浅析|DD'Notes蓝牙驱动相关代码_蓝牙驱动代码-CSDN博客linux蓝牙驱动代码阅读笔记_bt-sco.c-CSDN博客Linux内核的蓝牙子系统架构-CSDN博客BlueZ-Linux平台上的蓝牙协议栈-CSDN博客蓝牙模......
  • 【Linux】:初识网络
    ......
  • Linux操作
    一、远程连接Linux#linux远程控制telnet协议:明文ssh:加密#查看ip地址ipaddr/ipaddress#远程登录linux系统sshroot@192.168.0.1#断开连接exit#重启系统reboot#立即关机shutdowm-hnow#10分钟后关机shutdown-h10二、文件操作1.切换目录cd#cd全称......
  • 波折重重:Linux实时系统Xenomai宕机问题的深度定位
    目录一前言二背景三原因分析及措施硬件原因应用软件操作系统四分析定位转机拨云见雾irq计数Schedstatcoreclk现象结论五原因一六原因二七解决八结语一前言在上一篇博文中,我们详细介绍了Xenomai的看门狗机制。本文将带您深入了解一个与之相关的真实事故现场及其问题定位......