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("已經加鎖了");
埠鎖測試結果
結論
以上兩種方法都能實現指令碼鎖的功能,請根據情況選擇合適的方法。