Possiamo installare i coreutils GNU tramite brew. Ma non c'è nessun psnei programmi di utilità . Possiamo usare gnu psin OS X?
Mi piacerebbe usare GNU psin quanto ha più opzioni e funzionalità.
psperché ha più opzioni e funzionalità.
Possiamo installare i coreutils GNU tramite brew. Ma non c'è nessun psnei programmi di utilità . Possiamo usare gnu psin OS X?
Mi piacerebbe usare GNU psin quanto ha più opzioni e funzionalità.
psperché 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' -oopzione è ragionevolmente affidabile su tutte le piattaforme, in particolare se fai riferimento allo standard UNIX per il nomi di colonna da utilizzare.
/procfilesystem è 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 psnel coreutilspacchetto 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 psgrepper comportarti come psfarebbe 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.
pgrepfa parte anche delle recenti versioni di OS X
type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
proctoolspacchetto di MacPorts o Homebrew fornisce pgrepe pkillche è quello che stavo cercando personalmente quando mi sono presentato qui.
psnon 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 pstreequali è possibile ottenere fantastiche viste ad albero e anche htopun altro buon visualizzatore di processi.
psops -efin un terminale su OSX? funziona per me su OSX 10.7.5 senza modifiche, su due macchine diverse. È in / bin / ps