Bash X 시간 내에 명령이 완료되지 않으면 어떻게 되나요?

Bash X 시간 내에 명령이 완료되지 않으면 어떻게 되나요?

나는 다음과 같은 것을 실행하려고합니다 :

sudo dhclient $wifi || otherFunction

문제는 dhclient실패하면 오류가 발생하는 대신 중단된다는 것입니다.

60초 내에 완료되지 않으면 dhclient종료되고 호출 되도록 위의 코드를 어떻게 다시 작성할 수 있습니까 ?otherFunctiondhclient

답변1

당신의라벨은 모든 것을 제공합니다.

sudo timeout 60 dhclient $wifi || otherFunction

한 가지 예:

sudo timeout 3 sleep 5 || echo finished early

이는 다음을 사용합니다.시간 초과 유틸리티Linux의 GNU coreutils 패키지에서 제공됩니다.

답변2

사용timeout.

timeout 2 sleep 1
echo $?
0

timeout 1 sleep 2
echo $?
124

답변3

timeout포트와 동일한 래퍼를 사용하십시오 .gtimeoutcoreutilsbrew:

brew install coreutils
gtimeout --help

/usr/local/bin에 있을 것 입니다 PATH. 원래 이름으로 사용하려면 에 timeout추가하세요 ./usr/local/opt/coreutils/libexec/gnubinPATH

관련 정보