serverA에 bash 스크립트가 있습니다. 스크립트는 serverB에 ssh로 접속하고 Yarn top 명령을 실행하여 메트릭을 추출하고 이를 serverA의 파일(test.txt)에 배치합니다. 내가 사용하는 명령은 다음과 같습니다.
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt
따라서 여기서 문제는 내 스크립트가 위 명령을 실행한 후 대화형 모드로 전환되고 crtl+c를 제공하거나 수동으로 신호/명령을 종료할 때만 종료된다는 것입니다.
어쨌든 위 명령을 실행하고 출력을 test.txt로 리디렉션한 후 스크립트는 다음 명령으로 이동해야 합니다. 즉, 명령 프롬프트에서 위 명령을 실행한 후 출력을 test.txt 파일로 리디렉션한 다음 명령 프롬프트/터미널로 돌아가야 합니다.
답변1
간단한 제안은 원하는 것을 얻을 때 파이프를 끊는 것입니다.
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" |
head -5 |
grep -w 'Applications' |
awk '{print "Pending_apps" "\t" $7; exit}' >> test.txt
이는 첫 번째 입력 줄을 받은 후 awk가 종료하도록 지시합니다(코드 블록에는 조건이 없기 때문입니다).