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("已經加鎖了");
端口鎖測試結果


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