Mendapatkan id proses untuk skrip perl saat ini

11

Bagaimana cara mendapatkan id proses untuk proses perl yang menjalankan skrip saat ini? getppid () tidak mengembalikan pid yang sama dengan ps -ea | grep. Apakah ada cara mudah atau apakah saya hanya menjalankan perintah ps -ea dalam skrip saya dan memotong info lainnya?

umur23
sumber
Mungkin harus dimigrasikan ke stackoverflow.com
Ian C.

Jawaban:

13

Anda dapat menggunakan $$untuk mendapatkan ID proses penerjemah perl yang menjalankan skrip Anda:

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

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

Di shell lain:

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

Untuk mempelajari lebih lanjut tentang variabel Perl khusus:

perldoc perlvar

Atau lihat versi online resmi dari informasi itu .

Ian C.
sumber
2

Selain $$sebagai Ian menyebutkan, aku penggemar membuat kode lebih mudah dibaca.

Untuk itu, Perl mendukung mnemonik $PIDjika Anda use Englishmengaktifkan alias.

Randall
sumber