Есть, по крайней мере, две вещи, которые могут быть. , Скорее всего , в том , что ps
псевдоним ps -A
(или ps a
а - без - приводит к поведению , подобных -A) на Fedora; который бы объяснил формат вывода.
В каждом системном типе which ps
который покажет, какие псевдонимы, если таковые имеются, вызываются вместо исполняемого файла напрямую.
Вы можете обойти любые псевдонимы, либо вызвав полный путь к программе (например, /bin/ps
либо запустив команду с начальным '\', например, \ps
.
Гораздо менее вероятно, что два дистрибутива скомпилировали ps с разными флагами (что привело к разному поведению). Я только что проверил ps на fedora 23, и его вывод по умолчанию такой же, как и у ubunutu, так что я думаю, что у вас есть набор псевдонимов.
Псевдоним, скорее всего, установлен в файле ~/.bashrc; хотя возможны и другие локации. Вы можете увидеть псевдонимы в вашей текущей среде, набрав alias
без аргументов в терминале.
Обновить:
Поскольку они не имеют псевдонимов, что-то еще (чтобы заявить очевидное) модифицирует поведение. Вот несколько вещей, на которые стоит обратить внимание, чтобы узнать, что это такое: На каждой системе запускайте их в «чистой» среде:
env -i ps
и посмотрим, изменится ли поведение. Если это так, то мы знаем, что это изменение окружающей среды.
в каждой системе введите следующую команду:ps --info
Посмотрите, не является ли поле personality=0x
ненулевым, что может изменить вывод. Обратите внимание на любые другие отличия от этого вывода; опубликуйте их, если не можете расшифровать значение разницы.
Чтобы увидеть, что-то меняет ps
, запустите следующее в оболочке bash для каждого:
set -x
ps -a
Вы должны увидеть что-то вроде:
+ps -a
эхом отозвался; если вы видите что-то еще, например, +ps aux
, то это может вызвать это. Обычно это делается псевдонимом, но это может быть функция.
Вы можете отключить спам в bash, запустив set +x
На каждой машине проверяйте, является ли двоичный файл символической ссылкой на что-то еще, и происходит ли там что-то странное (вероятно, в fedora /usr /bin /ps является символической ссылкой на /bin /ps)
ls -alt /bin/ps
ls -alt /usr/bin/ps
Пытаться
type ps
На каждой машине; результаты должны быть одинаковыми, если не отвечать с результатами.
Существуют некоторые переменные среды, которые могут изменить поведение ps; чтобы увидеть этих типа man ps
; они внизу. введите env
на каждой ОС и посмотрите, установлены ли они; вы можете grep для них:
env | grep 'CMD_ENV\|PS_PERSONALITY\|_XPG'
Есть другие; см. справочную страницу, чтобы добавить их в запрос, если они ничего не возвращают, или выяснить, что означает этот параметр для ps
.
Попадание в сорняки здесь, но если у вас все еще ничего нет, проверьте заголовки двоичных файлов на каждом:
readelf -h /bin/ps
Если ничего из этого не показывает каких-либо различий, вы можете скопировать файл /bin /ps в другую ОС и выполнить сравнение:
cmp -b /bin/ps /path/to/copy/of/ps
Это выведет все байты, которые отличаются между двумя файлами. Фактические значения не имеют значения; просто количество отличий.
Они будут другими; если разница составляет всего пару байтов, то это будет просто поле gcc NT_GNU_BUILD_ID, которое является уникальным для каждой сборки, даже в других случаях идентичных файлов. Если они существенно не отличаются от поведения, связанного с окружающей средой, и я не могу больше думать об этом.