只允许一个python脚本实例?

CJ *_*lti 8 python linux singleton locking centos

我有一个python脚本,我想只允许在一台机器上运行一次.我希望它打印像"错误,已经运行"的东西,如果它已经在运行,无论是在后台运行还是在不同的ssh会话中运行.我该怎么做?这是我的剧本.

import urllib, urllib2, sys
num = sys.argv[1]
print 'Calling'
phones = [
'http://phone1/index.htm',
'http://phone2/index.htm',
'https://phone3/index.htm',
'https://phone4/index.htm',
'https://phone5/index.htm'
]
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1: 
    for phone in phones:
        try:
            urllib2.urlopen(phone,data) # make call
            urllib2.urlopen(phone+"?dialeddel=0") # clear logs
        except: pass
Run Code Online (Sandbox Code Playgroud)

PS如果重要,我正在使用CentOS 5.

fat*_*k92 3

  1. 您可以对文件实施锁定。
  2. 在执行开始时创建一个临时文件,并在运行脚本之前检查该文件是否存在。

请参阅这篇文章以获得答案 -检查 python 脚本是否正在运行