블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2013. 3. 22. 13:25 프로그래밍/파이썬

파이썬 스크립트를 만들어서 사용하다보면 불가피하게 중복실행을 방지해야할 필요가 있다. 그럴 때는 아래와 같은 코드를 이용하면 쉽게 피할 수 있다.


import fcntl
pid_file = 'program.pid'
fp = open(pid_file, 'w')

try:
    fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
    # another instance is running
    sys.exit(1)

스크립트가 실행되면 program.pid에 락을 걸어서 중복실행을 막는 구조로 되어있다. 이러한 경우 파일을 처음 만들어 쓴 유저로 권한이 가기때문에 권한 문제가 생길 수 있으니 주의해야한다.


출처 : http://stackoverflow.com/questions/220525/ensuring-a-single-instance-of-an-application-in-linux


posted by 흰색앵초