rsh에는 timeout 기능이 없다. 있긴 한데.. 디폴트값으로 45초~1분사이의 값인 것 같다.

rsh을 쓰는 경우.. timeout이 걸릴때까지 시간이 소요되면, 동작이 잘 안될 수 있다.

 

겨우 찾은 샘플 소스..

백그라운드로 돌리고, 프로세스 id를 받아놓고, wait했다가 바로 kill 해주는 센스!!

 

 

 

http://groups.google.com/group/comp.unix.admin/msg/a0a2aefc71b7c631

 

 

 

 #!/bin/sh

timeout=$1
case $timeout in
[1-9]*) shift;;
*) timeout=10;;
esac

case $# in
0) echo 'Usage: timeoutrsh [timeout] cmd' >&2; exit;;
esac

rsh "$@" &
p=$!
(sleep $timeout; kill -1 $p) &
k=$!

wait $p
exit=$?
#  Normal exits are 0..127, signals are 128+signo
case $exit in
129)
        echo '(timed out)' >&2
        ;;
*)
        #  Kill the killer.
        kill $k
        ;;
esac
exit $exit

Posted by 김용환 '김용환'

댓글을 달아 주세요