apache 재시작시 web(php)에서 실행시킨 스크립트나 프로세서도 같이 죽어 버리는 현상에 대해
글쓴이: song0369 / 작성시간: 수, 2011/10/26 - 10:56오전
안녕하세요.
웹서버에서 php소스에서 exec를 활용해서 스크립트를 실행시키고 있습니다.
그런데 apachectl restart로 아파치의 재시작이 일어나면
php에서 실행시킨 스크립트(아니면 스크립트에서 실행시킨 프로그램도 같이)도 같이 죽어버리는 현상이 발생하고 있습니다.
php에서 실행시
exec("/etc/aaa/test.sh &");
exec("sudo /etc/aaa/test.sh &");
exec("nohup /etc/aaa/test.sh &");
exec("sudo nohup /etc/aaa/test.sh &");
exec("nohup sudo nohup /etc/aaa/test.sh &");
등등으로 실행시켜도 test.sh가 죽거나, test.sh에서 실행시킨 프로그램이 같이 죽어버립니다.
이것저것 테스트 하다가 부팅시 /etc/init.d/에서 test.sh가 자동실행되도록 되어 있어서 실행된후,
apache를 재시작해도 test.sh가 죽지 않습니다.
처음엔 권한문제인줄 알고 sudo로 권한을 줘도 안되고, nohup로 죽지말라고 해도 안되고... 이것저것 해보고 있지만
영 원인조차 파악이 안되네요.
공통된 현상이, web이랑 관련된 스크립트(웹에서 실행된 스크립트)나 프로그램이 죽는거 같습니다.
원인도 제대로 찾질 못하고 있으니 답답하네요.
원인이라도 찾는 방법이나 방향 아시는분의 조언 부탁 드립니다.
읽어주셔서 감사합니다.
Forums:
한가지 알아냈네요. 역시나 apache가
한가지 알아냈네요.
역시나 apache가 문제였습니다.
apachectl restart (stop)을 걸면 web에서 실행시킨 프로세서는 죽는데,
apachectl graceful 을 하면 web에서 실행시킨 프로세서가 죽질 않네요.
graceful옵션을 보니 연결되어 있는 httpd는 죽이지 않고 새로 실행시킨다고 하는데, 이거랑 관련해서 문제가 있는거 같습니다.
어떻게 해야지 http세션이랑 상관없이 독립적으로 실행되어 apache중지해도 별개로 실행되도록 하는지 알아내면 될거 같네요.
아시는 분들의 답변 부탁 드립니다.
댓글 달기