테스트를 위해 각각 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을 제공합니다.벽시계 시간, 아니요영업시간. 이것은 큰 변화를 가져올 수 있습니다.
완료 기준을 설정하지 않고 고정된 시간 동안만 실행하는 이유는 무엇입니까? 이렇게 하면 테스트하려는 내용이 실제로 완료되었다는 보장이 없습니다(특히 나중에 실행하는 테스트가 더 긴 경우).