1

Я отправил вопрос об этом несколько часов назад на переполнение стека:

Линейная команда Linux bash для запуска программы и ограничения ресурса

Как я знаю, для ограничения ресурса я могу использовать команду ulimit.

Но проблема в том, что когда я устанавливаю ограничение времени процессора 1 секунда, а затем я хочу выполнить другую программу с ограничением времени процессора 2 с, команда ulimit возвращает ошибку, подобную этой:

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

и абсолютно моя программа убита за 1 секунду.

Итак, как я могу заставить вторую программу работать с ограничением времени процессора 2 секунды?

2 ответа2

0

Наконец я нашел свой ответ после того, как несколько раз внимательно прочитал об ulimit ... Я нашел свою ошибку ... У меня было неверное представление о мягком ограничении и жестком ограничении, и мне нужно использовать мягкое ограничение для команды .. и я сделал это с помощью ulimit -St 1; ./a ouput.out и для второго ulimit -St 2; ./a ouput.out

Извини за плохое ... Желаю, чтобы этот пост был полезен всем, кому это нужно ... Спасибо большое..

0

Обычно лучше отдавать приоритет процессам, а не ограничивать их ресурсы. Почему бы не позволить процессу работать на полную мощность, если машина простаивает?

Вы можете использовать nice для запуска команд с более низким или более высоким приоритетом. Вам нужен только доступ суперпользователя, если вы хотите работать с более высоким приоритетом.

$ nice [-n increment] ./a <input.in> output.out

Вы также можете использовать renice чтобы изменить приоритет процесса, который уже запущен.

И nice и renice могут получить необязательный параметр -n с целым числом (-20 <= n <= 20) . Положительное целое число делает процесс более приятным и использует меньше ресурсов, в то время как отрицательное целое число делает его менее приятным . Если параметр не указан, то предполагается 10 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .