2009-06-10 25 views
7

Tôi đang chạy Ubuntu Linux (2.6.28-11-chung # 42-Ubuntu SMP Thứ Sáu 17 tháng 4 01:57:59 UTC 2009 i686 GNU/Linux) và có vẻ như lệnh "ulimit - t "không hoạt động đúng. Tôi đã chạy:ulimit -t dưới ubuntu

ulimit -t 1; myprogram

trong đó 'chương trình của tôi' là vòng lặp vô tận. Tôi dự kiến ​​chương trình sẽ bị gián đoạn sau 1 giây, nhưng nó không dừng lại. Tôi đã thử điều tương tự trên cài đặt Fedora Linux và nó hoạt động như mong đợi.

Có một số cấu hình phải được đặt để thiết bị hoạt động bình thường không?

- TSF

+0

Tôi không nghĩ rằng nó thuộc về serverfault. Điều gì làm bạn nghĩ như vậy? –

+0

Có thể bạn nói đúng Tôi chỉ phản ứng nhanh như vậy –

Trả lời

16

Như Tsf chỉ ra, vấn đề là do một bug in kernel 2.6.28. Tôi để lại câu trả lời ban đầu của tôi, bởi vì tôi nghĩ rằng nó có thể hữu ích anyway.

Từ manpage ulimit

-t The maximum amount of cpu time in seconds.

Điều quan trọng đối với ulimit chỉ CPU thời gian. Hãy thử bắt đầu chương trình của bạn như sau:

time myprogram 

Điều đó sẽ cho bạn biết lượng thời gian CPU thực sự sử dụng.

Nghi ngờ của tôi là vòng lặp vô tận của bạn chứa sleep() và thời gian ngủ không đóng góp vào thời gian CPU của quy trình.

này bị giết sau một giây:

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

Điều này dường như chạy mãi mãi (nhưng tất nhiên không):

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

Đo CPU thời gian như thế này ...

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

... và 5 giây sau ...

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

... chỉ 12 ms Thời gian CPU được sử dụng.

Tôi đã thử nó trên Ubuntu Jaunty Jackalope (9,04)

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

Không, tôi không có bất kỳ giấc ngủ nào trong chương trình của mình. Lưu ý rằng nó hoạt động như mong đợi trong Fedora, vì vậy nó trông giống như một vấn đề cấu hình trên Ubuntu của tôi. – Tsf

+1

Tôi đã đăng cùng một câu hỏi theo một chủ đề khác và được trả lời bằng cách hướng dẫn tôi đến: https://bugs.launchpad.net/ubuntu/jaunty/%2Bsource/linux/%2Bbug/361508 Điều đó giải thích được sự cố ! – Tsf

+0

Cảm ơn, tôi đã thêm gợi ý của bạn ở đầu câu trả lời của tôi. Tôi nghĩ sẽ tốt hơn nếu mọi người gặp lỗi hạt nhân trước. –

Các vấn đề liên quan