이 간단한 'ulimit' 작업을 도와주실 수 있나요?

이 간단한 'ulimit' 작업을 도와주실 수 있나요?

명령줄에서 실행하고 싶지만 영원히 실행할 수는 없는 잘못 코딩된 무한 루핑 프로그램이 있습니다. ulimit를 사용하고 싶기 때문에 영원히 반복되면 잘립니다.

노력하고있어:

$> bash -c "ulimit -t 1; java myinfloopprogram"

하지만 아무 일도 일어나지 않는 것 같아요. 무슨 일이 일어나고 있나요? 내 명령줄 명령이 잘못되었나요? myinfloloopprogram이 잘 실행됩니다.

터미널을 실행 중이고 버전은 Ubuntu 9.10 입니다.

답변1

루핑 프로그램이 실제로 CPU를 사용하고 있습니까?

-t는 벽시계 시간이 아닌 CPU 시간을 위한 것이므로 프로그램이 실제로 CPU 시간을 사용하지 않는 경우 종료되지 않습니다.

답변2

대신 다음과 같이 시도해 보세요.

java myinfloopprogram &
pid=$!
for i in $(seq 1 60); do
    kill -0 $pid >/dev/null || break
    sleep 1
done
kill -0 $pid >/dev/null || kill -TERM $pid

답변3

ulimit아마도 당신에게 필요한 것이 아닐 것입니다. 일종의 bash 시간 초과 기능이 필요합니다. Bash에는 아무것도 내장되어 있지 않지만 이를 수행하기 위해 떠다니는 몇 가지 스크립트가 있습니다. 예를 들어https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

관련 정보