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 플래그는 임의의 숫자로 변경할 수 있습니다.