파이프라인 명령을 종료하는 방법은 무엇입니까?

파이프라인 명령을 종료하는 방법은 무엇입니까?

다음과 같은 간단한 스크립트가 있다고 가정합니다 action.sh.

#!/bin/bash
echo -n 'a' | nc a.b.c.d p

action.sha여기에 주소를 지정할 캐릭터 를 배치하세요 a.b.c.d.

그러나 nc때로는 중단되어 종료하고 싶을 때도 있습니다.

$ ./action.sh
^C

이것은 잘 작동하며 좀비가 남지 않습니다.

백그라운드에 두고 종료하려고 하면 nc활성 상태로 유지되므로 수동으로 정리해야 합니다.

& ./action.sh &
[1] 28747
& kill -15 28747 //here nc is still running! I have to find its PID and terminate it

종료 신호를 받았을 때 종료를 요청하는 방법도 있나요 action.sh?nc

답변1

#!/bin/bash

trap ctrl_c INT

function ctrl_c() {
    # redirect to stderr to avoid showing errors in case nc isn't found
    kill -9 $(pgrep nc) > /dev/null 2>&1
}

echo -n 'a' | nc a.b.c.d p

답변2

kill이는 다음을 호출하여 달성 할 수도 있습니다 .

kill 15 -28747

15종료 신호입니다(종료를 나타내려면 9를 사용하세요).28747내 질문에 있는 상위 프로세스의 PID입니다.

관련 정보