Вопрос: Что такое эквивалент OS X / BSD команды GNU «ps auxf»?


В утилитах GNU, ps auxf дает список процессов с лесом (дерево). Есть ли эквивалент этой команды в системах BSD / OS X?


10
2017-10-26 14:23


Источник


stackoverflow.com/questions/7138783/... - quanta
Отчаянно важно, чтобы вы использовали версию командной строки? Если вы просто хотите увидеть дерево, почему бы не использовать «Монитор активности» и выбрать «Все процессы, иерархически»? - AlanGBaker


Ответы:


pstree обычно является частью стандартной установки или легко устанавливается в системах bsd. Это то, что я использую. Например, вы можете установить его через MacPorts на маке.


8
2017-10-26 14:33



Жаль, что ps не обладает этой способностью, но я буду управлять собой pstree, Спасибо, что упомянули об этом! - vdboor
или brew install pstree с hombrew - cwd
@cwd ваш комментарий должен быть ответом :) - okutane


Htop также является действительно хорошим средством просмотра процессов, и он имеет «древовидное» представление как один из его основных вариантов в нижней строке состояния (F5).

enter image description here


3
2017-09-10 20:15



Чтобы установить в OSX с помощью доморощенного, используйте brew install htop, - jsears


До сих пор я не считаю, что OSX имеет встроенный модуль, который делает это.

Но вот ответ, который я написал также в stackexchange; небольшой скрипт perl, который определяет иерархию процессов и печатает его в форме с отступом, используя вывод встроенного ps (1) OSX.

Протестировано на OSX 10.6 и 10.9, а также должно работать на Linux (Sci Linux 6).

#!/usr/bin/perl
# treeps -- show ps(1) as process hierarchy -- v1.0 erco@seriss.com 07/08/14
my %p;                    # Global array of pid info
sub PrintLineage($$) {    # Print proc lineage
  my ($pid, $indent) = @_;
  printf("%s |_ %-8d %s\n", $indent, $pid, $p{$pid}{cmd});  # print
  foreach my $kpid (sort {$a<=>$b} @{ $p{$pid}{kids} } ) {  # loop thru kids
    PrintLineage($kpid, "   $indent");                       # Recurse into kids
  }
}
# MAIN
open(FD, "ps axo ppid,pid,command|");
while ( <FD> ) { # Read lines of output
  my ($ppid,$pid,$cmd) = ( $_ =~ m/(\S+)\s+(\S+)\s(.*)/ ); # parse ps(1) lines
  $p{$pid}{cmd} = $cmd;
  $p{$pid}{kids} = ();
  push(@{ $p{$ppid}{kids} }, $pid); # Add our pid to parent's kid
}
PrintLineage(1, "");     # recurse to print lineage starting with pid 1

1
2017-07-08 23:03





Если вы действительно любите GNU ps, вы можете установить его на OSX через одна из трех больших систем:

pkgsrc (NetBSD) - мой любимый, так как он работает на самых популярных Unix

MacPorts (OSX)

Fink (Debian, но не использует пакетный пакет и, разумеется, не разделяет сборки)


0
2018-06-08 21:14



Как называется пакет? MacPorts - это то, что я ищу, но для других было бы полезно знать все три. - Jim Stewart
-1 - кажется несколько неправильным. если это правильно, пожалуйста, поддержите свой ответ с более подробной информацией о том, как установить эти системы пакетов, а не просто упоминать системы управления пакетами (особенно MacPorts) - cwd


Это не работает на OSX, но для FreeBSD это команда ps (1) с опцией -d. Выглядит так:

