Możemy zainstalować jądra GNU za pośrednictwem brew
. Ale nie ma żadnych ps
narzędzi . Czy możemy używać GNU ps
w OS X?
Chciałbym użyć GNU, ps
ponieważ ma więcej opcji i funkcji.
ps
ponieważ ma on więcej opcji i funkcji.
Możemy zainstalować jądra GNU za pośrednictwem brew
. Ale nie ma żadnych ps
narzędzi . Czy możemy używać GNU ps
w OS X?
Chciałbym użyć GNU, ps
ponieważ ma więcej opcji i funkcji.
ps
ponieważ ma on więcej opcji i funkcji.
Odpowiedzi:
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ą -o
opcją są dość niezawodne na różnych platformach, szczególnie jeśli odwołujesz się do standardu UNIX dla nazwy kolumn do użycia.
/proc
system 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ę?
Nie - ponieważ nie istnieje. Aby dowiedzieć się, dlaczego nie ma wbudowanego pakietu ps
GNU 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ć psgrep
do zachowywać się jak OS X na ps
tak. 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.
pgrep
jest 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.
pgrep
jest również częścią najnowszych wersji OS X
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
proctools
pakiet MacPorts lub Homebrew zapewnia pgrep
i pkill
tego właśnie osobiście szukałem, kiedy tu się pojawiłem.
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 pstree
których można uzyskać wspaniałe widoki drzewa, a także htop
jest kolejną dobrą przeglądarką procesów.
ps
lubps -ef
w terminalu na OSX? działa dla mnie na OSX 10.7.5 bez modyfikacji, na dwóch różnych komputerach. Jest w / bin / ps