Posso usare GNU ps su OS X?


18

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à.


hai provato a correre pso ps -efin un terminale su OSX? funziona per me su OSX 10.7.5 senza modifiche, su due macchine diverse. È in / bin / ps
jammypeach

Sì, lo so, volevo usare GNU psperché ha più opzioni e funzionalità.
Sanghyun Lee,

ah OK, scusa non me ne sono reso conto dalla domanda come indicato. Suggerirei che da qualche parte, in caso qualcun altro la pensasse allo stesso modo - buona fortuna con la ricerca di una soluzione
jammypeach

Grazie per il suggerimento Ho aggiunto ulteriori spiegazioni al riguardo.
Sanghyun Lee,

Risposte:


22

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.


Il /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?
Tanner Swett,

1
@TannerSwett Non la penso così. Prima dell'implementazione di / proc, il comando ps su linux funzionava leggendo da / dev / kmem e / dev / swap.
Casuale 832,

9

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.


2
pgrepfa parte anche delle recenti versioni di OS X
nohillside

@patrix agh! buon punto, confermato:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot,

A parte questo, come menzionato qui , il proctoolspacchetto di MacPorts o Homebrew fornisce pgrepe pkillche è quello che stavo cercando personalmente quando mi sono presentato qui.
TheDudeAbides,

3

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.