首页 > 系统相关 >linux 系统shell脚本防止同一时间被多次重复执行

linux 系统shell脚本防止同一时间被多次重复执行

时间:2023-11-20 17:25:34浏览次数:46  
标签:脚本 shell script lock linux executing exit 多次重复 执行

前言

当shell脚本中需要执行的步骤较多、耗时较长时,为了避免脚本被其它进程重复执行导致操作逻辑被打乱,需要使该脚本同一时间内只能被一个进程执行,类似C# 中的lock 代码块操作,确保线程安全

代码

#!/bin/bash

# 创建文件锁路径
lock_file=/tmp/my_script.lock

# 信号处理函数
function cleanup() {
  rm -f "$lock_file"
  exit 1
}

# 在中断和退出脚本执行时,删除掉文件锁
trap cleanup 2 Exit

# 使用 flock 命令创建文件锁并执行脚本
(
  flock -n 9 || {echo "script is executing by another process! exited";exit 1;}
   
   
  # 此处为脚本主要内容
  echo "Start executing the script..."
  #do something
  echo "Finish executing the script."
  exit 0
) 9>"$lock_file"

标签:脚本,shell,script,lock,linux,executing,exit,多次重复,执行
From: https://www.cnblogs.com/Mxy-cnblog/p/17844387.html

相关文章

  • linux查看每个cpu核心使用率
    Linux是一种开源的操作系统,它被广泛应用于各种计算机设备和服务器。在Linux系统中,我们可以使用一些命令来查看每个CPU核心的使用率。以下是一些常用的方法: 1.使用top命令:top命令是一个实时的系统监控工具,可以显示当前系统的各种信息,包括CPU的使用率。在终端中输入top命令后,......
  • Linux 用户和用户组管理
    一、Linux系统用户账号的管理1、添加新的用户账号使用useradd命令,其语法如下:useradd选项用户名参数说明:选项:-ccomment指定一段注释性描述。-d目录指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g用户组指定用户所属的用户组。-G用户组,用......
  • 第一个Shell脚本
    1.先创建.vimrc文件,自动生成shell脚本注释setignorecase#设置忽略大小写查找setcursorline#设置高亮当前行setautoindent#设置在插入模式下,对每行按与上行同样的标准进行缩进autocmdBufNewFile*.shexec":callSetTitle()"funcSetTitle(......
  • Linux常用命令记录
    Linux常用命令记录系统目录结构文件与目录管理命令Linux的文件目录是树状结构,最顶级的目录为根目录/,其他目录是通过挂载将其添加到文件树上,通过解除挂载将其移除。首先先了解什么是绝对路径和相对路径绝对路径:从根目录开始的完整路径描述,通常以/开头,从根目录root一直到......
  • 第一个Shell脚本
    1.先创建.vimrc文件,自动生成shell脚本注释setignorecase#设置忽略大小写查找setcursorline#设置高亮当前行setautoindent#设置在插入模式下,对每行按与上行同样的标准进行缩进autocmdBufNewFile*.shexec":callSetTitle()"funcSetTitle(......
  • shell 中| && || () {} 用法以及shell的逻辑与或非
    前面几个比较简单|管道符,基本用法就是command1|command2,就是把前面的输出作为后面的输入&&就是合并两个命令,第一个命令成功的话才会执行第二个命令||不管第一个命令成功与否,第二个命令始终执行(这里说错了,应该是第一个执行不成功,才会执行第二个)重点学习()运算......
  • Linux第六章I/O重定向与管道
    1、I/O重定向(1)tty显示终端的号码date会显示当前时间date> date.txt会把时间的结果写入date.txt里(2)tty打开一个终端4将终端3的日期输出结果重定向到终端4date>/dev/pts/4(3)利用passwd改密码,系统会产生一个进程,其PID为10277ls/proc/10277/fd可以查看内核与进程......
  • Linux第五章进程管理11.10
    1、查看进程(1)psaux可以查看静态进程(2)psaux--sort-%cpu可以按照cpu占用的百分比的降序排列(3)ps-ef可以查看UID,PID,PPID等信息(4)psaxo可以自定义显示的字段2、动态查看进程(1)使用top命令;按回车键立马更新;按M键以内存占用率排序;按P键以cpu占用率排序;按N键用PID数值......
  • Linux第四章文件权限(2) 2023.11.1
    1、SUID权限(1)普通用户可以通过SUID用户提权chmodu+s/usr/bin/cat(2)在一个目录上添加SGID,该目录新创建的文件会继承其属组chmodg+s/home/hrll-d/home/hrtouch/home/hr/file03ll/home/hr2、Sticky权限添加Sticky后,当用户对目录具有w,x权限在该目录下建立的文件或目......
  • linux shell "<" 、 "<<" 、 ">" 、">>" 的含义
    linux关于标准输入输出的规定Linux规定一下文件描述符文件描述符文件对应设备0标准输入keyboard,mouse1标准输出屏幕监视器2错误输出屏幕监视器输出重定向>,>>>和>>都是输出重定向符号其中>是重写>>是追加到文件进阶Shell中1>&22>&1&>......