명령이 ' X 시간 내에 완료되지 않으면 Bash?

다음과 같은 것을 실행하려고합니다.

sudo dhclient $wifi || otherFunction 

문제는 dhclient가 실패하면 오류가 발생하는 대신 멈 춥니 다.

위의 내용을 다시 작성할 수 있으므로 dhclientdhclient가 60 초 내에 완료되지 않으면 종료되고 otherFunction가 호출됩니다.

Answer

태그는 모든 것을 제공합니다.

sudo timeout 60 dhclient $wifi || otherFunction 

예 :

sudo timeout 3 sleep 5 || echo finished early 

시간 제한 유틸리티 를 사용합니다. Linux의 GNU coreutils 패키지에서 제공합니다.

댓글

  • 안타깝게도 ' MacOS에서 작동하지 않습니다.
  • timeout (MacOS 용) : stackoverflow.com/a/21118126/451480
  • timeout 살인을 구체적으로 확인하려면 e 명령 (다른 이유로 실패한 명령과 반대로)은 종료 상태 124를 확인합니다.

Answer

timeout 를 사용합니다.

timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124 

댓글

  • 안타깝게도 ' MacOS에서 작동하지 않습니다.

답변

iv id = “와 함께 gtimeout로 포장 된 timeout 사용 74b44116b4 “>

포트 ( brew ) :

brew install coreutils gtimeout --help 

PATH/usr/local/bin에서 작동합니다. 원래 이름대로 timeout를 사용하려면 /usr/local/opt/coreutils/libexec/gnubinPATH에 추가합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다