2012-08-03 3 views
2

나는 실행중인 모든 Java 프로세스를 찾기 위해 bash 쉘에서 jps를 사용하고 있습니다. jps가 출력하는 PID 목록을 사용할 수 있기를 원합니다. 나는 성공적배열로 jps 출력을 구문 분석합니다.

jps | awk '{print $1}' 

을 사용하여 화면에 인쇄 할 수 있지만, 두 개 이상의 프로세스가 실행 될 것으로 예상하고 내가 배열에 넣어 싶습니다. 그들이 사용하는 또 다른 예제를 찾았습니다

awk '{arr[$1]}' 

어레이에서 원했던 출력이 단일 열 이었기 때문에 발견했습니다. 이것은 배열에 넣으려는 PID의 열과 비슷합니다.

배열로 파이프를 연결할 수 있습니까? 필요한 경우 배열의 인덱스를 변경하는 데 문제가 있습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

모든 안내가 따뜻하게 환영받을 것입니다. 감사합니다. . 첫 번째 예를 바탕으로

답변

3

, 당신이 한 번

pids=($(jps | awk '{print $1}')) 

배열의 사용 bash는 배열의 모든 프로세스 ID를 캡처 할 수 있어야한다, 그들이 이상 반복 할 수 있습니다

for pid in "${pids[@]}"; do 
    echo $pid 
done 

또는 개별적으로 액세스

echo "${pids[0]}" 
echo "${pids[1]}" 

배열에 저장된 총 개수는 ${#pids[@]}.

+0

정말 잘됐다! 감사!! – ebeth

+0

목록에 넣으면 어떻게 분리합니까? 그것은 하나의 요소를 요구할 때 1111 2222를 제공합니다. 나는'tr'과'sed'에 관해서 몇 가지를 읽었지만, 두 개의 pid를 나누는 것에 그것을 적용하는 방법을 모르겠습니다. 필자가 보았던 대부분의 예제는 구획 문자와 새로운 라인을 없앴습니다. – ebeth

0

사용 xargs를 :

추신 보조 | grep -ie java | awk '{print $ 2}'| xargs echo

관련 문제