문제 해결 통화의 일부로 서비스 네트워크를 다시 시작하는 Fedora 22에서 실행되는 스크립트가 있습니다 service network restart
. 명령을 실행하는 데 시간이 너무 오래 걸리는지 확인하고 싶습니다. 시간이 너무 오래 걸리면 "네트워크 서비스를 다시 시작하는 중에 오류가 발생했습니다"라는 메시지를 출력하고 싶습니다. 그렇지 않으면 스크립트를 계속 진행하고 싶습니다.
답변1
timeout
명령을 사용하여 지정된 제한 시간 내에 명령이나 스크립트를 실행할 수 있습니다 . 이것과 비슷한 것 :
timeout 10m command
명령이 10분 이내에 완료될 때까지 기다리고, 그렇지 않으면 명령을 종료하고 상태 124로 종료됩니다. 그런 다음 명령의 종료 상태를 확인 timeout
하고 이를 기반으로 적절한 메시지를 인쇄할 수 있습니다. 자세한 내용은 여기를 참조하세요.시간 초과 맨페이지.
긴 명령을 종료하지 않으려면 다음을 수행하십시오.
(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )
시간 초과 시 메시지가 인쇄되지만 명령은 계속 실행됩니다.
답변2
원본 시스템 스크립트 편집에 신경 쓰지 않는다면 스크립트 내부에 유사한 기능을 만들 수 있습니다
timeoutf(){
#If hangs 1 minute, dies..
sleep 1m
kill $PPID
}
timeoutf&