Cara membuat script Perl bekerja hanya di satu copy

Tugas

Hal ini kadang-kadang diperlukan untuk menulis script Perl yang berjalan hanya jika hal yang sama script ini tidak bekerja. I. e., untuk menjamin bahwa pada satu titik waktu hanya satu contoh dari script ini.

Misalnya, masalah ini dapat terjadi jika script dijalankan untuk mahkota setiap menit dan kadang-kadang hal ini dapat menjalankan lebih dari satu menit.

Di sini kita berbicara tentang kasus ketika script ini bekerja pada satu server dan anda ingin memastikan eksekusi tidak lebih dari satu contoh dari script pada mesin yang sama.

Keputusan

Cara termudah untuk mengatasi masalah ini adalah dengan menggunakan Perl perpustakaan Sys::RunAlone.

Perpustakaan dilengkapi dengan Perl, itu harus diinstal selain itu.

Untuk membuat script yang hanya bekerja dalam satu contoh, anda perlu menambahkan dalam naskah yang ada use Sys::RunAlone; dan __END__.

Berikut ini adalah contoh script yang hanya bekerja dalam satu contoh:

#!/usr/bin/perl

use Sys::RunAlone;

print "working\n";

sleep 10;

__END__

Jika anda menjalankan script ini, ini akan menampilkan teks working dan 10 detik untuk menggantung dan menunggu, dan kemudian keluar.

Jika anda membuka konsol lain dan sementara skrip yang berjalan untuk mencoba untuk menjalankannya satu lebih banyak waktu lari ini akan gagal, dan tidak ada code dari skrip yang tidak akan dieksekusi:

$ perl script.pl
A copy of 'script.pl' is already running

Unit __END__ dalam script adalah wajib. Perpustakaan Sys::RunAlone menggunakan ini unit dalam rangka untuk mengambil Locke. Dan jika blok ini tidak, dan perpustakaan Sys::RunAloneterhubung script tidak akan bekerja, layar akan menampilkan kesalahan Add __END__ to end of script 'script.pl' to be able use the features of Sys::RunALone.

Artikel lainnya