지정된 시간 동안 명령을 실행하고 시간을 초과하면 중단합니다.

지정된 시간 동안 명령을 실행하고 시간을 초과하면 중단합니다.

특정 시간(예: 1분) 동안 명령을 실행하는 방법을 알고 싶습니다. 실행이 완료되지 않으면 중지할 수 있어야 합니다.

답변1

사용 timeout:

NAME
       timeout - run a command with a time limit

SYNOPSIS
       timeout [OPTION] DURATION COMMAND [ARG]...
       timeout [OPTION]

(만약 이 명령이 없거나 아주 오래된 쉘과의 호환성이 필요하고 몇 가지 완전히 구체적인 요구 사항이 있는 경우...이것을 확인하십시오.이 문제;-))

답변2

timeout파일로 리디렉션을 사용하는 방법

cat경우이 질문에는(강조하다):

45초 정도의 대용량 파일을 캡처하여 화면에 출력하려면 어떻게 해야 합니까?아니면 다른 파일로 리디렉션하세요.

이것이 필요한 경우:

cat /dev/ttyUSB0 > out.txt

...이뿐만이 아닙니다.

cat /dev/ttyUSB0

그러면 timeout작동하지 않습니다.

# This *does* work!: timeout after 0.5 sec
timeout 0.5 cat /dev/ttyUSB0

# Does NOT work: try to redirect a response over serial to a file.
# Using `timeout` with redirection of stdout to a file does *not*
# seem to work!
timeout 0.5 cat /dev/ttyUSB0 > out.txt

그래서 해결책은하다작동하는 방법은 먼저 출력을 변수에 저장하고 timeout해당 섹션에서만 사용한 다음 다음과 같이 파일에 쓰는 것입니다.

response_str="$(timeout 0.5 cat /dev/ttyUSB0)"
printf "%s" "$response_str" > out.txt

당신은 또한 볼 수 있습니다

  1. Stack Overflow에 대한 내 답변은 다음과 같습니다.Bash의 리디렉션에 관한 모든 것

관련 정보