婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行

Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行

熱門(mén)標(biāo)簽:河南虛擬外呼系統(tǒng)公司 熱門(mén)電銷(xiāo)機(jī)器人 上海企業(yè)外呼系統(tǒng) 電話(huà)機(jī)器人哪里有賣(mài) 萬(wàn)利達(dá)百貨商場(chǎng)地圖標(biāo)注 外呼電信系統(tǒng) 智能機(jī)器人電銷(xiāo)神器 惠州龍門(mén)400電話(huà)要怎么申請(qǐng) okcc外呼系統(tǒng)怎么調(diào)速度

用Perl寫(xiě)了一些監(jiān)控腳本,放在crontab中調(diào)度執(zhí)行。有時(shí)候會(huì)發(fā)現(xiàn)一個(gè)腳本運(yùn)行時(shí)間過(guò)長(zhǎng),會(huì)同時(shí)跑起多個(gè)實(shí)例,因此有必要為腳本加上控制,只運(yùn)行一個(gè)實(shí)例。

最簡(jiǎn)單自然的想法,在腳本中檢查并創(chuàng)建一個(gè)空的lock文件,腳本結(jié)束時(shí)再刪除。通過(guò)判斷文件是否存在的方式來(lái)判斷腳本是否已經(jīng)運(yùn)行。不過(guò)這樣做有個(gè)bug,如果腳本運(yùn)行過(guò)程中異常終止,lock文件沒(méi)有正常刪除,就會(huì)導(dǎo)致腳本無(wú)法再運(yùn)行。

空的lock文件不行,那么考慮在lock文件中加入一點(diǎn)內(nèi)容,比如進(jìn)程的PID號(hào),然后通過(guò)檢查該P(yáng)ID號(hào)的進(jìn)程是否還在運(yùn)行,就能避免上述bug了。在CPAN上有很多現(xiàn)成的模塊能夠完成上述功能,如File::Lockfile, File::Pid, Proc::PID::File 等。

下面是File::Lockfile的一個(gè)示例,非常簡(jiǎn)單:

以下是代碼片段:

復(fù)制代碼 代碼如下:

#!/usr/bin/perl -w
useFile::Lockfile;
# lock文件位于/tmp目錄,名為test_file_lock.lck
my $lockfile= File::Lockfile->new('test_file_lock','/tmp');
# 檢查腳本是否已經(jīng)運(yùn)行,如已運(yùn)行則退出
if ( my $pid= $lockfile->check ) {
  print"program is already running with PID: $pid";
  exit;
}
#更新lock文件
$lockfile->write;
# 腳本邏輯
sleep30
#刪除lock文件
$lockfile->remove;

通過(guò)查看File/Lockfile.pm的源代碼可以看到,判斷l(xiāng)ock文件中記錄的進(jìn)程是否已經(jīng)運(yùn)行,簡(jiǎn)單的通過(guò) kill -0 $pid 即可實(shí)現(xiàn)。所以即使不用上述模塊,自己實(shí)現(xiàn)也是非常容易的。

小結(jié):

該方法是在腳本中經(jīng)常用到限制單實(shí)例的方法,MySQL 等程序在每次啟動(dòng)前也會(huì)檢查上次遺留的 mysql.pid 文件。

另一個(gè)方法:給lock文件加排它鎖,判斷是否有鎖來(lái)確保唯一性。

標(biāo)簽:周口 綿陽(yáng) 淮安 綏化 周口 合肥 秦皇島 百色

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行》,本文關(guān)鍵詞  Perl,中,使用,File,Lockfile,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 井陉县| 石楼县| 永川市| 阿拉善盟| 鹤庆县| 罗源县| 荆州市| 神池县| 利辛县| 喜德县| 福海县| 崇文区| 陕西省| 商都县| 广德县| 彭阳县| 宜良县| 孝义市| 高要市| 类乌齐县| 色达县| 会东县| 汉寿县| 吉林省| 桂东县| 永泰县| 太仆寺旗| 拜城县| 资兴市| 高密市| 拉萨市| 苏尼特左旗| 青海省| 仪征市| 松江区| 通山县| 如皋市| 即墨市| 石首市| 兴城市| 同江市|