timeout
한 시간 후에 스크립트를 종료 하고 싶습니다 .
저는 데비안에서 실행 중이고 timeout 1h <script>
간단합니다.
내 아치 Linux 시스템에서는 상황이 다릅니다. 몇 가지를 시도한 후에 문제는 내 시간 제한 바이너리가 실제 시스템 시간이 아닌 CPU 시간을 사용한다는 점을 알아낸 것 같습니다. 분명히 시간 초과하려는 스크립트는 wget
CPU 시간을 많이 사용하지 않습니다. 명령은 timeout 3600 wget
종료되기 전까지 최대 반나절 동안 실행될 수 있습니다.
timeout 5 dd if=/dev/zero of=/dev/null
하지만 클럭 시간 6.6초(CPU 시간 5.1초) 후에 종료됩니다.
timeout
바이너리를 찾을 수 없습니다 (설명:아니요내 시스템에서는 웹에서 다운로드하는 것을 의미합니다.) 모든 소스는 기본적으로 "Linux와 함께 제공됩니다"라고 말합니다. 내 것은 or 이 timeout
없지만 그것이 무엇이든 다음과 같이 말합니다.--version
--help
Usage:
timeout [-t timelimit] [-m memlimit] [-x hertz] command [arguments ...]
Died at /usr/local/bin/timeout line 29
엉망인 바이너리가 있습니까? 에 따르면 man timeout
버전과 도움말 옵션을 모두 사용할 수 있어야 합니다. Linux 코어의 일부 이므로 timeout
어떻게 다시 설치합니까?
답변1
원본 게시물과 해당 댓글을 되돌아보면 이 문제는 존재하는 시간 초과 바이너리의 두 가지 다른 복사본과 관련된 것 같습니다. 하나는 거기에 있고 /usr/local/bin
, 다른 하나는 거기에 있습니다 /usr/bin
.
쉘이 바이너리를 찾지 않는 곳으로 그 중 하나를 옮기면 어느 것이 어느 것인지 결정하는 데 도움이 될 것입니다. /usr/bin
시스템 바이너리에 대한 가능성이 더 높다고 가정하면 그 중 하나가 /usr/local/bin
우리의 문제일 수 있습니다. 비록 제가 틀렸을 수도 있습니다.
Debian, Ubuntu 및 그 파생 제품에서 패키지 관리자를 쿼리할 수 있습니다.
$ dpkg -S /usr/bin/timeout
coreutils: /usr/bin/timeout
또는 CentOS, RedHat, Fedora 등:
$ yum provides /usr/bin/timeout
...
coreutils-8.22-24.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base
Matched from:
Filename : /usr/bin/timeout
그러나 패키지 관리자가 정확할 수도 있습니다 /usr/local/bin/timeout
.