Как я ограничиваю, сколько CPU процесс может использовать с выскочкой (Ubuntu 11.10)

Перезапуск спулера печати обычно не отбрасывает задания печати, он просто прекращает принимать новые. Конечные пользователи заметят, но это не будет настолько же плохо как тихо отбрасывать задание печати. В целом я сказал бы, что безопасно перезапустить сервис на лету.

Что еще более важно, я хотел совместно использовать это с Вами:

Occasionaly у меня был опыт с поврежденным заданием печати в очереди печати. В тех случаях я заметил

a. Спулер печати не останется запущенным, пока поврежденное задание печати присутствует, и требуемый принтер работает
b. спулер печати не позволит Вам удалить поврежденное задание через GUI, если спулер будет остановлен
c. принтер не распечатает никакое другое задание, пока поврежденное задание не будет завершено или удалено.

Для фиксации этого, Вы имеете к

  1. Физически выключите принтер
  2. запустите/перезапустите спулер печати
  3. удалите поврежденное задание печати
  4. включите принтер

Если Вы не выполняете 1-4 точно, которые приказывают, чтобы Вы застряли в бесконечном цикле, борющемся с a-c.

Я не могу обещать Вам, что Ваша ситуация соответствует этому опыту, но я думаю его достойное рассмотрения наблюдаемое поведение и последствия к тому, как процесс печати/спулинга печати вручает вещи вперед.

править: В противоположном взятии к управлению Evan буферными файлами. Можно использовать очередь печати в Windows (запустите - настройки - принтеры или запуститесь - принтеры), и удалите задание из очереди печати с помощью меню Document - опция Cancel.

Ключ находится в его способе иметь дело с ним, сервис шпульки должен быть остановлен имея дело с ним мой способ, которым должен быть запущен спулер. Если у Вас есть физический доступ к принтеру, и удобно повернуться, он от Вас может использовать мой метод. Если у Вас нет доступа к физическому принтеру, можно использовать его метод.

1
задан 2 January 2012 в 17:53
1 ответ

В Upstart такой строфы нет. Раздел "limit cpu" ограничивает максимальное время (в секундах), которое процесс может выполняться на CPU. Во время этого допуска он может занимать 100% ЦП.

См. Man setrlimit (2): http://linux.die.net/man/2/setrlimit

RLIMIT_CPU Ограничение времени процессора в секундах. Когда процесс достигает мягкого предела, ему отправляется сигнал SIGXCPU. Действие по умолчанию для этого сигнала это завершить процесс. Однако сигнал можно поймать, и обработчик может вернуть управление основной программе. Если процесс продолжает потреблять процессорное время, он будет посылаться SIGXCPU один раз в секунду до тех пор, пока не будет достигнут жесткий предел, после чего отправляется SIGKILL. (Последний пункт описывает поведение Linux. Реализации различаются в зависимости от как они обрабатывают процессы, которые продолжают потреблять процессорное время после достижение мягкого предела. Портативные приложения, которым нужно это уловить сигнал должен выполнять упорядоченное завершение при первом получении SIGXCPU.)

0
ответ дан 4 December 2019 в 10:14

Теги

Похожие вопросы