Uzyskiwanie identyfikatora procesu dla bieżącego skryptu perl

11

Jak uzyskać identyfikator procesu dla procesu perla, który uruchamia bieżący skrypt? getppid () nie zwraca tego samego pid jak ps -ea | grep Czy istnieje prosty sposób, czy po prostu uruchamiam polecenie ps -ea w skrypcie i usuwam pozostałe informacje?

ageis23
źródło
Prawdopodobnie powinien zostać przeniesiony na stackoverflow.com
Ian C.

Odpowiedzi:

13

Możesz użyć, $$aby uzyskać identyfikator procesu interpretera perla uruchamiającego skrypt:

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

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

W innej powłoce:

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

Aby dowiedzieć się więcej o specjalnych zmiennych Perla:

perldoc perlvar

Lub zobacz oficjalną wersję online tych informacji .

Ian C.
źródło
2

Poza tym, $$jak wspomina Ian, jestem fanem zwiększania czytelności kodu.

W tym celu Perl obsługuje mnemonik, $PIDjeśli chcesz use Englishwłączyć aliasy.

Randall
źródło