두 명령을 결합합니다. 즉, 첫 번째 명령의 출력이 두 번째 명령의 입력이 됩니다.

두 명령을 결합합니다. 즉, 첫 번째 명령의 출력이 두 번째 명령의 입력이 됩니다.

다음 두 단계를 결합하고 싶습니다. 여기서 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 

관련 정보