2009-06-10 1 views
7

私はUbuntu Linux(2.6.28-11-generic#42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux)を実行していて、コマンド "ulimit - t "が正しく動作しません。私は走った:ulimit -t under ubuntu

ulimit -t 1; myprogram

ここで、 'myprogram'は無限ループです。私はプログラムが1秒後に中断されると思ったが、それは止まらなかった。私はLinux Fedoraのインストールで同じことを試みましたが、期待どおりに動作しました。

正常に動作するように設定する必要がある設定がいくつかありますか。

からTsfとしてTSF

+0

上でそれを試してみました、私はそれがserverfaultのに属しているとは思いません。どう思う? –

+0

はい、あなたは正しいかもしれません。すぐに反応しました。 –

答えて

16

指摘し、問題がbug in kernel 2.6.28によるものです。 私はそれがとにかく役に立つと思うので私は私の元の答えを残します。

のulimitに関してでカウント何

-t The maximum amount of cpu time in seconds.

ulimitのマンページから

CPU時間です。 このようなあなたのプログラムを起動しよう:それは本当に使用してどのくらいのCP​​U時間を示します

time myprogram 

を。

あなたの無限ループにはsleep() が含まれており、スリープ時間はプロセスのCPU時間には関係しないという疑いがあります。

[email protected]:~$ bash 
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do a=1; done 
Killed 

これは永遠に実行するようだ(もちろんしません):

は、これは1秒後に殺され、このような

[email protected]:~$ bash 
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do sleep 1; done 

測定のCPU時間...

[email protected]:~$ time for ((i=1; i<5; i++)); do sleep 1; done 

... 5秒後...

real  0m4.008s 
user  0m0.000s 
sys   0m0.012s 

... 12ミリ秒のCPU使用時間。

私はUbuntuの粋ジャッカロープ(9.04)

Linux host 2.6.28-11-generiC#42-Ubuntu SMP 
Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux 
+1

いいえ、私のプログラムには睡眠がありません。 Fedoraの下で期待どおりに動作するので、私のUbuntuの設定上の問題のように見えます。 – Tsf

+1

私は別のトピックの下に同じ質問を投稿し、それが私を向けることによって答えた: https://bugs.launchpad.net/ubuntu/jaunty/%2Bsource/linux/%2Bbug/361508 問題を説明すること! – Tsf

+0

ありがとう、私はあなたのヒントを私の答えの先頭に追加しました。 カーネルのバグが最初に表示される方が良いと思います。 –

関連する問題