Czy mogę używać GNU ps na OS X?

18

Możemy zainstalować jądra GNU za pośrednictwem brew. Ale nie ma żadnych psnarzędzi . Czy możemy używać GNU psw OS X?

Chciałbym użyć GNU, psponieważ ma więcej opcji i funkcji.

Sanghyun Lee
źródło
próbowałeś uruchomić pslub ps -efw terminalu na OSX? działa dla mnie na OSX 10.7.5 bez modyfikacji, na dwóch różnych komputerach. Jest w / bin / ps
jammypeach
Tak, wiem, chciałem używać GNU, psponieważ ma on więcej opcji i funkcji.
Sanghyun Lee
ah OK, przepraszam, nie zdawałem sobie z tego sprawy z tego pytania. Sugeruję, aby gdzieś to uwzględnić, jeśli ktoś inny myśli tak samo jak ja - powodzenia w znalezieniu rozwiązania
jammypeach
Dziękuję za sugestię. Dodałem więcej wyjaśnień na ten temat.
Sanghyun Lee

Odpowiedzi:

22

Nie ma przenośnego programu ps. Komenda ps dostępna w systemie Linux jest, jak wspomnieli inni, z pakietu „procps”. Powodem, dla którego nie można tego przenieść do OSX, jest fakt, że jądra Linux i OSX nie ujawniają tych informacji w ten sam sposób. Linux używa pseudo-systemu plików w / proc, podczas gdy OSX używa funkcji sysctl. Inne systemy mogą korzystać z dowolnego mechanizmu, ale dostarczają dane w innym formacie lub mogą wymagać programów takich jak ps, aby czytały bezpośrednio z pamięci jądra.

Zasadniczo nie ma standardu określającego, w jaki sposób informacje o procesie są dostępne dla programów takich jak ps i top; więc program musi być zaprojektowany dla konkretnego systemu operacyjnego. Jeśli brakuje konkretnej funkcji w ps OSX, musisz znaleźć inny program, który może to zrobić, lub napisać ją samodzielnie (spójrz na instrukcję sysctl, w szczególności KERN_PROC jako punkt początkowy) lub zmodyfikuj istniejącą ps polecenie, aby dodać funkcję.

Alternatywnie, jeśli możesz uzyskać to, czego potrzebujesz, analizując dane wyjściowe samej komendy ps, możesz być w stanie napisać program przenośny - dane wyjściowe z tą -oopcją są dość niezawodne na różnych platformach, szczególnie jeśli odwołujesz się do standardu UNIX dla nazwy kolumn do użycia.

Losowo 832
źródło
Czy /procsystem plików jest jedyną metodą, jaką jądro Linux udostępnia w celu uzyskania listy procesów, czy też istnieją osobne wywołania systemowe, które dostarczają tę informację?
Tanner Swett
1
@TannerSwett Nie sądzę. Przed zaimplementowaniem / proc polecenie ps w systemie Linux działało poprzez czytanie z / dev / kmem i / dev / swap.
Random832
9

Nie - ponieważ nie istnieje. Aby dowiedzieć się, dlaczego nie ma wbudowanego pakietu psGNU coreutils, zobacz tę odpowiedź na forach Unix i Linux.

Najlepsza alternatywna formuła dostępna przez Homebrew to psgrep:

psgrep to mały skrypt powłoki Bash, który przeszukuje listę procesów (uzyskaną przez ps (1) ) za pomocą niesamowitego narzędzia grep (1) pod kątem swojej mocy.

Mimo to, nadal można używać psgrepdo zachowywać się jak OS X na pstak. Na przykład:

   OPTIONS
   -a     Search the process list using BSD's "ps aux" format. This option
          includes all users' processes in the search.

   -b     Search the process list using BSD's "ps  ux"  format  (default).
          This option only includes the running user's processes.

pgrepjest również dostępny przez brew, który jest syntaktycznie bliższy ps, ale mniej wydajny niż psgrep:

psgrep (1) jest bardziej przydatny niż pgrep (1), ponieważ nie tylko może przeszukiwać listę procesów i zwracać PID, ale także może dostarczać bardziej przydatnych informacji, takich jak UID, GID, użycie pamięci / procesora, licencja i wszystko inne obsługiwane przez ps.


Cały mój nacisk.

njboot
źródło
2
pgrepjest również częścią najnowszych wersji OS X
nohillside
@patrix agh! dobry punkt, potwierdzony:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot
Tak na marginesie, jak wspomniano tutaj , proctoolspakiet MacPorts lub Homebrew zapewnia pgrepi pkilltego właśnie osobiście szukałem, kiedy tu się pojawiłem.
TheDudeAbides
3

ps nie jest częścią jądra GNU według Wikpedia jądra GNU . Wersja dostarczana z moją dystrybucją Linuksa wydaje się pochodzić z procps , ale wygląda na to, że nie ma na to formuły w homebrew. Istnieją formuły, dla pstreektórych można uzyskać wspaniałe widoki drzewa, a także htopjest kolejną dobrą przeglądarką procesów.

Tomasz
źródło