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