欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Perl中使用File::Lockfile確保腳本單實例運行

 更新時間:2014年11月24日 09:50:51   投稿:junjie  
這篇文章主要介紹了Perl中使用File::Lockfile確保腳本單實例運行的方法,本文直接給出實例,方法非常簡單,需要的朋友可以參考下

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

最簡單自然的想法,在腳本中檢查并創(chuàng)建一個空的lock文件,腳本結束時再刪除。通過判斷文件是否存在的方式來判斷腳本是否已經(jīng)運行。不過這樣做有個bug,如果腳本運行過程中異常終止,lock文件沒有正常刪除,就會導致腳本無法再運行。

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

下面是File::Lockfile的一個示例,非常簡單:

以下是代碼片段:

復制代碼 代碼如下:

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

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

小結:

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

另一個方法:給lock文件加排它鎖,判斷是否有鎖來確保唯一性。

相關文章

  • Perl List::Util模塊使用實例

    Perl List::Util模塊使用實例

    這篇文章主要介紹了Perl List::Util模塊使用實例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數(shù)字的最大值與最小值等實用功能代碼,需要的朋友可以參考下
    2015-06-06
  • Perl中chomp和chop的區(qū)別介紹

    Perl中chomp和chop的區(qū)別介紹

    chomp是用來刪除換行符,chop是用來刪除最后一個字符
    2013-02-02
  • Perl中的控制結構學習筆記

    Perl中的控制結構學習筆記

    這篇文章主要介紹了Perl中的控制結構學習筆記,本文講解了條件判斷、循環(huán)語句、單行條件等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • Perl集群配置管理系統(tǒng)Rex簡明手冊

    Perl集群配置管理系統(tǒng)Rex簡明手冊

    這篇文章主要介紹了Perl集群配置管理系統(tǒng)Rex簡明手冊,自動化運維的一個管理工具,需要的朋友可以參考下
    2014-06-06
  • Perl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享,學習perl的朋友可以參考下
    2013-02-02
  • Perl學習筆記之CPAN使用介紹

    Perl學習筆記之CPAN使用介紹

    這篇文章主要介紹了Perl學習筆記之CPAN使用介紹,本文講解了什么是CPAN、CPAN的目錄作用介紹、CPAN安裝Perl Module的兩種方法等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • perl實現(xiàn)blog備份的腳本代碼

    perl實現(xiàn)blog備份的腳本代碼

    用perl實現(xiàn)的備份sql的代碼,需要的朋友可以參考下
    2013-02-02
  • Perl中use和require用法對比分析

    Perl中use和require用法對比分析

    Perl 中的use和require,都是用來加載和引用Perl的模塊,或者是子程序,區(qū)別在于Perl use是在當前默認的里面去尋找,一旦模塊不在指定的區(qū)域內(nèi)的化,用Perl use是不可以引入的
    2013-02-02
  • perl處理json的序列化和反序列化

    perl處理json的序列化和反序列化

    perl可以使用JSON模塊很方便的處理json的序列化和反序列化,本文通過一個簡單例子給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • perl pop push shift unshift實例介紹

    perl pop push shift unshift實例介紹

    perl的pop跟push操作數(shù)組的最右邊,shift跟unshift操作數(shù)組的最左邊
    2013-02-02

最新評論