2012-05-24 12 views
8

si ejecuto un script bash como un niño, puedo pasar su propio pid al padre utilizando $$.¿hay alguna forma de conocer el pid de un programa lanzado?

¿Hay alguna manera de encontrar el PID de un programa que pongo en marcha a partir de una secuencia de comandos en segundo plano como:

ping x.x.x.x & 

¿cuál es el pid de que el ping?

(Sólo espero expresé mi auto correctamente ... mi Inglés no es el mejor)

PS. Estoy buscando una solución simple y limpio, me puedo imaginar algo como:

ping -t10000 -W10 x.x.x.x & 
then 
ps ax | grep 'ping -t10000 -W10 x.x.x.x'$ 

pero es demasiado complicado, aunque también que he utilizado para personalizar los interruptores no está limpio, puede coger otro procesos en el sistema

+0

'pgrep', si está disponible, es mejor que' grep'ping 'ps'. –

Respuesta

17

La variable $! tiene el PID del último proceso en segundo plano que inició.

+0

¡GRACIAS! esto lo soluciono ... y (sonrojado) no sé cómo me perdí ese – THESorcerer

+1

@THESorcerer: No olvide marcar una respuesta como aceptada. –

6

Use esto: $! justo después de ejecutar el comando cuyo PID desea. Sin embargo, significa que debe usar un símbolo comercial (&) después del comando, para iniciarlo en segundo plano. Por ejemplo:

my_command & CMDPID=$! 
echo "$CMDPID" 
Cuestiones relacionadas