Usar -o
bandera
Para enumerar solo sus propios procesos
ps -o command
Para enumerar todos los procesos del sistema
ps -e -o command
Esta no es la única forma de listar comandos, pueden imprimirse con indicadores de línea de comandos o solo como ejecutables (que es lo que command
hace la opción).
De mi comentario a continuación la respuesta:
command, args y cmd todos dan un comando completo. De hecho, man page states command y cmd son alias de args, con las banderas - incluidas. La comunicación solo da el nombre del ejecutable. Los alias a eso son ucmd y ucomm. Leí mal sobre las opciones de AIX, que en realidad se pueden especificar con un formato similar a printf,% a para args,% c para comm
Consulte para man ps
obtener más información sobre el uso y las opciones de formato disponibles
El enfoque programático sería un poco redundante, ya que ps
ya nos proporciona las opciones de formato, pero se puede hacer awk
, lo que es muy útil cuando se trata de resultados en columnas.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Sin embargo, tenga en cuenta que este código se rompe si el nombre de usuario contiene espacios en blanco, por ejemplo john doe
. Esto se puede modificar con la gsub
función de agregar que eliminará su nombre de usuario de la ps
lista. Sin embargo, si hay varios usuarios conectados al sistema, puede ser difícil borrar todos los nombres de usuario de la salida. Por lo tanto, puede ver que la -o
bandera es mucho más preferida.
Nota al margen, sudo
no es necesario para enumerar todos los procesos conps
Sergiy Kolodyazhnyy
fuente
ps -eo command
&ps -eo comm
? La única diferencia que encontré fue encommand
la salida era como tal:[kthreadd]
mientras que encomm
la salida era como este:kthreadd
. ¿Esto significa algo?comm
es el formato AIX, donde comocommand
es el formato de estilo GNU estándar. AIX es otro sistema similar a NIX, por lo que esa opción se puede utilizar para la compatibilidad. De lo contrario, no hay diferenciadiff <(ps -eo comm) <(ps -eo command)
y parece que hay bastante ruido allá abajo, ¿puedes aclararlo?awk
solución se rompe si un nombre de usuario contiene espacios ( aquí ); también tal vez solops aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'
?command
,args
ycmd
todos dan el comando completo. De hecho, los estados de la página mancommand
ycmd
son alias paraargs
, con las-
banderas incluidas. Elcomm
da el nombre del exacutable solamente. Los alias a eso sonucmd
yucomm
. Leí mal acerca de las opciones de AIX, que en realidad se pueden especificar con un formato similar a printf,% a para args,% c para comUna forma más genérica. Determinamos la columna del comando. De esta manera, no importa para qué interruptores se usen
ps
.Salida de muestra
¿Y de qué se trata
pstree
?Salida de muestra
fuente
Encontré una manera tímida de lograr esto desde aquí
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
invierte la salida deps
y luego cortar puede ayudarlo a delimitar el primer campo (¡que es el último!) y luego invertirlo nuevamente ...trabajó para mi.
fuente
ps aux
sí se enumerará comoaux
.sudo
no es necesariops
y el comando recorta muchos de los comandos, por lo que no es muy preciso, si desea trabajar con columnas, usarloawk
es mucho mejor para esa tarea. De hecho, el comando exacto seríaps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
debería funcionar.sudo ps
y penséawk
que sería demasiado complicado para esta tarea y se me ocurriócut
. De todos modos, ¿no deberías actualizar tu respuesta con ese código para que el OP pueda aceptarlo?ps
simplemente no se puede analizar a ciegas. Creo que el único método seguro aquí esps -e -o
.