Posso usare GNU ps su OS X?

13

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.

    
posta Sanghyun Lee 19.05.2015 - 07:42
fonte

3 risposte

19

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.

    
risposta data 19.05.2015 - 15:26
fonte
7

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.

    
risposta data 19.05.2015 - 11:23
fonte
3

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.

    
risposta data 19.05.2015 - 10:21
fonte

Leggi altre domande sui tag