Usar -obandera
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 commandhace 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 psobtener más información sobre el uso y las opciones de formato disponibles
El enfoque programático sería un poco redundante, ya que psya 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 gsubfunción de agregar que eliminará su nombre de usuario de la pslista. 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 -obandera es mucho más preferida.
Nota al margen, sudono es necesario para enumerar todos los procesos conps
Sergiy Kolodyazhnyy
fuente
ps -eo command&ps -eo comm? La única diferencia que encontré fue encommandla salida era como tal:[kthreadd]mientras que encommla salida era como este:kthreadd. ¿Esto significa algo?commes el formato AIX, donde comocommandes 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?awksolució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,argsycmdtodos dan el comando completo. De hecho, los estados de la página mancommandycmdson alias paraargs, con las-banderas incluidas. Elcommda el nombre del exacutable solamente. Los alias a eso sonucmdyucomm. 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 | revrevinvierte la salida depsy luego cortar puede ayudarlo a delimitar el primer campo (¡que es el último!) y luego invertirlo nuevamente ...trabajó para mi.
fuente
ps auxsí se enumerará comoaux.sudono es necesariopsy el comando recorta muchos de los comandos, por lo que no es muy preciso, si desea trabajar con columnas, usarloawkes 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" }'awkdebería funcionar.sudo psy penséawkque 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?pssimplemente no se puede analizar a ciegas. Creo que el único método seguro aquí esps -e -o.