Python实现脚本锁功能,同时只能执行一个脚本
1. 文件锁
脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件。
通过文件的判断来确定脚本是否正在执行。
方法实现也比较简单,这里以python脚本为例
#coding=utf-8
#
# 文件锁脚本测试
#
import os #操作系统
import time lockfilepath = "/opt/lock.txt";
#判断文件是否存在
if os.path.exists(lockfilepath):
#文件存在,说明脚本正在执行
print("脚本正在执行")
else:
#文件不存在,创建文件,并执行任务。
lockfile = open(lockfilepath,"w+");
print ("文件锁 任务模拟sleep 10s");
time.sleep(10);
print ("任务模拟结束 sleep over ");
#删除文件
os.remove(lockfilepath);
文件锁测试结果


2.端口占用
使用socket模块,在脚本执行时,给系统中增加一个端口,在脚本执行完后释放。
脚本执行时,去创建这个端口,如果脚本还在执行,端口会创建失败,提示脚本还在执行。
实现方法也比较简单:Python脚本
#coding=utf-8
import time
import socket suo = 1
try:
global hyf_suo
hyf_suo = socket.socket()
addr = ('',98889)
hyf_suo.bind(addr);
suo = 1;
except:
suo = 2;
print('already has an instance') if(suo==1):
print ("锁住 sleep ");
time.sleep(10);
print ("sleep over ");
else:
print("已经加锁了");
端口锁测试结果


结论
以上两种方法都能实现脚本锁的功能,请根据情况选择合适的方法。
Python实现脚本锁功能,同时只能执行一个脚本的更多相关文章
- 让powershell同时只能运行一个脚本(进程互斥例子)
powershell,mutex,互斥,进程互斥,脚本互斥 powershell脚本互斥例子,在powershell类别文章中,声明原创唯一. powershell 传教士 原创文章 2016-07- ...
- Shell脚本中引用、调用另一个脚本文件的2种方法
Shell脚本中引用.调用另一个脚本文件的2种方法 http://www.jb51.net/article/67903.htm
- 既然CPU一次只能执行一个线程,那多线程存在的意义是什么?
今天看到了一篇文章,终于解除了一直的疑惑. 原文链接:https://www.cnblogs.com/qingbafengliuxia/p/10171638.html CPU的时间是按 ...
- 既然CPU同一时间只能执行一个线程,为什么存在并发问题
一点小疑惑终于解开啦 1.CPU的时间是按时间片分的,而不是一个时间点,并发问题是由于CPU线程切换导致的. 现在假设有一段代码 if(i == 1) { i++; //断点1 system.out. ...
- MYSQL动态查询拼接的表名的SQL脚本实现(MYSQL动态执行SQL脚本)
可以使用MYSQL的预处理逻辑:https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html 例如: pr ...
- 利用python执行shell脚本 并动态传参 及subprocess基本使用
最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 su ...
- fancybox 在打开窗口前 先执行 js脚本,fancybox设置只能通过右上角关闭,fancybox遮罩层关闭
在默认情况下,fancybox点击之后弹出窗口,右上角带有一个XX,但是点击窗口的其他遮罩层或者是其他地方,都是可以关闭fancybox的,有些时候,我们不希望这样关闭,而是只能点击右上角关闭,那么设 ...
- 对于Python的GIL锁理解
GIL是什么 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可 ...
- Yii2 console执行定时脚本
为什么要做crontab脚本 我们的项目使用YII2开发,并不是很大的一个电商平台,pv.IP访问量并不是很高,但客户的数据是日积月累已经产生100万条数据了,之前更新订单等数据使用定时脚本直接访问内 ...
随机推荐
- 模拟在内存中的数据库DataSet相关的类
这篇连着上一篇DataReader相关类. 下面两段话是在msdn官网摘下来: .NET Framework 数据提供程序是专门为数据操作以及快速.只进.只读访问数据而设计的组件.Conn ...
- 000 Python之禅
The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simp ...
- iOS开发之NSObject的多线程
1.NSObject的多线程方法(用的时候要用@autoreleasepool{}包起来) 开启后台执行任务的方法: - (void)performSelectorInBackground:(SEL) ...
- 认识J2SE
1. J2SE的定义 J2SE:全称为Java 2 Standard Edition.Java 2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本. J2SE主要包括UI. ...
- 小程序新能力-个人开发者尝鲜微信小程序
个人开发者的福利 微信小程序,刚听到这个新名词的时候,我就兴冲冲的去找入口,看看自己能不能搞个微信小程序的HelloWorld,毕竟能在微信上把自己写的一些小工具跑起来还是满炫酷的. 没想,网上一查, ...
- CentOS6.5下安装oracle11gR2
安装前须知 内存(RAM)的最小要求是 1GB,建议 2GB 及以上. 虚拟内存 swap 建议:内存为 1GB~2GB 时建议swap大小为内存大小的 1.5 倍:内存为 2GB~16GB 时建议s ...
- python学习随笔(一)
我是为记录学习python的过程而开通了博客,希望以后自己能看看,也希望能分享一些给初学者. 话不多说,开始第一篇. (一)python解释器. python2和3,现在python2是主流,但是py ...
- 【WCF】错误处理(三):错误协定
最近折腾换电脑的事,博客就更新慢了点.好,不废话,直入正题. 前面老周介绍过,SOAP消息中的错误信息是用一个 Fault 元素来包装的,前面老周也讲了其中的 FaultCode 元素,即可以对错误信 ...
- C#研究OpenXML之路(4-使用第三方库)
一.悲催的OpenXML操作 学习并使用了一段时间的OpenXML,感觉用这个来操作Excel文件真是一件非常悲催的事情,由于我自己比较熟悉Excel COM的操作,但到了OpenXML中发现,之前所 ...
- 老李分享:《Linux Shell脚本攻略》 要点(五)
老李分享:<Linux Shell脚本攻略> 要点(五) //1.打包.解包 [root@localhost program_test]# tar -cf output.tar 11. ...