웹사이트 검색

초보자를 위한 Linux timeout 명령 설명(예제 포함)


이 페이지에서

  1. Linux 시간 초과 명령
  2. Q1. 타임아웃 명령어는 어떻게 사용하나요?\n
  3. Q2. 출력에서 명령 종료 상태를 얻는 방법은 무엇입니까?
  4. Q3. 신호 시간 초과 전송을 변경하는 방법은 무엇입니까?\n
  5. Q4. 시간 초과가 자동으로 KILL 신호를 보내는 방법은 무엇입니까?\n
  6. 결론

때때로 Linux에서 명령을 실행할 때 정해진 시간 동안 명령을 실행하고 싶을 수 있습니다. 이 목적을 위해 특별히 개발된 명령줄 유틸리티(timeout)가 있습니다. 이 기사에서는 이해하기 쉬운 몇 가지 예를 사용하여 이 명령의 기본 사항에 대해 설명합니다.

하지만 그 전에 이 튜토리얼의 모든 예제가 Ubuntu 18.04 LTS 시스템에서 테스트되었음을 언급할 가치가 있습니다.

리눅스 타임아웃 명령

이름에서 알 수 있듯이 Linux의 timeout 명령을 사용하면 시간 제한이 있는 명령을 실행할 수 있습니다. 구문은 다음과 같습니다.

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

도구 매뉴얼 페이지에서 설명하는 방법은 다음과 같습니다.

timeout - run a command with a time limit
Start COMMAND, and kill it if still running after DURATION

다음은 이 도구의 작동 방식에 대한 더 나은 아이디어를 제공하는 몇 가지 Q&A 스타일의 예입니다.

Q1. 타임아웃 명령어는 어떻게 사용하나요?

기본 사용법은 매우 쉽습니다. 실행하려는 명령뿐만 아니라 시간 제한 값(초 단위로 간주)을 입력에 지정하여 시간 제한을 실행하기만 하면 됩니다.

예를 들어 5초 후에 ping 명령을 시간 초과하려는 경우 이 경우 시간 초과를 사용하는 방법은 다음과 같습니다.

timeout 5 ping google.com

Q2. 출력에서 명령 종료 상태를 얻는 방법은 무엇입니까?

기본적으로 timeout 명령이 성공하면 종료 상태로 124를 반환합니다. 다음은 예입니다.

첫 번째 경우는 timeout 명령을 성공적으로 실행시켰고, 보시다시피 종료 상태는 124였습니다. 그러나 두 번째 실행 시 Ctrl+C를 사용하여 명령을 강제로 종료시켰고, 이 경우 종료 상태는 0이었다.

그러나 timeout이 성공적으로 실행되더라도 timeout이 입력 명령 상태를 반환하도록 하려면 --preserve-status 명령줄 옵션을 사용해야 합니다.

예를 들어:

timeout --preserve-status 5 ping google.com

Q3. 신호 시간 초과 전송을 변경하는 방법은 무엇입니까?

입력 명령에 신호를 보내어 입력 명령이 마감 시간이 다가올 때까지 실행을 중지하도록 함으로써 타임아웃이 작동한다고 추측할 필요가 없습니다. 기본적으로 SIGTERM은 명령에서 사용됩니다.

그러나 원하는 경우 시간 초과로 전송되는 신호를 변경할 수 있습니다. 이를 위해 -s 명령줄 옵션을 사용하고 시간 초과로 보내려는 신호를 입력으로 지정해야 합니다.

예를 들어:

timeout -s SIGKILL [COMMAND]

보낼 수 있는 사용 가능한 신호 목록을 가져오려면 다음 명령을 실행합니다.

kill -l

Q4. 시간 초과가 자동으로 KILL 신호를 보내는 방법은 무엇입니까?

경우에 따라 시간 초과가 초기 신호를 보낸 후에도 계속 실행되는 입력 명령이 발생할 수 있습니다. 이와 같은 경우 timeout은 --kill-after 옵션을 제공합니다.

매뉴얼 페이지에서 설명하는 방법은 다음과 같습니다.

-k, --kill-after=DURATION

              also send a KILL signal if COMMAND is still running

              this long after the initial signal was sent

보시다시피, 이 신호가 전송되는 시간이 얼마나 지난 후 시간 초과가 알 수 있도록 지속 시간을 지정해야 합니다.

결론

수행하는 작업의 종류에 따라 timeout 명령이 매우 유용한 도구가 될 수 있습니다. 이 자습서에서는 이 유틸리티가 제공하는 대부분의 옵션에 대해 설명했습니다. 이러한 연습을 마치면 매뉴얼 페이지로 이동하여 타임아웃에 대해 자세히 알아볼 수 있습니다.