Работа - это трубопровод процессов.
Не обязательно. Хотя в большинстве случаев задание состоит из конвейера процессов, оно может быть одной командой или может быть набором команд, разделенных &&
. Например, это может создать работу с несколькими процессами, которые не соединены трубопроводом:
cat && ps u && ls -l && pwd &
Теперь, что из пути, давайте перейдем к интересному.
Это 31562
«job pid» этой работы? Это то же самое, что и процесс команды ls?
Идентификатор задания задается в квадратных скобках. В этом случае это 1. Это идентификатор, который вы будете использовать, чтобы вывести его на передний план и выполнить другие административные задачи. Это то, что идентифицирует это задание в оболочке.
Номер 31562
- это идентификатор группы процессов группы процессов, выполняющей задание. В оболочках UNIX/Linux используются группы процессов: группа процессов представляет собой набор процессов, которые каким-то образом связаны (часто по линейному конвейеру, но, как упоминалось ранее, необязательно). В любой момент вы можете иметь 0 или более фоновых групп процессов и не более одной группы процессов переднего плана (оболочка управляет тем, какие группы находятся в фоновом режиме и находится на переднем плане с tcsetpgrp(3)
).
Группа процессов идентифицируется идентификатором группы процессов, который является идентификатором лидера группы процессов. Лидер группы процессов - это процесс, который сначала создал и присоединился к группе, вызвав setpgid(2)
. Точный процесс, который делает это, зависит от того, как работает оболочка, но в bash, IIRC, это последний процесс в конвейере.
В любом случае, то, что показывает оболочка, является идентификатором группы процессов группы процессов, выполняющей задание (что опять-таки является только PID лидера группы).
Обратите внимание, что лидер группы, возможно, умер в прошлом; идентификатор группы процессов не изменится. Это означает, что идентификатор группы процессов не обязательно соответствует живому процессу.