1. 文件鎖
腳本啟動前檢查特定文件是否存在,不存在就啟動并新建文件,腳本結(jié)束后刪掉特定文件。
通過文件的判斷來確定腳本是否正在執(zhí)行。
方法實現(xiàn)也比較簡單,這里以python腳本為例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#coding=utf-8 # # 文件鎖腳本測試 # import os #操作系統(tǒng) import time lockfilepath = "/opt/lock.txt" ; #判斷文件是否存在 if os.path.exists(lockfilepath): #文件存在,說明腳本正在執(zhí)行 print ( "腳本正在執(zhí)行" ) else : #文件不存在,創(chuàng)建文件,并執(zhí)行任務(wù)。 lockfile = open (lockfilepath, "w+" ); print ( "文件鎖 任務(wù)模擬sleep 10s" ); time.sleep( 10 ); print ( "任務(wù)模擬結(jié)束 sleep over " ); #刪除文件 os.remove(lockfilepath); |
文件鎖測試結(jié)果
2.端口占用
使用socket模塊,在腳本執(zhí)行時,給系統(tǒng)中增加一個端口,在腳本執(zhí)行完后釋放。
腳本執(zhí)行時,去創(chuàng)建這個端口,如果腳本還在執(zhí)行,端口會創(chuàng)建失敗,提示腳本還在執(zhí)行。
實現(xiàn)方法也比較簡單:Python腳本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#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 ( "已經(jīng)加鎖了" ); |
端口鎖測試結(jié)果
結(jié)論
以上兩種方法都能實現(xiàn)腳本鎖的功能,個人更傾向于使用第二種方法。端口鎖的方法。
以上所述是小編給大家介紹的Python實現(xiàn)腳本鎖功能(同時只能執(zhí)行一個腳本),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!
原文鏈接:http://www.cnblogs.com/FLFL/p/6834918.html