Abrufen der Prozess-ID für das aktuelle Perl-Skript

11

Wie erhalte ich die Prozess-ID für den Perl-Prozess, auf dem das aktuelle Skript ausgeführt wird? getppid () gibt nicht die gleiche PID zurück wie ps -ea | grep. Gibt es eine einfache Möglichkeit oder führe ich einfach den Befehl ps -ea in meinem Skript aus und schneide die anderen Informationen ab?

ageis23
quelle
Sollte wahrscheinlich auf stackoverflow.com migriert werden
Ian C.

Antworten:

12

Sie können verwenden $$, um die Prozess-ID des Perl-Interpreters abzurufen, der Ihr Skript ausführt:

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

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

In einer anderen 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

So erfahren Sie mehr über spezielle Perl-Variablen:

perldoc perlvar

Oder sehen Sie sich die offizielle Online-Version dieser Informationen an .

Ian C.
quelle
2

Zusätzlich dazu, $$wie Ian erwähnt, bin ich ein Fan davon, Code lesbarer zu machen.

Zu diesem Zweck unterstützt Perl die Mnemonik, $PIDwenn Sie use Englishdie Aliase aktivieren möchten.

Randall
quelle