10

How do I get the process id for the perl process that's running the current script? getppid() doesn't return the same pid as ps -ea| grep . Is there is an easy way or do I just run the ps -ea command within my script and trim off the other pieces of info?

  • Should probably be migrated to stackoverflow.com – Ian C. Oct 17 '10 at 23:43
11

You can use $$ to get the process ID of the perl interpreter running your script:

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

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

In another 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

To learn more about about special Perl variables:

perldoc perlvar

Or see the official online version of that information.

1

In addition to $$ as Ian mentions, I'm a fan of making code more readable.

To that end, Perl supports the mnemonic $PID if you use English to enable the aliases.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.