2603 번 글의 답장글: Re: 쉘 / 웹 연동? |
글쓴이: 산이
[홈페이지]
|
글쓴날: 2006년 12월 18일 23:51:02 월(저녁) |
조회: 2097 |
[초보서]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션)
:
>- 데몬버전(예:apache
1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타)
:
>-----------------------------------------
>
>웹연동 프로그램을 하려는데요
>
>
>
>
>
>리눅스 쉘에
>
>
>
>/home/shinlevel/Irenia.orig/start stop &
>
>
>명령어를 치는 것을 웹에서 실행하기위해
>
>
>
><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=euc-kr">
></HEAD>
><?
> $cmd = "/home/shinlevel/Irenia.orig/start stop &";
> system(EscapeShellCmd($cmd));
>?>
>
>
>
>
>이렇게 짜주었습니다.
>
>
>
>그러나 이 페이지를 실행해보면
>
>
>
>정상적인 실행 멘트는 뜹니다.
>
>
>
>그러나 문제는
>
>
>
>PS X 해보면 이 프로세서가 실제로 지속적으로 가동되지 않는
것 같습니다.
>
>
>
>
>
>지속적으로 백그라운드 가능하게
>
>
>
>웹에서 조정할 수 있게는 못하나요?
>
>
>PHP말고도 JAVA 등 이라도 좋습니다.
========================================
웹에서 실행하면 상당히 위험하지 않을까 쉽네요.
한번 실행하고 다시 해당 페이지를 누군가가 접근하면 또
실행하고... 반복..하다가 시스템이 먹통이 될 수 있습니다.
만약 꼭 웹에서 실행해야한다고
한다면 lock 같은 것이 필요합니다.
즉, 최초로 한번 실행하고 나서 lock 파일을 만들고,
두번째로 누눈가가 실행하면 lock 파일의 존재 여부에 따라서
실행할 것인지(lock 파일이 없는 경우) 아니면 실행하지
말것인지(lock 파일이 존재할 경우)를 체크하는 스크립트를
넣어야 합니다.
좀더 정교하게 하려면 lock 파일 보다는 해당 프로그램의
프로세스 존재
여부를 판별해서 실행하는 것이 좋습니다.
이 부분을 스크립트로 짤려면 상당히 까다롭습니다.
예를 들어 /etc/init.d/ 밑에 있는 스크립트들이 그 좋은
예입니다.
즉 start 스크립트에서 실행했는데 또다시 실행하면 어떻게
되는지
먼저 체크해 보세요. 실행이 두번 이상되면 안됩니다.
일단, 위의 명령어에서
/home/shinlevel/Irenia.orig/start stop &
를
/home/shinlevel/Irenia.orig/start stop >/dev/null 2>/dev/null &
이렇게 고쳐보세요.
|
이전글 : 쉘 / 웹 연동?
다음글 : 컴파일 시 /usr/bin/ld: errno 오류
|
from 222.234.153.39
JS(Redhands)Board 0.4 +@
|