Я могу ограничить процесс определенным количеством времени / циклы ЦП?

Термин с товарным знаком "UNIX" на самом деле относится к фактической вещи, как описано другими в этом сообщении.

Общее сообщество испытывает недостаток в хорошем термине класса продукта, который мы называем Unix, Linux, BSD, BSD, Солярисом, и т.д. Эти продукты связаны и имеют много общего. Администратор CentOS может выполнить много задач в системе Соляриса или FreeBSD, например. Кроме того, многие люди никогда не слышали о Солярисе или FreeBSD, но они услышали о "Unix". Так, некоторые люди используют термин "Unx" для обращения к этому классу программного обеспечения.

Я также думаю, что "Unx" является юмористическим словом. Как Вы устно объявляете "Unx", например?

Я заметил в радушном баннере на сайте Unix StackExchange

Я создал ту формулировку, таким образом, я скажу Вам, почему я сделал это. Я использовал "Un*x", потому что я думал, что это было умно и забавно, и я хотел ответить на вопросы как "Это, включает вещи как $MY_FAVORITE_UNIXLIKE_PRODUCT?".

16
09.12.2010, 00:48
3 ответа

В дополнение к Gilles отвечают, что существует cpulimit инструмент, который делает точно, что Вы хотите - включая modifing во времени выполнения. Дополнительно это может ограничить только определенным CPUs/Cores IIRC.

13
27.01.2020, 19:48

Из программы звонить setrlimit(RLIMIT_CPU, ...). От оболочки звонить ulimit -t 42 (это не стандартно, но не поддерживается большинством оболочек (включая удар и ksh) на большинстве вариантов Unix). Это заставляет текущий процесс быть уничтоженным, после того как он израсходовал секунды N процессорного времени. Ограничение наследовано дочерними процессами. Общая идиома оболочки (ulimit -t 42; runaway_process) если Вы хотите смочь выполнить другие неограниченные процессы впоследствии от той же оболочки.

См. также там способ ограничить объем памяти, который конкретный процесс может использовать в Unix?. Принцип является тем же, Вы просто ограничиваете другой ресурс.

12
27.01.2020, 19:48
  • 1
    Проблема, у меня нет исходного кода для программы, таким образом, я не могу добавить setrlimit и я порождаю его через PHP, таким образом, у меня нет оболочки... –  Josh 09.12.2010, 01:31
  • 2
    @Josh: Если Вы ищете конструкцию, аналогичную time php /cgi/foo.php, можно использовать bash -c 'ulimit -t 42; exec "$0" "$@"' php /cgi/foo.php. –  Gilles 'SO- stop being evil' 09.12.2010, 01:40
  • 3
    @Josh? также я думаю, что этот материал может быть установлен в масштабе всей системы... –  xenoterracide 09.12.2010, 15:10
  • 4
    @xenoterracide да, это - Apache, но я только, хочет ограничить этот процесс, не все апачские процессы. Острота удара жабр может работать отлично! –  Josh 09.12.2010, 16:59

Можно также использовать timeout управляйте для блокирования процесса от выполнения для дольше, чем указанное количество времени.

пример

$ date
Mon May  6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May  6 07:35:14 EDT 2013

См. страницу справочника тайм-аута для получения дальнейшей информации.

3
27.01.2020, 19:48

Теги

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