대기 및 종료에도 불구하고 생성된 프로세스 수 무제한(bash)

대기 및 종료에도 불구하고 생성된 프로세스 수 무제한(bash)

이 코드는 명령을 활성 상태로 유지하는 데몬이어야 합니다 nc. nc인스턴스가 죽으면 데몬이 작동해야 합니다 .갱생그것.

#!/bin/sh
if [ "$1" != "__forked__" ]; then
    setsid "$0" __forked__ "$@" &
    exit
else
    shift
fi

trap 'echo "Clean up and exit"; kill $nc_pid; exit' TERM
exec > outfile
exec 2> errfile
exec 0< /dev/null

while true; do
    (nc -lkp 1234 -e /usr/bin/bash &>/dev/null) &
    nc_pid=$!
    wait $nc_pid
    kill $nc_pid &>/dev/null
done

이 코드를 실행하면 이전 nc인스턴스를 종료하지 않고 새 인스턴스를 계속 생성합니다.

logan      14443  0.0  0.0   2588  1860 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14446  0.0  0.0   2588  1844 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14449  0.0  0.0   2588  1900 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14452  0.0  0.0   2588  1888 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14455  0.0  0.0   2588  1880 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14458  0.0  0.0   2588  1944 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
logan      14461  0.0  0.0   2588  1880 ?        S    18:45   0:00 nc -lkp 1234 -e /usr/bin/bash
...

내가 원하는 건하나nc언제든지 인스턴스를 사용할 수 있습니다. 이 코드를 수정하는 방법은 무엇입니까?

답변1

에서는 작동하지 않습니다 /bin/sh. 로 전환하면 /bin/bash작동합니다.

관련 정보