Mac OS X의 시간 초과 명령?
Mac OSx에서 시간 초과 명령에 대한 대안이 있습니까? 기본 요구 사항은 지정된 시간 동안 명령을 실행할 수 있다는 것입니다.
예 :
timeout 10 ping google.com
이 프로그램은 Linux에서 10 초 동안 ping을 실행합니다.
당신이 사용할 수있는
brew install coreutils
그런 다음 시간 초과가 필요할 때마다
gtimeout
.. 대신. Homebrew주의 사항 섹션에서 발췌 한 이유를 설명하려면 :
주의 사항
모든 명령은 접두사 'g'로 설치되었습니다.
이 명령을 정상적인 이름으로 사용해야한다면 다음과 같이 bashrc에서 PATH에 "gnubin"디렉토리를 추가 할 수 있습니다.
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"또한 bashrc에서 "gnuman"디렉토리를 MANPATH에 추가하면 일반 이름으로 해당 매뉴얼 페이지에 액세스 할 수 있습니다.
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
거의 모든 곳에서 perl을 사용하기 때문에 거의 크로스 플랫폼에서 작동하는 또 다른 간단한 접근 방식은 다음과 같습니다.
function timeout() { perl -e 'alarm shift; exec @ARGV' "$@"; }
여기에서 포착 됨 : https://gist.github.com/jaytaylor/6527607
함수에 넣는 대신 다음 줄을 스크립트에 넣을 수 있으며 작동합니다.
timeout.sh
perl -e 'alarm shift; exec @ARGV' "$@";
또는 도움말 / 예제가 내장 된 버전 :
timeout.sh
#!/usr/bin/env bash
function show_help()
{
IT=$(cat <<EOF
Runs a command, and times out if it doesnt complete in time
Example usage:
# Will fail after 1 second, and shows non zero exit code result
$ timeout 1 "sleep 2" 2> /dev/null ; echo \$?
142
# Will succeed, and return exit code of 0.
$ timeout 1 sleep 0.5; echo \$?
0
$ timeout 1 bash -c 'echo "hi" && sleep 2 && echo "bye"' 2> /dev/null; echo \$?
hi
142
$ timeout 3 bash -c 'echo "hi" && sleep 2 && echo "bye"' 2> /dev/null; echo \$?
hi
bye
0
EOF
)
echo "$IT"
exit
}
if [ "$1" == "help" ]
then
show_help
fi
if [ -z "$1" ]
then
show_help
fi
#
# Mac OS-X does not come with the delightfully useful `timeout` program. Thankfully a rough BASH equivalent can be achieved with only 2 perl statements.
#
# Originally found on SO: http://stackoverflow.com/questions/601543/command-line-command-to-auto-kill-a-command-after-a-certain-amount-of-time
#
perl -e 'alarm shift; exec @ARGV' "$@";
다음 명령을 사용하여 모든 프로그램의 실행 시간을 제한 할 수 있습니다.
ping -t 10 google.com & sleep 5; kill $!
Ubuntu / Debian의 Timeout Package는 Mac에서 컴파일하도록 만들 수 있으며 작동합니다. 패키지는 http://packages.ubuntu.com/lucid/timeout 에서 사용할 수 있습니다 .
넌 할 수있어 ping -t 10 google.com >nul
> nul은 출력을 제거합니다. 따라서 123.45.67.8 BLAH BLAH BLAH에서 64 바이트를 표시하는 대신 시간이 초과 될 때까지 빈 줄 바꿈 만 표시합니다. -t 플래그는 임의의 숫자로 변경할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/3504945/timeout-command-on-mac-os-x
'program story' 카테고리의 다른 글
| 비트 연산자와 "엔디안" (0) | 2020.11.14 |
|---|---|
| 설치되지 않은 RPM 패키지에 대한 정보를 표시합니까? (0) | 2020.11.14 |
| C # 함수의 매개 변수 또는 선택적 매개 변수에 기본값을 제공 할 수 있습니까? (0) | 2020.11.14 |
| Java 제네릭 void / Void 유형 (0) | 2020.11.14 |
| 상수 대신 열거 형을 사용하는 이유는 무엇입니까? (0) | 2020.11.14 |