사전 정의된 시간 제한을 사용하여 ksh 스크립트 작성

사전 정의된 시간 제한을 사용하여 ksh 스크립트 작성

내 운영 체제는 AIX(7.2)이고 쉘은 ksh88(가급적) 또는 ksh93(필요한 경우)입니다.

실행을 위한 최대 타이머를 설정하는 스크립트를 작성하고 싶습니다. 이 제한 시간 내에 작업을 완료하면 정상적으로 종료되어야 하지만, 이 타이머가 꺼지면 작업 완료 여부에 관계없이 즉시 중지되어야 합니다.

내 순진한 구현은 다음과 같습니다.

#! /bin/ksh

function pTimer
{
typeset -i iProcID=$1                            # process ID of main process

sleep $CiMaxTime

print -u2 - "TIMER: time is up, aborting $0"     # terminate if time is up
kill -15 $iProc

exit 1
}


# main()
typeset -i iProc=$$
typeset -i CiMaxTime=60                          # maximum time in seconds

pTimer $iProc &

# ... actual work done here.
exit 0

이것다소간의 작품그러나 불행하게도 스크립트가 타이머에 의해 종료되거나 "정기적으로" 종료되더라도 프로세스는 스크립트가 종료된 후 주기적으로 뒤처지게 됩니다. 어떻게 든 쉘 프로세스 관리에 대한 나의 이해가 부족한 것 같습니다. 스크립트가 종료된 후 모든 "남은 음식"을 정리하려면 어떻게 해야 합니까?

답변1

timeout 명령을 사용할 수 있습니다

timeout DURATION COMMAND [ARG]...

DURTATION시간 초과 기간은 어디에 있고 스크립트와 해당 매개 변수는 무엇입니까 COMMAND?ARG

예를 들어

/usr/bin/time timeout 5 sleep 10 

프로그램

0.00user 0.00system 0:05.01elapsed

이는 "sleep 10"이 실제로 5초 후에 종료된다는 의미입니다.

관련 정보