이것을 사용
OF=$(ps fax | grep 'php-fpm: master process' | awk '{print $1}')
IDX=`expr index $OF ' '`
오류가 발생합니다. $OF 변수의 결과는 다음과 같습니다.
27797 27495
여기서 무슨 문제가 있습니까? 나는 이것이 변수가 표현식에 전달되는 방식과 관련이 있다고 생각합니다. 또한 $OF 변수 주위에 ' 따옴표를 추가해 보았으나 소용이 없었습니다. 찾을 수 없으면 0을 반환합니다.
답변1
pgrep
grep을 사용해야합니다프로세스 번호프로세스. 이것이 가장 안전한 방법입니다. 일부 시스템(이전 시스템)은 그렇지 않으므로 어쩔 pgrep
수 없이 ps
. ps
귀하의 라인에서는 awk를 사용하여 이 모든 것을 처리할 수 있으므로 필요하지 않은 grep
and를 사용합니다.awk
of=$(ps fax | awk '/[p]hp-fpm: master process/{print $1}')
참고로. 일반 변수 이름에는 대문자를 사용하지 마십시오. 관례적으로 환경 변수는 대문자로 표시됩니다.
이 단계에서는 귀하의 변수가 $of
저장됩니다 . 귀하의 질문이 불분명하므로 거기에서 무슨 일이 일어나고 있는지 php-fpm
잘 모르겠습니다 .expr
답변2
당신은해야합니다큰따옴표:
IDX=`expr index "$OF" ' '`
따옴표가 없으면 expr
명령은 다음과 같습니다.
expr index 27797 27495 ' '
이것은 말이 되지 않습니다. 작은따옴표를 사용하면 , 및 (공백 없이) expr
로 구성된 3자의 긴 문자열을 전달합니다. 변수를 큰따옴표로 묶는 것은 거의 항상 좋은 생각입니다. 이는 값에 공백이나 기타 특수 문자가 포함될 수 있는 경우 매우 중요합니다.$
O
F