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?


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 .


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.