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?

link|improve this question

50% accept rate
Should probably be migrated to stackoverflow.com – Ian C. Oct 17 '10 at 23:43
feedback

1 Answer

up vote 2 down vote accepted

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.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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