können Sie mir mit diesem einfachen „ulimit“ helfen?

können Sie mir mit diesem einfachen „ulimit“ helfen?

Ich habe ein schlecht codiertes Programm mit Endlosschleife, das ich über die Befehlszeile ausführen möchte – aber nicht für immer. Ich möchte ulimit verwenden, damit es abgebrochen wird, wenn es sich endlos wiederholt.

Ich versuche es:

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

aber es ist, als ob nichts passiert. Was ist los, ist mein Kommandozeilenbefehl falsch? myinfloopprogram läuft einwandfrei.

Ich verwende ein Terminal und die Version ist Ubuntu 9.10.

Antwort1

Verwendet das sich wiederholende Programm tatsächlich die CPU?

-t steht für die CPU-Zeit, nicht für die Echtzeit. Wenn Ihr Programm also tatsächlich keine CPU-Zeit verwendet, wird es nicht beendet.

Antwort2

Versuchen Sie es stattdessen vielleicht mit so etwas:

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

Antwort3

ulimitist wahrscheinlich nicht das, was Sie brauchen. Sie brauchen eine Art Bash-Timeout-Funktion. In Bash ist nichts eingebaut, aber es gibt ein paar Skripte, die das tun. zBhttps://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

verwandte Informationen