Foros del Web » Programación para mayores de 30 ;) » Programación General »

conseguir el id de un proceso

Estas en el tema de conseguir el id de un proceso en el foro de Programación General en Foros del Web. Hola , buenas tardes: A ver si alguien puede darme una idea. Yo hago esto: 1) ps -ef | grep /opt/netcool/omnibus/probes/solaris2/nco_p_syslog | grep root Y ...
  #1 (permalink)  
Antiguo 22/09/2008, 06:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 0
conseguir el id de un proceso

Hola , buenas tardes:
A ver si alguien puede darme una idea. Yo hago esto:

1) ps -ef | grep /opt/netcool/omnibus/probes/solaris2/nco_p_syslog | grep root

Y obtengo:

root 15680 25532 0 Sep 17 ? 1419:37 /opt/netcool/omnibus/probes/solaris2/nco_p_syslog



Pues bien de esto ultimo quiero obtener el id de este proceso es decir el numero 15680.


Habia pensado en guardar el resultado root 15680 25532 0 Sep 17 ? 1419:37 /opt/netcool/omnibus/probes/solaris2/nco_p_syslog
en un fichero y dividirlo en campos . Pero no se como hacerlo ya que hay espacios en blanco y no se como se puede dividir.
No sé si habra alguna forma más sencillo de hacerlo.

Si me pudieran ayudar se lo agradeceria.
Gracias un saludo.
  #2 (permalink)  
Antiguo 27/10/2008, 19:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: conseguir el id de un proceso

Cita:
Iniciado por Raul21 Ver Mensaje
Hola , buenas tardes:
A ver si alguien puede darme una idea. Yo hago esto:

1) ps -ef | grep /opt/netcool/omnibus/probes/solaris2/nco_p_syslog | grep root

Y obtengo:

root 15680 25532 0 Sep 17 ? 1419:37 /opt/netcool/omnibus/probes/solaris2/nco_p_syslog

Pues bien de esto ultimo quiero obtener el id de este proceso es decir el numero 15680.
Hola,

No me queda claro si estás buscando una solución en Perl, o en sh y con utilidades Unix. En cualquier caso, si estuvieras haciendo tu procesamiento en Perl, podrías separar esa línea de texto con la función split(), la cual devuelve un arreglo, y de allí tomas el campo que quieras. Por ejemplo:

Código perl:
Ver original
  1. my $linea = `ps -ef | grep /opt/netcool/omnibus/probes/solaris2/nco_p_syslog | grep root`;
  2.  
  3. my @campos = split /\s+/, $linea;
  4.  
  5. my $id_proceso = $campos[1];
  6.  
  7. print "El ID del proceso es $id_proceso\n";

Si lo quisieras hacer en el Shell de Unix, puedes usar awk para separar esa línea en campos también, y obtener el campo específico que quieras. Por ejemplo:

Código:
ps -ef | grep /opt/netcool/omnibus/probes/solaris2/nco_p_syslog | grep root | awk { print $2 }
Si estás interesado en usar herramientas del shell para este tipo de tareas, te recomiendo bastante que busques en Internet material que hable sobre sed y awk y aprendas a usarlos aunque sea en un nivel muy básico. Son herramientas tremendamente útiles :).
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.