Ottenere un elenco dei processi attualmente in esecuzione

4

Vorrei avere un elenco di tutte le applicazioni attualmente in esecuzione sulla mia macchina utilizzando la riga di comando. Dovrebbe essere simile a quello che ottieni quando apri Activity Monitor e scegli di salvare l'elenco.

Ho notato che il comando ps -a fa qualcosa di simile, ma taglia i nomi dei processi.

Mi interessa solo il nome dei processi, quindi non ho bisogno di tutte le colonne che vengono generate da Monitoraggio attività.

Aggiornamento: avrei dovuto essere più chiaro ... Non voglio che venga visualizzato l'intero percorso del processo. Voglio solo il nome del processo, come appare in Activity Monitor. Ad esempio, ps fa sì che lanchd venga visualizzato come /sbin/launchd piuttosto che come viene visualizzato in Activity Monitor (cioè solo lanchd ). Questo è un problema perché i processi che hanno percorsi molto lunghi finiscono per essere troncati (a seconda della dimensione della mia finestra di terminale), e non riesco nemmeno a vedere il nome del processo.

    
posta Senseful 23.06.2012 - 01:31
fonte

3 risposte

2
ps -axc -o comm
  • -a visualizza i processi da tutti gli utenti (o root)
  • -x include processi che non hanno un terminale di controllo
  • -o comm genera percorsi di comando o nomi
  • -c rende -o comm solo nomi di output

tell app "System Events" to name of application processes elenca solo i processi avviati da un pacchetto di applicazioni.

    
risposta data 24.06.2012 - 15:08
fonte
2

Comando destro, flag errati.

  • Utilizza ps -Ao comm se desideri solo i nomi dei processi.
  • Utilizza ps -Ao command se vuoi i nomi dei processi con argomenti.
risposta data 23.06.2012 - 02:17
fonte
2

Hai detto che vorresti salvarlo su un file. Nel caso più semplice (quello che più ti preoccupa), usa

ps ax > /path/to/outfile.txt

che stamperà un elenco di tutti i processi in esecuzione (con il nome completo) nel file designato dal percorso. Il ">" reindirizza l'output stampato (in modalità sovrascrittura) al file. Il semplice rilascio di ps ax lo stamperà sullo schermo.

Suggerimento: se non hai voglia di digitare una directory completa, trascina una cartella sul terminale per ottenere il percorso e completa manualmente con il nome del file

Nel caso in cui finisci per volere alcune delle altre colonne a un certo punto ... Inoltre, controlla la pagina man di ps digitando man ps nella riga di comando e guarda le altre opzioni. Ecco un altro esempio che stampa l'utilizzo e la memoria della cpu per ogni processo (in percentuale) seguito dal comando (processo):

ps ax -o %cpu -o %mem -o command > /path/to/outfile.txt

Usa

# Sort by cpu usage with the 'r' option
ps arx -o %cpu -o %mem -o command > /path/to/outfile.txt

# Sort by memory usage with the 'm' option
ps arm -o %cpu -o %mem -o command > /path/to/outfile.txt

Modifica

Per stampare solo il comando, ci sono probabilmente approcci più duraturi, ma in un pizzico farei solo ciò che segue. Probabilmente noterai un po 'di cruft vicino alla fine relativa a stringhe che non erano pensate per basename (come -bash ), ma il resto di ciò che vuoi sarà lì con questa sveltina.

ps ax -o comm | xargs -I % basename % > /path/to/outfile.txt

NOTA: Alcuni processi in esecuzione non sono necessariamente nomi eseguibili. Potrebbero essere una chiamata diretta a sh con una serie di comandi che seguono.

    
risposta data 23.06.2012 - 08:21
fonte

Leggi altre domande sui tag