1. 程式人生 > >Python實現指令碼鎖功能,同時只能執行一個指令碼

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("已經加鎖了");

 

埠鎖測試結果

結論

以上兩種方法都能實現指令碼鎖的功能,請根據情況選擇合適的方法。

轉載:https://www.cnblogs.com/loveincode/p/6834918.html