Это восходит к нескольким извилистой истории Unix (Википедия имеет упрощенную схему , которая далека от завершения). В частности, какое-то время существовало два основных направления: System V, разработанная AT & T, и BSD, разработанная в Калифорнийском университете в Беркли. Это было в начале 1980-х, задолго до Linux (1991), не говоря уже об Ubuntu (2004). Зачастую эти два потока принимали разные решения, и даже сегодня вы иногда найдете ссылки на варианты или функции «System V» и «BSD».
Эта ps
команда восходит к одному из первых выпусков Unix (ее не было в версии 1, самая ранняя страница руководства, которую я могу найти в Интернете, относится к версии 5 (с.94) в 1974 году). В то время ps
просто было несколько вариантов, например ps a
, отображал бы все процессы, а не только пользователя, и ps x
отображал процессы без присоединенного терминала. Вы заметите, что параметры не начинаются с -
: в то время соглашение об использовании -
параметров не было почти систематическим, как сегодня, это было в основном для команд, которые принимали имена файлов в качестве обычных аргументов.
Со временем различные направления Unix расширились ps
и получили еще больше возможностей. Вариант BSD решил сохранить исходный синтаксис без лидирующего -
, a
и x
до сих пор существует сегодня. Вариант System V решил принять синтаксическое соглашение -
для опций и использовал разные буквы (например, ps -e
для отображения всех процессов). Oracle (ранее Sun) Solaris является примером варианта System V (Solaris также поставляет отдельный ps
исполняемый файл в каталоге, который не используется по умолчанию PATH
для приложений, написанных с учетом BSD).
Когда Linux появился на сцене, люди, которые его использовали, часто имели опыт работы с тем или иным вариантом Unix. Иногда Linux делал что-то в стиле System V, иногда в BSD, иногда по-своему, либо исходя из технических соображений, либо исходя из опыта и вкусов тех, кто реализовывал эту функцию. ps
Команда Linux начиналась с BSD-подобных опций, например, ps ae
для отображения всех процессов и включения переменных среды в листинг. Со временем (в конце 1990 - х годов, я не помню точно когда), авторы для Linux ps
добавлены опции для людей , которые были использованы для System V. Таким образом , сегодня либо ps ax
или ps -e
перечислит все процессы под Linux, и есть даже переменная окружения ( PS_PERSONALITY
) сделатьps
вести себя более как различные старые Unix-варианты Unix, ради старых сценариев и людей с заданными привычками.
Людям, которые использовали несколько вариантов Unix, не нравилось, что им придется изменять свои программы и свои привычки при переходе с одного варианта Unix на другой. Поэтому была предпринята попытка стандартизировать подмножество функций. Это привело к стандарту POSIX (ведомому IEEE ), которому в целом следует Ubuntu. Первое издание, в которое входила ps
команда, вышло в 1992 году; этот не доступен онлайн, но выпуск 1997 года . Для этой ps
команды, как и во многих других случаях, POSIX принял System V способ действий.
В ps
стандартном синтаксисе командный является один , который совместит с System V и POSIX. Кроме того, можно сказать, что этот синтаксис является стандартным, поскольку он использует -
параметры по умолчанию. Некоторые параметры существуют только в одном из двух синтаксисов; к счастью, они могут быть смешаны в одном вызове.
Вообще говоря, «BSD» против «System V» не имеет никаких технических последствий. Это относится к истории: «BSD» - это тот выбор, который BSD сделала в 1980-х годах и около того, «System V» - это любой выбор AT & T и их партнеров (особенно Sun). «POSIX» - это тот выбор, который сделал комитет по стандартизации IEEE.
ps
Исследовать исторические различия между тем, как системы со временем внедряют optargs, - значит стоять на краю пропасти. Человек не должен был знать.