2013-10-02 4 views
1

Я пытаюсь использовать ulimit, функцию оболочки bash, чтобы ограничить время запуска программы. Например, я пробовал это:Как ограничить время работы процесса с помощью ulimit?

$ (ulimit -t 1; ./a.out) 

Но это не работает. он запускает программу ./a.out, пока она не остановится (5 секунд). Кто-нибудь знает, как это сделать? Кстати, я экспериментировал с включением в -H на ulimit командной строки, но это только дает эту ошибку:

bash: ulimit: cpu time: cannot modify limit: Operation not permitted 

Спасибо.

+0

Существует разница между процессорным временем (которое вы указываете с помощью 'ulimit -t') и фактическим временем выполнения. Вы можете узнать, сколько процессорного времени используется вашей программой, запустив 'time./A.out'. 'time' сообщает реальное прошедшее время, время процессора пользователя и время центрального процессора. – ThisSuitIsBlackNot

+0

Меня интересует время процессора. Можете ли вы пролить свет на то, как делать то, что я хочу? – user2839463

+1

Вы пробовали '(ulimit -t 1; time ./a.out)', чтобы убедиться, что ваша программа действительно превышает одну секунду времени процессора? – ThisSuitIsBlackNot

ответ

6

ulimit не может ограничить время выполнения программы, только время процессора. Если у вас есть GNU Coreutils, вы можете использовать timeout команду вместо:

timeout 1s ./a.out 

Это будет kill ваша программа после одной секунды. Вы можете указать сигнал для отправки с использованием -s или --signal, например.

timeout --signal=HUP 1s ./a.out 
+0

У меня нет функции тайм-аута. Кстати, то, что я сделал выше, работает на моей машине ubuntu с более новой операционной системой. Поэтому я нахожусь на правильном пути, и я думаю, что то, что я делаю, должно работать. У меня есть система 2.6.28.4-002-STD64 – user2839463

+0

Хорошо, в этом ядре есть ошибка. Я нашел это [ссылка] (http://stackoverflow.com/questions/978317/ulimit-t-under-ubuntu?rq=1). Он указывает, что то, что я хочу сделать, не работает в 2.6.28. – user2839463

+0

@ user2839463 Пожалуйста, опубликуйте это как отдельный ответ, чтобы люди, которые приземлились на этой странице в будущем, могут легко найти его. – ThisSuitIsBlackNot

 Смежные вопросы

  • Нет связанных вопросов^_^