1초 동안 애플리케이션을 실행하는 스크립트를 만드는 방법은 무엇입니까?

1초 동안 애플리케이션을 실행하는 스크립트를 만드는 방법은 무엇입니까?

테스트를 위해 각각 1초 동안 폴더의 일부 응용 프로그램을 실행하는 다음 bash 스크립트가 있습니다.

#!/bin/bash
for app in ./*.app
do
    myrunner $app &
    sleep 1
    killall -9 myrunner
done

하지만 "killall -9"를 사용하는 것이 실제로는 최선의 방법은 아닌 것 같습니다. 더 좋은 방법이 있을까요?

답변1

timeout예를 들어 을 사용하고 싶은 것 같습니다.

timeout 1s myrunner $app

답변2

$!마지막 백그라운드 프로세스의 pid이므로 다음과 같습니다.

do
    myrunner $app &
    pid=$!
    sleep 1
    kill -9 $pid
done

sleep백엔드가 없기 때문에 중간 변수에 할당할 필요가 없습니다 . 즉, kill -9 $!.

유용한 관련 변수는 $?마지막 명령의 종료 상태이며, 다음을 통해 WRT 백그라운드 프로세스에서 얻을 수 있습니다.

somecommand & wait $!
status=$?

답변3

테스트 대상에게 1을 제공합니다.벽시계 시간, 아니요영업시간. 이것은 큰 변화를 가져올 수 있습니다.

완료 기준을 설정하지 않고 고정된 시간 동안만 실행하는 이유는 무엇입니까? 이렇게 하면 테스트하려는 내용이 실제로 완료되었다는 보장이 없습니다(특히 나중에 실행하는 테스트가 더 긴 경우).

관련 정보