Possiamo installare GNU coreutils tramite brew
. Ma non c'è ps
negli utils . Possiamo usare gnu ps
in OS X?
Mi piacerebbe usare GNU ps
in quanto ha più opzioni e caratteristiche.
Possiamo installare GNU coreutils tramite brew
. Ma non c'è ps
negli utils . Possiamo usare gnu ps
in OS X?
Mi piacerebbe usare GNU ps
in quanto ha più opzioni e caratteristiche.
Non esiste un programma ps portatile. Il comando ps disponibile su linux è, come altri hanno già detto, dal pacchetto "procps". Il motivo per cui questo non può essere portato su OSX è perché i kernel Linux e OSX non espongono queste informazioni allo stesso modo. Linux usa uno pseudo-file system in / proc, mentre OSX usa la funzione sysctl. Altri sistemi possono utilizzare entrambi i meccanismi, ma fornire dati in un formato diverso o possono richiedere programmi come ps per leggere direttamente dalla memoria del kernel.
In generale non esiste uno standard su come le informazioni sul processo siano disponibili per programmi come ps e top; quindi il programma deve essere progettato per uno specifico sistema operativo. Se manca una funzione specifica da OSX ps, dovrai trovare un altro programma che può farlo, o scriverne uno tu stesso (guarda manuale di sysctl, in particolare KERN_PROC come punto di partenza), o modificare il comando ps esistente per aggiungere la funzione.
In alternativa, se puoi ottenere ciò di cui hai bisogno analizzando l'output del comando ps stesso, potresti essere in grado di scrivere un programma portatile - l'output con l'opzione -o
è ragionevolmente affidabile su tutte le piattaforme, in particolare se < a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html"> fai riferimento allo standard UNIX per i nomi delle colonne da utilizzare.
No - dal momento che non esiste. Per quanto riguarda perché non è presente ps
incorporato nel pacchetto coreutils
di GNU, vedi questa risposta su l'Unix & Forum di Linux.
La migliore formula alternativa disponibile tramite Homebrew è psgrep
:
psgrep is a small Bash shell script that searches the process list (as obtained by ps(1) ) using the awesome utility grep(1) for its power.
Detto questo, puoi ancora utilizzare psgrep
per comportarsi come farebbe con ps
di OS X. Ad esempio:
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
è anche disponibile tramite brew
, che è sintatticamente più vicino a ps
, ma meno efficiente di psgrep
:
psgrep(1) is more useful than pgrep(1) because not only can it search the process list and return a PID, it can give more useful information such as its UID, GID, memory/CPU usage, niceness, and anything else supported by ps.
Tutta l'enfasi mia.
ps
non fa parte dei coreutils GNU in base a Wikpedia . La versione fornita con la mia distribuzione Linux sembra provenire da procps , ma sembra che non ci sia una formula per l'homebrew . Esistono delle formule per pstree
che possono darti grandi viste ad albero, e anche htop
è un altro buon visualizzatore di processi.
Leggi altre domande sui tag command-line macos