특정 시간(예: 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
당신은 또한 볼 수 있습니다
- Stack Overflow에 대한 내 답변은 다음과 같습니다.Bash의 리디렉션에 관한 모든 것