Obtention de l'ID de processus pour le script perl actuel

11

Comment obtenir l'ID de processus pour le processus Perl qui exécute le script actuel? getppid () ne retourne pas le même pid que ps -ea | grep. Existe-t-il un moyen simple ou dois-je simplement exécuter la commande ps -ea dans mon script et supprimer les autres informations?

ageis23
la source
Devrait probablement être migré vers stackoverflow.com
Ian C.

Réponses:

13

Vous pouvez utiliser $$pour obtenir l'ID de processus de l'interpréteur perl exécutant votre script:

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

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

Dans un autre shell:

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

Pour en savoir plus sur les variables Perl spéciales:

perldoc perlvar

Ou consultez la version officielle en ligne de ces informations .

Ian C.
la source
2

En plus, $$comme Ian le mentionne, je suis un fan de rendre le code plus lisible.

À cette fin, Perl prend en charge le mnémonique $PIDsi vous use Englishactivez les alias.

Randall
la source