Entonces, el problema para el que quiero encontrar una solución ordenada es que cuando inicio sesión en un servidor (tengo algunas instancias de Solaris y RHEL), trato de averiguar qué aplicaciones se están ejecutando:
$ ps -auxww | grep <thing I look for, usually Java>
Y obtengo una buena lista de procesos, PID, detalles adicionales y el nombre completo del proceso y los parámetros que se ejecutaron con él. Mientras estogeneralmenteproporciona suficiente información para saber qué se está ejecutando, algunos servidores se ejecutan de manera diferente. Es posible que tenga un servidor que tenga varias instancias de un servidor de aplicaciones utilizadas para diferentes propósitos. Otros procesos son restos de un proceso colgado con el que he mezcladono congeladoprocesos. No quiero cerrar todas las instancias de Java porque no puedo saber qué proceso es necesario eliminar.
La solución que me gustaría ofrecer es que durante mis scripts de inicio, me gustaría anteponer o agregar a un proceso algún texto que me permita incluir una breve descripción. ¿Hay algo que me permita hacer esto?
Si lo que estoy preguntando suena imposible/tonto/completamente fuera de lugar, estoy abierto a soluciones alternativas que me den cierta capacidad para lograr lo mismo. Estoy abierto a ideas, pero esta resultó ser factible.
Respuesta1
He aquí un ejemplo degravedadsugerencia:
$ MARKER=snooze sleep 120&
$ ps ew | grep -o ".*[M]ARKER=snooze"
11741 pts/2 S 0:00 sleep 120 MARKER=snooze
La e
opción hace ps
imprimir el entorno del proceso. La -o
opción y la expresión regular grep
cortan cualquier parte del entorno después de la parte que estamos buscando, pero no apostaría a que siempre tenga resultados tan limpios (es posible que se imprima más parte del entorno). Poner parte del patrón entre corchetes realiza la función que la gente suele utilizar como grep -v
for: eliminarlo grep
de los resultados.
Respuesta2
Parece que desea etiquetar de forma única cada proceso para poder descubrirlo fácilmente. De hecho, escuché que su equipo de monitoreo hizo eso en una gran empresa: cada aplicación obtuvo un código único que se podía encontrar fácilmente con ps y grep.
En Java puedes usar -D para configurar cualquier variable, por lo que fácilmente podrías agregar algo como "-Dmonitoringid=". El proceso lo ignorará, pero puedes buscarlo fácilmente.
Alternativamente, puede dividir los servidores de aplicaciones para que cada uno se ejecute con un ID específico de la aplicación que se sirve. Actualmente ejecutamos una gran granja de servidores de aplicaciones J2EE, con muchas aplicaciones en cada caja; sin embargo, cada una se ejecuta con su propia ID para dividir la propiedad, el acceso, los controles, etc.
Esto también significa que encontrar cualquier servidor de aplicaciones en un host es tan simple como:
ps <whichever ps args you like best> | grep java | grep <uid> | grep -v grep