Obtener la identificación del proceso para el script perl actual

11

¿Cómo obtengo la identificación del proceso para el proceso perl que ejecuta el script actual? getppid () no devuelve el mismo pid que ps -ea | grep. ¿Hay una manera fácil o simplemente ejecuto el comando ps -ea dentro de mi script y recorto las otras piezas de información?

ageis23
fuente
Probablemente debería migrarse a stackoverflow.com
Ian C.

Respuestas:

13

Puede usar $$para obtener el ID de proceso del intérprete perl que ejecuta su script:

iancs-imac:Documents ian$ cat test.pl 
print "$$\n";
sleep(10000);
exit()

ians-imac:Documents ian$ perl test.pl 
42291

En otro caparazón:

iancs-imac:~ ian$ sudo ps -ef | grep perl
  501 42291 42281   0   0:00.00 ttys000    0:00.01 perl test.pl
  501 42297 42280   0   0:00.00 ttys001    0:00.00 grep perl

Para obtener más información sobre las variables especiales de Perl:

perldoc perlvar

O vea la versión oficial en línea de esa información .

Ian C.
fuente
2

Además de lo $$que Ian menciona, soy fanático de hacer que el código sea más legible.

Para ese fin, Perl admite el mnemónico $PIDsi use Englishhabilita los alias.

Randall
fuente