首页 > 系统相关 >linux锁定脚本防止脚本重复运行

linux锁定脚本防止脚本重复运行

时间:2023-11-14 17:12:47浏览次数:48  
标签:脚本 name script lock scripts file linux 锁定

问题描述:设置在定时任务中的脚本一定要注意防止脚本重复执行,要不然会带来一些想象不到的结果。

 

方式一:使用锁定文件的方式来进行防止脚本重复运行,类似数据库socket文件,但是这种情况有一种弊端就是,如果脚本因为某些原因退出,但是lock文件没有被清理掉,就会导致下一次的脚本运行失败

# get script name
script_name=$(basename -- "$0")

# get script lock file
lock_file="/tmp/$script_name.lock"

# Check if script is run repeatedly
if [ -f $lock_file ]; then
  echo "`date '+%Y-%m-%d %H:%M:%S'` Another instance of $script_name is already running. Exiting." | tee -a $mylogfile
  exit 1
else 
  touch $lock_file
fi

# 程序执行体 # Delete scripts lock file find $lock_file -delete 2>&1 | tee -a $mylogfile

 

方式二:使用过滤脚本进程个数的方式判断脚本是否正在运行,这种方式要注意在脚本头一定要加上#!/bin/bash,否则系统可能会识别成为一个程序执行体,并不是一个脚本,导致过滤的时候有问题

#!/bin/bash
check_scripts() { # get script name script_name=$(basename -- "$0") # get script counts running_scripts=$(pgrep -fc "$script_name") # check the number of scripts if (( running_scripts > 1 )); then echo "`date '+%Y-%m-%d %H:%M:%S'` Another instance of $script_name is already running. Exiting." exit 1 fi } # Check if script is run repeatedly check_scripts

 

标签:脚本,name,script,lock,scripts,file,linux,锁定
From: https://www.cnblogs.com/avasteven/p/17832045.html

相关文章

  • Linux-AT命令干货分享,还不赶紧收藏!
    AT简介AT即Attention,AT指令集是从终端设备(TerminalEquipment,TE)或数据中断设备(DataTerminalEquipment,DTE)向终端适配器(TerminalAdapter,TA)或数据电路终端设备(DataCircuitTerminalEquipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(MobileStation,MS)的功能,与GSM......
  • 在Window系统中安装VMware虚拟机搭建Linux服务器
    1、什么是VMwareWorkstationVMwareWorkstationPro是一款桌面虚拟化软件。我们可以通过WorkstationPro在Windows或LinuxPC上运行多个操作系统作为虚拟机。它是运行虚拟机的行业通用标准,可以方便快速地使用Windows或者Linux。官网介绍:跨一系列不同的设备、平台和云构建、测试......
  • Mongodb安装-Linux
    查看服务器centos版本:cat/etc/redhat-release1、进入Mongodb官网:https://www.mongodb.com/,下载安装包  2、上传taz文件到服务器/home目录下,执行命令://解压压缩包tar-zxvfmongodb-linux-x86_64-rhel70-7.0.3.tgz//修改文件夹名mvmongodb-linux-x86_64-rhel70-......
  • Linux下C/C++配置与调试
    环境:Ubuntu18.04.6一.GCC简介:GCC是Linux下的编译工具集,是GNUCompilerCollection的缩写,包含gcc、g++等编译器,该工具及不仅包含编译器,还包含其他工具集,例如ar、num等。GCC工具集不仅能编译C/C++语言,其它例如Objective-C、Pascal、FOrtan、Java、Ada等语言均能进行编译。GC......
  • AlmaLinux 9.3 正式版发布下载 - RHEL 兼容免费发行版
    AlmaLinux9.3正式版发布下载-RHEL兼容免费发行版由社区提供的免费Linux操作系统,RHEL兼容发行版。请访问原文链接:https://sysin.org/blog/almalinux-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org由社区提供的免费Linux操作系统一个开源、社区拥有和......
  • 学无止境--Linux开发实用命令(不定时更新)
    备注:学习记录所用,若有高手不吝赐教,万分感谢!1、将文件夹p1、p2、p3压缩到pkg.tar.gz:  tar-czfpkg.tar.gzp1p2p32、解压缩:  tar-zxvfpkg.tar.gz3、查找  find.-name*.c|xargsgrep-n"字符串"  查找并删除xx:find.-name*xx-typed-print-execrm......
  • Linux安装Kafka
    前言本文Kafka演示版本依赖Zookeeper,需要先安装Zookeeper:Linux安装Zookeeper1.解压文件tar-zxvfkafka_2.12-2.7.02.修改配置文件,日志输出地址vimconfig/server.propertieslog.dirs=/opt/kafka_2.12-2.7.0/logs3.启动bin/kafka-server-start.sh-daemonconfig/s......
  • 049-第三代软件开发-软件部署脚本(一)
    第三代软件开发-软件部署脚本(一)文章目录第三代软件开发-软件部署脚本(一)项目介绍软件部署脚本(一)其他方式关键字:Qt、Qml、bash、shell、脚本项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的用户界面......
  • Linux下安装Zookeeper
    前言Zookeeper是java编写,所以需要先安装JDK环境:Linux安装JDK1.下载解压文件tarzxvfapache-zookeeper-3.6.3-bin.tar.gz2.在主目录下创建data和logs两个目录用于存储数据和日志:cd/opt/apache-zookeeper-3.6.3-binmkdirdatamkdirlogs3.在conf目录下新建zoo.cfg文件......
  • Red Hat Enterprise Linux (RHEL) 9.3 (x86_64, aarch64) - 红帽企业 Linux 9.3 发布
    RedHatEnterpriseLinux(RHEL)9.3(x86_64,aarch64)-红帽企业Linux9.3发布下载红帽企业Linux9请访问原文链接:https://sysin.org/blog/rhel-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org红帽企业Linux9红帽企业Linux9.3新增功能红帽企业Li......