1. 文件锁
脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件。
通过文件的判断来确定脚本是否正在执行。
方法实现也比较简单,这里以python脚本为例
1 #coding=utf-8 2 # 3 # 文件锁脚本测试 4 # 5 import os #操作系统 6 import time 7 8 lockfilepath = "/opt/lock.txt"; 9 #判断文件是否存在 10 if os.path.exists(lockfilepath): 11 #文件存在,说明脚本正在执行 12 print("脚本正在执行") 13 else: 14 #文件不存在,创建文件,并执行任务。 15 lockfile = open(lockfilepath,"w+"); 16 print ("文件锁 任务模拟sleep 10s"); 17 time.sleep(10); 18 print ("任务模拟结束 sleep over "); 19 #删除文件 20 os.remove(lockfilepath);
文件锁测试结果
2.端口占用
使用socket模块,在脚本执行时,给系统中增加一个端口,在脚本执行完后释放。
脚本执行时,去创建这个端口,如果脚本还在执行,端口会创建失败,提示脚本还在执行。
实现方法也比较简单:Python脚本
1 #coding=utf-8 2 import time 3 import socket 4 5 suo = 1 6 try: 7 global hyf_suo 8 hyf_suo = socket.socket() 9 addr = ('',98889) 10 hyf_suo.bind(addr); 11 suo = 1; 12 except: 13 suo = 2; 14 print('already has an instance') 15 16 17 if(suo==1): 18 print ("锁住 sleep "); 19 time.sleep(10); 20 print ("sleep over "); 21 else: 22 print("已经加锁了");
端口锁测试结果
结论
以上两种方法都能实现脚本锁的功能,请根据情况选择合适的方法。