다음 두 단계를 결합하고 싶습니다. 여기서 1단계의 출력(예: PORTS)이 2단계의 입력이 되어야 합니다.
1 단계:
다음 명령은 파일에서 포트 번호를 가져옵니다.
genpwdfile dec -in test/test.cfg -out /tmp/dec.out |grep PORT_NUM /tmp/dec.out | cut -d '=' -f2 ; grep MONITOR_PORT /tmp/dec.out | cut -d '=' -f2
산출:
33027
13041
2 단계:
다음 명령은 [1단계의 출력으로] 포트를 점유하고 있는 PID를 종료합니다.
lsof -i:33027 2>/dev/null | grep -v PID | awk '{print $2}' | xargs kill -9
lsof -i:13041 2>/dev/null | grep -v PID | awk '{print $2}' | xargs kill -9
샘플/tmp/dec.out
Test_DIR=/tmp
PORT_NUM=33027
TEST_PORT_WORK=7777
MONITOR_PORT=13041
저는 AiX 6.1 시스템에서 작업하고 있습니다.
뭔가 제안해주실 수 있나요?
답변1
쉘 루프를 사용하십시오. grep
두 개의 명령을 하나로 결합 할 수 있습니다 . genpwdfile
파일을 생성하는 경우 파이프하는 것은 의미가 없습니다. 이 시도:
genpwdfile dec -in test/test.cfg -out /tmp/dec.out &&
grep -E 'PORT_NUM|MONITOR_PORT' /tmp/dec.out | cut -d '=' -f2 |
while read -r port; do
lsof -i:"$port" 2>/dev/null |
awk 'NR>1{print $2}'
done | xargs kill -9