Possiamo installare i coreutils GNU tramite brew
. Ma non c'è nessun ps
nei programmi di utilità . Possiamo usare gnu ps
in OS X?
Mi piacerebbe usare GNU ps
in quanto ha più opzioni e funzionalità.
ps
perché ha più opzioni e funzionalità.
Possiamo installare i coreutils GNU tramite brew
. Ma non c'è nessun ps
nei programmi di utilità . Possiamo usare gnu ps
in OS X?
Mi piacerebbe usare GNU ps
in quanto ha più opzioni e funzionalità.
ps
perché ha più opzioni e funzionalità.
Risposte:
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 utilizza uno pseudo-filesystem in / proc, mentre OSX utilizza la funzione sysctl. Altri sistemi possono usare entrambi i meccanismi ma fornire dati in un formato diverso o richiedere programmi come ps per leggere direttamente dalla memoria del kernel.
In generale non esiste uno standard su come le informazioni di processo sono disponibili per programmi come ps e top; quindi il programma deve essere progettato per un sistema operativo specifico. Se manca una funzionalità specifica nella ps OSX, dovrai trovare un altro programma che può farlo, o scriverne uno tu stesso (guarda il manuale di sysctl, in particolare KERN_PROC come punto di partenza), o modificare la ps esistente comando 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' -o
opzione è ragionevolmente affidabile su tutte le piattaforme, in particolare se fai riferimento allo standard UNIX per il nomi di colonna da utilizzare.
/proc
filesystem è l'unico metodo fornito dal kernel Linux per ottenere un elenco di processi o ci sono anche chiamate di sistema separate che forniscono tali informazioni?
No, poiché non esiste. Per quanto riguarda il motivo per cui non è integrato ps
nel coreutils
pacchetto GNU , vedere questa risposta nei forum Unix e Linux.
La migliore formula alternativa disponibile tramite Homebrew è psgrep
:
psgrep è un piccolo script di shell Bash che cerca nell'elenco dei processi (come ottenuto da ps (1) ) usando la straordinaria utility grep (1) per la sua potenza.
Detto questo, puoi ancora usare psgrep
per comportarti come ps
farebbe OS X. Per 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
è disponibile anche tramite brew
, che è sintatticamente più vicino ps
, ma meno efficiente di psgrep
:
psgrep (1) è più utile di pgrep (1) perché non solo può cercare nella lista dei processi e restituire un PID, ma può fornire informazioni più utili come il suo UID, GID, utilizzo della memoria / CPU, gentilezza e qualsiasi altra cosa supportata di ps.
Tutta la mia enfasi.
pgrep
fa parte anche delle recenti versioni di OS X
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
proctools
pacchetto di MacPorts o Homebrew fornisce pgrep
e pkill
che è quello che stavo cercando personalmente quando mi sono presentato qui.
ps
non fa parte dei coreutils GNU secondo Wikpedia . La versione fornita con la mia distribuzione Linux sembra provenire da procps , ma sembra che non ci sia una formula per farlo in homebrew. Esistono formule per le pstree
quali è possibile ottenere fantastiche viste ad albero e anche htop
un altro buon visualizzatore di processi.
ps
ops -ef
in un terminale su OSX? funziona per me su OSX 10.7.5 senza modifiche, su due macchine diverse. È in / bin / ps