usa tutorial que para elastic disponibilidad consultas comandos clusvcadm cluster alta java linux grep pid ps

tutorial - Encuentra el pid de un proceso java bajo Linux



para que se usa elastic search (3)

Hola, estoy usando la biblioteca MPJ en el programa Java para el algoritmo Pagerank. Lo compilo por

javac -cp .:$MPJ_HOME/lib/mpj.jar MpiPageRank.java

y dirigido por

mpjrun.sh -np 2 MpiPageRank

donde -np es el número de proceso

Ahora tengo que encontrar su pid

ps -ef|grep java

me gusta

mpjrun.sh -np 2 MpiPageRank & sleep 2 ps -ef | grep java

yo obtengo

pnewaska 27866 27837 99 21:28 pts/45 00:00:09 java -cp /u/pnewaska/mpj-v0_38/lib/smpdev.jar:/u/pnewaska/mpj-v0_38/lib/xdev.jar:/u/pnewaska/mpj-v0_38/lib/mpjbuf.jar:/u/pnewaska/mpj-v0_38/lib/loader2.jar:/u/pnewaska/mpj-v0_38/lib/starter.jar:/u/pnewaska/mpj-v0_38/lib/mpiExp.jar runtime.starter.MulticoreStarter /nfs/nfs1/home/pnewaska/DistributedSystems/Project3 10 smpdev useLocalLoader EMPTY MpiPageRank -i input.500k0 -n 10 -o

Ahora quiero extraer MpiPageRank de solo 1 linux comman para obtener su pid ie 27866 . Cómo puedo hacer eso ?


usando ps

ps permite al usuario definir su propio formato para su salida con el -o , y -C para seleccionar entradas mediante el comando dado. Yo iría con:

ps -C java -o pid

de la página man:

-C cmdlist      Select by command name This selects the processes whose executable name is given in cmdlist. -o format user-defined format. format is a single argument in the form of a blank-separated or comma-separated list, which offers a way to specify individual output columns. The recognized keywords are described in the STANDARD FORMAT SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o comm=Command) as desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be output. Column width will increase as needed for wide headers; this may be used to widen up columns such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control (ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality; output may be one column named "X,comm=Y" or two columns named "X" and "Y". Use multiple -o options when in doubt. Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and DefBSD are macros that may be used to choose the default UNIX or BSD columns.

Uno puede obtener resultados más precisos al especificar más restricciones (es decir, el usuario bajo el cual se ejecuta el proceso, etc.). Mire la página man para más información y otros switches.

ejemplo:

$ sleep 10 & [1] 12654 $ ps -C sleep -o pid 12654

usando el caparazón

No sé por qué usas un script .sh para ejecutar tu código y no llamas directamente a java , pero si en cualquier caso usas el operador & (fondo), puedes agarrar el pid través de tu caparazón, ¡con $! variable.

por ejemplo:

$ sleep 5 & [1] 12395 $ echo $! 12395

lo mismo ocurre con el java -jar .. & , $! se establecerá en el pid del último trabajo de fondo.


Puedes usar awk para obtener el pid:

ps -ef | grep MpiPageRank | awk ''{print $2}''

Noté que a veces grep se encuentra, para eliminarlo:

ps -ef | grep MpiPageRank | grep -v grep | awk ''{print $2}''


jps es lo mismo que ps excepto que solo mira los procesos java.

Si luego necesita el PID, puede hacer algo como lo siguiente:

jps | grep JAVA_NAME | awk ''{print $1}''

Eso corre jps, luego usa grep para filtrar por la aplicación java o jar que quieras matar. Después de eso, awk captura e imprime solo el pid en la consola.