¿Hay alguna manera de generar una lista completa de procesos en Solaris, sin líneas truncadas? He probado el ps
comando, con los siguientes argumentos:
-f Genera una lista completa. (Ver abajo para importancia de las columnas en una lista completa En g.)
-l Genera una lista larga. (Vea abajo.)
Entonces, ambos parecen hacer lo que quiero, sin embargo, más abajo en la página man de ps, encuentro esto:
args El comando con todos sus argumentos como un cuerda. La implementación puede truncarse este valor al ancho del campo; es depende de la implementación si alguna se produce un truncamiento adicional. Está sin especificar si la cadena representada es una versión del argumento lista como se pasó al comando cuando comenzó, o es una versión del argumentos ya que pueden haber sido modificados por la aplicación Las aplicaciones no pueden depender de poder modificar su lista de argumentos y tener esa modificación ción se reflejará en la salida de ps. La implementación de Solaris limita la cadena a 80 bytes; la cuerda es el versión de la lista de argumentos tal como estaba pasó al comando cuando comenzó.
Lo que básicamente dice que la salida se va a truncar y no hay nada que pueda hacer al respecto. Entonces, voy a venir aquí. Seguramente otras personas se han topado con este problema y tal vez incluso tienen una solución. Supongo que ps no puede hacerlo, por lo que necesito usar otras herramientas para hacerlo. ¿Es eso exacto?
ps
comando? Si es así, actualice la pregunta para que quede más clara.Respuestas:
tu podrías intentar
esto te da una lista de todos los argumentos
o de lo contrario usar otra ps. Si se ejecuta como root (o cualquier usuario con suficientes privilegios para el caso)
te dará todos los argumentos. Es parte de SUNWscpu, "Compatibilidad de fuente, (Usr)"
fuente
pargs
muestra la copia en proceso de los argumentos de la línea de comando (y opcionalmente el entorno). Es bueno saberlo, gracias!El núcleo no es necesario para realizar un seguimiento de los argumentos de la línea de comandos. Cuando se inicia un programa a través de la
execve
llamada, el núcleo debe copiar los argumentos en la memoria del proceso (para que estén disponibles comoargv
en un programa en C, por ejemplo). Después de eso, el núcleo puede descartar la memoria utilizada para almacenar los argumentos iniciales de la línea de comandos. El proceso puede sobrescribir su copia de los argumentos. Por lo tanto, simplemente no puede haber rastro de los argumentos.Algunas variantes de Unix guardan una copia de los argumentos de alguna forma. Solaris expone algunos datos en
/proc/$pid
. A partir de OpenSolaris 2009.06, el único rastro de los argumentos está en/proc/$pid/psinfo
, donde se concatenan con espacios intermedios (por lo que no puede distinguir entrefoo "one" "two"
yfoo "one two"
) y la cadena resultante se trunca a 80 bytes. Este campo en/proc/$pid/psinfo
es lo que seps
imprime en laargs
columna.Por cierto, las opciones
-f
y-l
controlan qué campos se imprimen, no si los campos se truncan en algún ancho.fuente
ps -e
da la lista de todos los procesos en ejecución. También hay estops -elf
.fuente
Dependiendo del
ps
comando que uses, yo usofuente
prstat
le dará los procesos actualmente en ejecución junto con sus pids y la utilización de la CPU.fuente