2013-06-12 2 views
2

파이썬 스크립트는 매 시간마다 죽여야하고 재시작해야합니다. 사용자 로그인 팝업 또는 다른 이유로 인해 브라우저 창이 멈춰서는 경우가 종종 있습니다 (스크린 샷을 만들 때 가능하기 때문에). 어쨌든. 나는 2 개의 파일 'reload.py'와 'screenshot.py'를 만들었다. 나는 cronjob에 의해 reload.py를 실행한다. 파이썬 프로세스 이름 설정

는이 같은 일이

# kill process if still running 
try : 
     os.system("killall -9 screenshotTaker"); 
except : 
     print 'nothing to kill' 

# reload or start process 
os.execl("/path/to/script/screenshots.py", "screenshotTaker") 

문제이며, 제가 execl 함수 (주어진 프로세스 이름)의 두 번째 인수를 aswel 읽을 작동하지 않는 일을 것이라고 생각? 어떻게해야 죽일 수 있도록 프로세스 이름을 설정할 수 있습니까?

미리 감사드립니다.

+0

내가 os.kill' 더 나은 것 '이라고 생각합니다. –

+0

[가능한 효과적인 프로세스 이름을 파이썬으로 변경하는 방법이 있습니까?] (http://stackoverflow.com/questions/564695/is-there-a-way-to-change-effective-process-name-in -python) –

답변

1

os.execl의 첫 번째 인수는 실행 파일의 경로입니다. 나머지 인수는 명령 행에 입력 된 것처럼 실행 가능 파일로 전달됩니다.

"screenshotTaker"를 프로세스 이름으로 지정하려면 "screenshots.py"의 책임입니다. 그 대본에서 그 의미에서 특별한 것을합니까?

BTW, 더 일반적인 방법은 실행중인 프로그램의 PID를 추적하는 것입니다 (/ var/run/보통). 그리고 PID에 의해 그것을 죽이십시오. 이것은 파이썬으로 할 수 있습니다 (os.kill 사용). 시스템 레벨에서, 일부 배포판에는 정확한 목적을위한 도우미가 있습니다. 예를 들어, 데비안에는 start-stop-daemon이 있습니다. 여기에 사람의 발췌입니다

start-stop-daemon(8)   dpkg utilities   start-stop-daemon(8) 

NAME 
     start-stop-daemon - start and stop system daemon programs 

SYNOPSIS 
     start-stop-daemon [options] command 

DESCRIPTION 
     start-stop-daemon is used to control the creation and termination of 
     system-level processes. Using one of the matching options, 
     start-stop-daemon can be configured to find existing instances of a 
     running process. 
+0

설명 주셔서 감사합니다! 웹 사이트 이름이있는 1 백만 개가 넘는 레코드가있는 데이터베이스가 있습니다. 이 웹 사이트의 스크린 샷을 만들어야하는데, 이것은 'screenshots.py'에서 데이터베이스의 레코드를 가져 와서 샷을 찍습니다. 나는 그 덕분에 os.kill을 사용 하겠지만, screenshot.py에 프로세스 이름을 설정해야합니다. ? 어떻게해야합니까? 파이썬으로 지금은 가능하지 않다는 것을 알았습니까? – directory

+0

지금은 조금 해결 방법을 만들었습니다. 나는 screenshots.py에서 pid를 mysql 데이터베이스에 저장한다. reload.py는 데이터베이스에서 PID ID를 가져 와서 삭제/삭제합니다. 하지만 프로세스 이름을 설정하면 훨씬 더 깨끗하게 될 것입니다. – directory