Разница между nproc и ulimit?

Ulimit и nproc используются для ограничения системных процессов и ресурсов для конкретного пользователя или приложения (исправьте меня, если я ошибаюсь) в системе * nix. В чем заключается основное различие между ними?

Ответ 1

nproc от coreutils печатает количество процессоров. Из man nproc:

NPROC(1)                         User Commands                        NPROC(1)

NAME
       nproc - print the number of processing units available

SYNOPSIS
       nproc [OPTION]...

DESCRIPTION
       Print  the number of processing units available to the current process,
       which may be less than the number of online processors

Однако параметр nproc в /etc/security/limits.conf действительно ограничивает количество процессов:

От man limits.conf:

       nproc
           maximum number of processes

Ответ 2

 both are used for limiting the system processes and resources

Если вы ссылаетесь на параметр nproc в limit.conf, тогда да для ограничения количества процессов.

Утилита оболочки ulimit также используется для получения/установки ограничений ресурсов. Например, получение размера стека для каждого процесса:

$ulimit -s

Изменение размера стека до 1 МБ:

$ulimit -s 1024

Изменение размера стека на unlimited:

$ulimit -s unlimited

Нет разницы между настройкой/изменением ресурсов через /etc/security/limits.conf'' and ulimit '.

Однако изменения ulimit утилиты оболочки применимы только к текущей оболочке. Но изменения /etc/security/limits.conf будут применимы ко всей системе для всех указанных пользователей. Кроме того /etc/security/limits.conf обычно может быть изменен только привилегированными пользователями.

Но ulimit не требует привилегий.

Таким образом, вы можете думать о ulimit как о временных изменениях в ресурсах только для вас, которые вы можете изменить сами; тогда как /etc/security/limits.conf предназначен для общесистемных настроек (для одного или нескольких пользователей), которые вы обычно не можете изменить (обычно системные администраторы устанавливают лимиты ресурсов, если таковые имеются).


Принимая во внимание, что nproc(1) utliity совершенно другой, он просто перечисляет доступное количество процессоров.