कैसे बनाने के लिए Perl स्क्रिप्ट काम केवल एक कॉपी में

कार्य

यह कभी कभी आवश्यक है लिखने के लिए एक Perl स्क्रिप्ट चलाता है कि केवल यदि यह एक ही स्क्रिप्ट काम नहीं कर रहा है. I. ई., करने के लिए गारंटी है कि समय के एक बिंदु पर केवल एक उदाहरण के लिए इस स्क्रिप्ट.

उदाहरण के लिए, यह समस्या तब हो सकती है यदि स्क्रिप्ट को चलाने के लिए ताज हर मिनट और कभी कभी यह कर सकते हैं चलाने के लिए एक मिनट से अधिक.

यहाँ हम बात कर रहे हैं के बारे में जब मामले की स्क्रिप्ट पर काम करता है एक सर्वर और आप चाहते हैं यह सुनिश्चित करने के लिए निष्पादन से अधिक नहीं है एक उदाहरण स्क्रिप्ट की एक ही मशीन पर.

निर्णय

सबसे आसान तरीका है इस समस्या को हल करने के लिए है का उपयोग करें Perl पुस्तकालय Sys::RunAlone.

पुस्तकालय के साथ आता है पर्ल, की जरूरत है इसे स्थापित करने के लिए अतिरिक्त.

बनाने के लिए एक स्क्रिप्ट है कि केवल काम करता है एक उदाहरण में, आप की जरूरत है जोड़ने के लिए में मौजूदा स्क्रिप्ट use Sys::RunAlone; और __END__.

यहाँ का एक उदाहरण है एक स्क्रिप्ट काम करता है कि केवल एक उदाहरण में:

#!/usr/bin/perl

use Sys::RunAlone;

print "working\n";

sleep 10;

__END__

यदि आप इस स्क्रिप्ट को चलाने के लिए, यह प्रदर्शित करता है पाठ working और 10 सेकंड के लिए रुको और प्रतीक्षा करें, और फिर से बाहर निकालता है ।

यदि आप कंसोल और स्क्रिप्ट चल रहा है की कोशिश करने के लिए इसे चलाने के लिए एक बार इस चलाने के लिए विफल हो जाएगा, और कोई कोड से स्क्रिप्ट निष्पादित नहीं किया जाएगा:

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

इकाई __END__ में स्क्रिप्ट अनिवार्य है । पुस्तकालय Sys::RunAlone का उपयोग करता है इस इकाई लेने के लिए आदेश में लोके. और अगर यह ब्लॉक नहीं है, और पुस्तकालय Sys::RunAloneजुड़ा हुआ है स्क्रिप्ट काम नहीं करेगा, स्क्रीन प्रदर्शित करेगा त्रुटि Add __END__ to end of script 'script.pl' to be able use the features of Sys::RunALone.

अन्य लेख