Что такое pid и gid
В чем разница между процессами pid, ppid, uid, euid, gid и egid?
Контекст: я получаю текущий идентификатор процесса Ruby.
ОТВЕТЫ
Ответ 1
Ответ 2
PPID:
В дополнение к уникальному идентификатору процесса каждому процессу присваивается идентификатор родительского процесса (PPID), который сообщает, какой процесс был запущен. PPID является PID родительского процесса.
Например, если process1 с PID из 101 запускает процесс с именем process2, то process2 будет предоставлен уникальный PID, такой как 3240, но ему будет присвоен PPID 101. Его отношение родитель-потомок. Один родительский процесс может порождать несколько дочерних процессов, каждый из которых имеет уникальный PID, но все используют один и тот же PPID.
Unix-подобные операционные системы определяют пользователей в ядре значением, называемым идентификатором пользователя, часто сокращенным до UID или идентификатора пользователя. UID, наряду с GID и другими критериями контроля доступа, используется для определения того, какие системные ресурсы пользователь может получить. Файл паролей сопоставляет текстовые имена пользователей с UID, но в ядре используется только UID.
EUID:
Для большинства проверок доступа используется эффективный UID (euid) процесса. Он также используется как владелец файлов, созданных этим процессом.
Идентификатор группы, часто сокращенный до GID, представляет собой числовое значение, используемое для представления конкретной группы. Диапазон значений для GID варьируется в зависимости от разных систем; по крайней мере, GID может быть между 0 и 32 767 с одним ограничением: группа входа для суперпользователя должна иметь GID 0.
EGID:
Эффективный GID (egid) процесса также влияет на управление доступом и может также влиять на создание файла, в зависимости от семантики используемой конкретной реализации ядра и, возможно, используемых параметров монтирования.
Обратитесь к этим статьям за дополнительной информацией:
В чем разница между процессами pid, ppid, uid, euid, gid и egid?
Контекст: я получаю текущий идентификатор процесса Ruby.
ОТВЕТЫ
Ответ 1
Ответ 2
PPID:
В дополнение к уникальному идентификатору процесса каждому процессу присваивается идентификатор родительского процесса (PPID), который сообщает, какой процесс был запущен. PPID является PID родительского процесса.
Например, если process1 с PID из 101 запускает процесс с именем process2, то process2 будет предоставлен уникальный PID, такой как 3240, но ему будет присвоен PPID 101. Его отношение родитель-потомок. Один родительский процесс может порождать несколько дочерних процессов, каждый из которых имеет уникальный PID, но все используют один и тот же PPID.
Unix-подобные операционные системы определяют пользователей в ядре значением, называемым идентификатором пользователя, часто сокращенным до UID или идентификатора пользователя. UID, наряду с GID и другими критериями контроля доступа, используется для определения того, какие системные ресурсы пользователь может получить. Файл паролей сопоставляет текстовые имена пользователей с UID, но в ядре используется только UID.
EUID:
Для большинства проверок доступа используется эффективный UID (euid) процесса. Он также используется как владелец файлов, созданных этим процессом.
Идентификатор группы, часто сокращенный до GID, представляет собой числовое значение, используемое для представления конкретной группы. Диапазон значений для GID варьируется в зависимости от разных систем; по крайней мере, GID может быть между 0 и 32 767 с одним ограничением: группа входа для суперпользователя должна иметь GID 0.
EGID:
Эффективный GID (egid) процесса также влияет на управление доступом и может также влиять на создание файла, в зависимости от семантики используемой конкретной реализации ядра и, возможно, используемых параметров монтирования.
Обратитесь к этим статьям за дополнительной информацией:
В чем разница между pid, ppid, uid, euid, gid и egid процесса?
Контекст: я получаю текущий идентификатор процесса Ruby.
2 ответа
В дополнение к приведенным выше исчерпывающим ответам я хотел бы поделиться несколькими командами Linux и соответствующими выходными данными, которые могут помочь материализовать разницу между реальным и эффективным идентификатором пользователя / группой для текущего зарегистрированного в пользователе myuser :
Настоящие имена пользователей и групп и числовой идентификатор
Действующие имена пользователей и групп и числовой идентификатор
PPID:
Например, если process1 с PID 101 запускает процесс с именем process2, то процессу process2 будет присвоен уникальный PID, например 3240, но ему будет присвоен PPID 101. Это родительско-дочерние отношения. Один родительский процесс может порождать несколько дочерних процессов, каждый с уникальным PID, но все с одним и тем же PPID.
Unix-подобные операционные системы идентифицируют пользователей в ядре по значению, называемому идентификатором пользователя, часто сокращенно UID или User ID. UID, наряду с GID и другими критериями контроля доступа, используется для определения того, к каким системным ресурсам может получить доступ пользователь. Файл паролей сопоставляет текстовые имена пользователей с UID, но в ядре используются только UID.
EUID:
Эффективный UID (euid) процесса используется для большинства проверок доступа. Он также используется как владелец файлов, созданных этим процессом.
Идентификатор группы, часто сокращенно GID, представляет собой числовое значение, используемое для представления определенной группы. Диапазон значений GID варьируется в разных системах; по крайней мере, GID может быть от 0 до 32 767, с одним ограничением: группа входа для суперпользователя должна иметь GID 0.
EGID:
Эффективный GID (egid) процесса также влияет на управление доступом и может также влиять на создание файла, в зависимости от семантики конкретной используемой реализации ядра и, возможно, используемых параметров монтирования.
Обратитесь к этим статьям для получения дополнительной информации:
В чем разница между процессами pid, ppid, uid, euid, gid и egid?
Контекст: я получаю текущий идентификатор процесса Ruby.
2 ответа
В Linux исполняемый файл, хранящийся на диске, называется программой, а программа, загружаемая в память и работающая, называется процессом. Когда процесс запускается, ему присваивается уникальный номер, называемый идентификатором процесса (PID), который идентифицирует этот процесс в системе. Например, если вам когда-нибудь понадобится завершить процесс, вы можете обратиться к нему по его PID.
PPID:
Например, если process1 с PID 101 запускает процесс с именем process2, тогда process2 будет присвоен уникальный PID, например 3240, но ему будет присвоен PPID 101. Это родительско-дочерние отношения. Один родительский процесс может порождать несколько дочерних процессов, каждый с уникальным PID, но все с одним и тем же PPID.
Unix-подобные операционные системы идентифицируют пользователей в ядре по значению, называемому идентификатором пользователя, часто сокращаемому до UID или ID пользователя. UID, наряду с GID и другими критериями управления доступом, используется для определения того, к каким системным ресурсам может обращаться пользователь. Файл паролей отображает текстовые имена пользователей в UID, но в ядре используются только UID.
EUID:
Эффективный UID (euid) процесса используется для большинства проверок доступа. Он также используется как владелец для файлов, созданных этим процессом.
Идентификатор группы, часто сокращенно GID, представляет собой числовое значение, используемое для представления определенной группы. Диапазон значений GID варьируется в разных системах; по крайней мере, GID может быть между 0 и 32 767, с одним ограничением: группа входа для суперпользователя должна иметь GID 0.
EGID:
Эффективный GID (egid) процесса также влияет на управление доступом и может также влиять на создание файла, в зависимости от семантики используемой конкретной реализации ядра и, возможно, используемых параметров монтирования.
Для получения дополнительной информации обратитесь к этим статьям.
Русские Блоги
(3) Различные идентификаторы процессов: pid, pgid, sid, глобальный pid, локальный pid
Операционная система: Linux
Процессор: arm
Версия ядра: 4.x
Процессы, как системные ресурсы, имеют различные логотипы и являются сложными. Ниже приводится простое объяснение.
1. Начиная с Linux
Только системный вызов gettid вернет pid процесса:
Видно, что при передаче типа __PIDTYPE_TGID в конце возвращается pid его group_leader.
Процессы могут быть организованы в группы процессов (системный вызов setpgrp). Группы процессов могут упростить процесс отправки сигналов всем процессам в группе. Идентификатор группы процессов называется PGID. Все процессы в группе процессов имеют одинаковый PGID, который равен PID лидера группы.
Несколько групп процессов могут быть объединены в группу диалога (с помощью системного вызова setsid), которая может использоваться для программирования терминала. Все процессы в группе разговоров имеют одинаковый SID.
2. Другое
TID это PID на Linux! PID возвращается при выполнении вызова gettid.
Пид родительского процесса.
Командное пространство 3.pid
В настоящее время в ядре Linux поддерживаются следующие пространства имен:
имя | Макроопределение | Карантинный контент |
---|---|---|
Cgroup | CLONE_NEWCGROUP | Cgroup root directory (since Linux 4.6) |
IPC | CLONE_NEWIPC | System V IPC, POSIX message queues (since Linux 2.6.19) |
Network | CLONE_NEWNET | Network devices, stacks, ports, etc. (since Linux 2.6.24) |
Mount | CLONE_NEWNS | Mount points (since Linux 2.4.19) |
PID | CLONE_NEWPID | Process IDs (since Linux 2.6.24) |
User | CLONE_NEWUSER | User and group IDs (started in Linux 2.6.23 and completed in Linux 3.8) |
UTS | CLONE_NEWUTS | Hostname and NIS domain name (since Linux 2.6.19) |
Просмотрите пространство имен, к которому принадлежит процесс:
API, связанный с пространством имен:
Введите пространство имен pid
давным-давно, когда ядро не поддерживает пространство имен pid_name, pid и tgid напрямую хранятся в task_struct.
Пространства имен PID позволяют повторять идентификаторы процессов в разных пространствах имен pid, не влияя друг на друга, и могут быть вложенными. Все новые пространства имен, созданные в текущем пространстве имен, являются дочерними пространствами текущего пространства имен.В родительском пространстве имен можно видеть информацию о процессе во всех дочерних пространствах имен, в то время как дочернее пространство имен не может видеть информацию о процессе в пространстве имен предка или брата.
В настоящее время пространство имен PID может быть вложено до 32 уровней, что определяется макросом MAX_PID_NS_LEVEL в ядре.
Для поддержки pid_namespace ядро добавляет структуры pid и upid. Задачи в структуре pid являются заголовком связанного списка, указывая на узел pid_link в task_struct, который можно использовать для объединения воедино групповых задач процесса и сеансовых задач процесса.
Как найти task_struct по nr в упиде?
Если есть upid высокого уровня, дополнительный upid будет организован после структуры pid за один раз. В соответствии с переменной уровня пространства имен pid_name, в котором находится upid, структуру pid можно найти, используя номер pid в макросе upid и container_of, тем самым найдя task_struct. Процесс заключается в следующем.
Глобальный пид, местный пид
таблица pid_hash
Хеш-таблица хранит данные в структуре с индексированием по ключу (key-indexed). Введите значение для поиска, то есть ключ, чтобы найти соответствующее значение. С помощью хеш-функции введите pid, чтобы найти соответствующую позицию в хеш-таблице. Если позиция в хеш-таблице совпадает, вы можете связать их вместе. Регулируя алгоритм хеш-функции и размер хеш-таблицы, вы можете найти баланс во времени и пространстве.
Здесь используется хеш-функция pid_hashfn, которая сохраняет заголовок списка в pid_hash, указывая на pid_chain в upid. Для разных уровней, но upid с одинаковым номером pid может быть связан с одной и той же строкой pid_chain, поэтому в случае поиска структуры pid по номеру pid необходимо указать пространство имен.