% ps auxwwwd
USER    PID  %CPU %MEM   VSZ   RSS TT  STAT STARTED      TIME COMMAND
root      0   0,0  0,0     0   304  -  DLs  15:23     0:05,12 [kernel]
root     11 400,0  0,0     0    64  -  RL   15:23   712:54,09 - [idle]
root      1   0,0  0,0 10004   140  -  ILs  15:23     0:00,02 - /sbin/init --
root    309   0,0  0,0 11392  1372  -  Is   15:23     0:00,08 |-- dhclient: em0 [priv] (dhclient)
_dhcp   355   0,0  0,0 11556  1444  -  Is   15:23     0:00,06 |-- dhclient: em0 (dhclient)
root    404   0,0  0,0 14236   664  -  Ss   15:23     0:01,57 |-- /sbin/devd
root    546   0,0  0,0 11360  1320  -  Ss   15:23     0:00,63 |-- /usr/sbin/syslogd -s
root    678   0,0  0,0 17908  1252  -  Is   15:24     0:00,00 |-- /usr/sbin/sshd
root    751   0,0  0,0 18312  1312  -  Is   15:25     0:00,04 | `-- sshd: trasz [priv] (sshd)
trasz   753   0,0  0,0 18948  2012  -  S    15:25     0:01,83 |   `-- sshd: trasz@pts/0 (sshd)
trasz   754   0,0  0,0 13948     0  0  IWs  -         0:00,00 |     `-- -zsh (zsh)
trasz   765   0,0  0,0 15164  1456  0  I+   15:25     0:00,01 |       `-- tmux: client (/tmp/tmux-1001/default) (tmux)
root    681   0,0  0,0 15744  1740  -  Ss   15:24     0:00,39 |-- sendmail: accepting connections (sendmail)
smmsp   684   0,0  0,0 15588   804  -  Is   15:24     0:00,01 |-- sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail)
root    688   0,0  0,0 11384   640  -  Is   15:24     0:00,10 |-- /usr/sbin/cron -s
root    733   0,0  0,0 12428   484  -  Is   15:24     0:00,04 |-- /usr/sbin/autounmountd
root    738   0,0  0,0 10860  1112  -  Is   15:24     0:00,00 |-- /usr/sbin/automountd
trasz   767   0,0  0,4 30036 17168  -  Ss   15:25     0:01,97 |-- tmux: server (/tmp/tmux-1001/default) (tmux)
trasz   768   0,0  0,1 13888  2592  1  Is+  15:25     0:00,05 | |-- -zsh (zsh)
trasz 11313   0,0  0,1 13952  3984  2  Is+  21:05     0:00,07 | |-- -zsh (zsh)
trasz 11531   0,0  0,1 13952  3980  3  Is+  21:55     0:00,05 | |-- -zsh (zsh)
trasz 37987   0,0  0,1 13920  4260  5  Ss   22:06     0:00,04 | |-- -zsh (zsh)
trasz 37998   0,0  0,1 11796  2512  5  R+   22:07     0:00,00 | | `-- ps auxwwwd
trasz 25549   0,0  0,1 13952  3980  4  Is+  21:57     0:00,08 | `-- -zsh (zsh)
root    743   0,0  0,0 10900  1100 v0  Is+  15:24     0:00,00 |-- /usr/libexec/getty Pc ttyv0
root    744   0,0  0,0 10900  1100 v1  Is+  15:24     0:00,01 |-- /usr/libexec/getty Pc ttyv1
root    745   0,0  0,0 10900  1100 v2  Is+  15:24     0:00,00 |-- /usr/libexec/getty Pc ttyv2
root    746   0,0  0,0 10900  1100 v3  Is+  15:24     0:00,01 |-- /usr/libexec/getty Pc ttyv3
root    747   0,0  0,0 10900  1100 v4  Is+  15:24     0:00,00 |-- /usr/libexec/getty Pc ttyv4
root    748   0,0  0,0 10900  1100 v5  Is+  15:24     0:00,00 |-- /usr/libexec/getty Pc ttyv5
root    749   0,0  0,0 10900  1100 v6  Is+  15:24     0:00,00 |-- /usr/libexec/getty Pc ttyv6
root    750   0,0  0,0 10900  1100 v7  Is+  15:24     0:00,01 `-- /usr/libexec/getty Pc ttyv7
root      2   0,0  0,0     0    16  -  DL   15:23     0:00,00 - [crypto]
root      3   0,0  0,0     0    16  -  DL   15:23     0:00,00 - [crypto returns]
root      4   0,0  0,0     0    32  -  DL   15:23     2:16,26 - [cam]
root      5   0,0  0,0     0    16  -  DL   15:23     0:00,00 - [mpt_recovery0]
root      6   0,0  0,0     0    16  -  DL   15:23     0:00,01 - [soaiod1]
root      7   0,0  0,0     0    16  -  DL   15:23     0:00,01 - [soaiod2]
root      8   0,0  0,0     0    16  -  DL   15:23     0:00,01 - [soaiod3]
root      9   0,0  0,0     0    16  -  DL   15:23     0:00,01 - [soaiod4]
root     10   0,0  0,0     0    16  -  DL   15:23     0:00,00 - [audit]
root     12   0,0  0,0     0   800  -  WL   15:23     2:21,06 - [intr]
root     13   0,0  0,0     0    48  -  DL   15:23     0:00,03 - [geom]
root     14   0,0  0,0     0   240  -  DL   15:23     0:10,36 - [usb]
root     15   0,0  0,0     0    16  -  DL   15:23     0:00,00 - [sctp_iterator]
root     16   0,0  0,0     0    16  -  DL   15:23     0:23,43 - [rand_harvestq]
root     17   0,0  0,0     0    48  -  DL   15:23     0:35,10 - [pagedaemon]
root     18   0,0  0,0     0    16  -  DL   15:23     0:05,36 - [vmdaemon]
root     19   0,0  0,0     0    32  -  DL   15:23     1:10,04 - [bufdaemon]
root     20   0,0  0,0     0    16  -  DL   15:23     0:06,68 - [bufspacedaemon]
root     21   0,0  0,0     0    16  -  DL   15:23     0:35,66 - [syncer]
root     22   0,0  0,0     0    16  -  DL   15:23     0:00,86 - [vnlru]
root     23   0,0  0,0     0    16  -  DL   15:23     0:04,96 - [racctd]

0
2017-07-22 10:36