Python實現腳本鎖功能,同時只能執行一個腳本


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

 端口鎖測試結果

結論

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM