SW/리눅스

Linux : Timeout 명령어, 예제, 사용 방법

얇은생각 2022. 6. 16. 07:30
반응형

시간 초과는 지정된 명령을 실행하고 지정된 시간이 지난 후에도 실행 중인 경우 종료하는 명령줄 유틸리티입니다. 즉, 시간 초과를 사용하면 시간 제한과 함께 명령을 실행할 수 있습니다. 시간 초과 명령은 거의 모든 Linux 배포에 설치되는 GNU 핵심 유틸리티 패키지의 일부입니다.

이 기능은 시간 초과 옵션이 내장되어 있지 않은 명령을 실행하려는 경우에 유용합니다.

Linux 시간 초과 명령을 사용하는 방법에 대해 설명합니다.

 

 

Linux : Timeout 명령어, 예제, 사용 방법

 

 

시간 초과 명령을 사용하는 방법

시간 초과 명령의 구문은 다음과 같습니다.

timeout [OPTIONS] DURATION COMMAND [ARG]…

 

 

DURATION은 양의 정수 또는 부동소수점 숫자 뒤에 선택적 단위 접미사가 붙을 수 있습니다.

 

s - 초

m - 분

H - hours

d - d - days

 

사용된 단위가 없으면 기본값은 초입니다. 기간을 0으로 설정하면 관련 시간 초과가 비활성화됩니다. 

명령 옵션은 인수 앞에 제공되어야 합니다. 

다음은 시간 초과 명령을 사용하는 방법을 보여주는 몇 가지 기본적인 예입니다.

 

5초 후에 명령을 종료합니다.

timeout 5 ping 8.8.8.8

 

 

5분 후에 명령을 종료합니다.

timeout 5m ping 8.8.8.8

 

 

1분 6초 후에 명령을 종료합니다.

timeout 1.1m ping 8.8.8.8

 

 

tcpdump 와 같은 상승된 권한이 필요한 명령을 실행하려면 시간 초과 전에 sudo를 추가합니다.

sudo timeout 300 tcpdump -n -w data.pcap

 

 

 

특정 신호를 보내는 중

신호가 주어지지 않으면 제한 시간에 도달하면 시간 초과가 SIGTERM 신호를 관리되는 명령으로 전송합니다. -s(--signal) 옵션을 사용하여 전송할 신호를 지정할 수 있습니다.

예를 들어 1분 후에 Ping 명령으로 SIGKILL을 보내려면 다음을 사용합니다.

sudo timeout -s SIGKILL ping 8.8.8.8

 

 

SIGKILL과 같은 이름으로 신호를 지정하거나 9와 같은 번호를 지정할 수 있습니다. 다음 명령은 이전 명령과 동일합니다.

sudo timeout -s 9 ping 8.8.8.8

 

 

사용 가능한 모든 신호 목록을 가져오려면 kill -l 명령을 사용합니다.

kill -l

 

 

 

고착된 프로세스를 제거

시간 제한이 초과되었을 때 전송되는 기본 신호인 SIGTERM은 일부 프로세스에 의해 잡히거나 무시될 수 있습니다. 이러한 상황에서는 종료 신호가 전송된 후에도 프로세스가 계속 실행됩니다.

모니터링되는 명령이 실행되었는지 확인하려면 -k(-kill-after) 옵션과 시간 간격을 사용합니다. 지정된 시간 제한에 도달한 후 이 옵션을 사용하면 시간 초과 명령이 SIGKILL 신호를 중앙 관리 프로그램으로 전송하여 캡처하거나 무시할 수 없습니다.

다음 예에서 시간 초과 시 명령이 1분 동안 실행되며, 종료되지 않으면 10초 후에 종료됩니다.

sudo timeout -k 10 1m ping 8.8.8.8

# timeout -k “./test.sh”

 

 

지정된 시간 제한에 도달한 후 중단됩니다.

 

 

 

종료 상태를 보존

시간 제한에 도달하면 timeout이 124를 반환합니다. 그렇지 않으면 관리되는 명령의 종료 상태가 반환됩니다.

제한 시간에 도달한 경우에도 명령 종료 상태를 반환하려면 --reserve-status 옵션을 사용하십시오.

timeout --preserve-status 5 ping 8.8.8.8

 

 

 

포그라운드로 실행

기본적으로 시간 초과는 백그라운드에서 관리되는 명령을 실행합니다. 포그라운드에서 명령을 실행하려면 --forground 옵션을 사용하십시오.

timeout --foreground 5m ./script.sh

 

 

이 옵션은 사용자 입력이 필요한 대화형 명령을 실행하려는 경우에 유용합니다.

시간 초과 명령은 지정된 명령을 시간 제한과 함께 실행하는 데 사용됩니다.

시간 초과는 옵션이 많지 않은 간단한 명령입니다. 일반적으로 기간과 관리 명령이라는 두 개의 인수만으로 시간 초과를 호출합니다.

반응형