2014-02-07 7 views
1

정확한 문제를 찾을 수없는 문제가 있거나 어쨌든 모를 문제가 있습니다.php shell_exec가 두 번 작업을 실행합니다

나는 아래 명령을 PHP의 shell_exec를 통해 실행합니다. 나는 한 번 전화 한 사용자입니다.

컬 -o ./server.log --request POST 'crawlserver.xxx.local/workerCallback.php'--user 에이전트 'xxx'가 --data 'workerid = worker1에 & & 작업 ID = 25 offercount = 72 & file = '/ path/to/xxx-2014-02-07-serialized.txt'

이 명령은 30 초처럼 작동합니다.

나는 2 개 개의 다른 명령이 트리거보고, 다른 프로세스 ID

ps aux | grep workerCallback로 비난을 요청할 때 잠시. 그러나 server.log 파일을 보면 단일 요청을 찾고 있는데, db와 다른 것들도 검사합니다. 요청은 단일 작업이었습니다. 그러나 왜 다른 pid로 명령 줄에서 두 번 찾고 있으며 명령에 약간의 차이가 있습니다. 명령 앞에 "sh -c"가 무엇입니까?

100027384 0.0 0.0 4404 612? S 14:00 0:00 sh -c curl -o ./server.log --request POST 'crawlserver.xxx.local/workerCallback.php'- 사용자 에이전트 'xxx'- 데이터 'workerid = worker1 & 작업 ID = 25 & offercount = 72 & file = path/to/xxx-2014-02-07-serialized.txt '

1000 27385 0.0 0.0 88056 3756? S 14:00 0:00 curl -o ./server.log --request POST crawlserver.xxx.local/workerCallback.php - 사용자 에이전트 xxx - 데이터 workerid = worker1 & 작업 id = 25 & offercount = 72 & 파일 =/path/to/xxx-2014-02-07-serialized.txt

+1

1.'추신 보조 작업을 수행 할 때 – DanFromGermany

+0

을 명령 2. exec 명령 =이 작업을 간부 인하는 셸을 열고 | grep workerCallback' 2-4 개의 프로세스도 얻어야합니다. 하나는 ps이고, 하나는 grep이고, 하나 이상은 결과입니다. – DanFromGermany

+0

예 Dan, 이제는 이해합니다. 고맙습니다. – FZE

답변

3

두 명령이 동일하지 않은 경우 첫 번째 명령은 curl 명령을 실행하는 셸 (sh)입니다.

두 번째 명령은 명령입니다. 그래서

는 코드가 잘 작동 :)

+0

결과는 나에게 잘 작동하는 것을 보여줍니다. :)하지만 논리를 이해할 수 없으므로 여기에 자세한 설명을 주시겠습니까? – FZE

+0

셸 exec가하는 일에 대해 생각해 봐야합니다. 쉘 (sh)을 사용하여 명령을 실행합니다. 리눅스에서 어떤 명령을 실행 중일 때 sh와 같은 셸이나 보통 bash와 같은 셸을 사용하면 가능합니다. 이것이 바로 여기서 일어나는 일입니다. – edmondscommerce

관련 문제