- 浏览: 79655 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (98)
- Linux (6)
- vsftpd vsftp ftp (2)
- perl flock (1)
- ajax (1)
- highcharts (1)
- http://www.bejson.com/knownjson/webInterface/ (1)
- mysql (1)
- iOS研究框架之SDwebimage原理 (1)
- oepn ssl (1)
- mysql插入时间戳列 (1)
- mysql pool (1)
- gsoap (1)
- VS (1)
- angular http jsonp (1)
- NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL (1)
- http://www.cnblogs.com/madyina/p/5970814.html (1)
- 批量生成各尺寸的iOS图标 (1)
- Ionic2 Rest 认证 (1)
- 反编译工具 IDA (1)
- formbuilder (1)
- asp.net com 80040154 Class not registered (1)
- angular2-highcharts用法详解 (1)
- 儿童教育资源 (1)
- Accordion List with Ionic (1)
- 清华附小权威老师推荐详细书单 (0)
- android (1)
- Hexadecimal -> file (binary) (1)
- open ssl (1)
- swift apple (1)
- 常见网址 (0)
- Charles4.2.5 (1)
- swift link (1)
- 域名 空间申请 (0)
- 常见网址 免费主机 (1)
- 最详细的美国旅游签证办理流程 (1)
- 公司办理美国签证流程 (0)
- link (1)
- 楼市 (0)
- inatall uml (1)
- 信用卡 (0)
- net use 共享 删除 (1)
- perl ftp (1)
- cron (1)
- 2018 self evauation (0)
- upload by ftp linux script (1)
- 青少年学习 (1)
- Shell脚本交互之:自动输入密码 (1)
- 通过ffmpeg实现视频流截图 (1)
- Discuz论坛迁移--数据库配置文件 (1)
- ELK(ElasticSearch (1)
- Logstash (1)
- Kibana)搭建实时日志分析平台 (1)
- 阿里面试题目目录 (1)
- network-attached storage (NAS) (1)
- jar (1)
- PostgreSQL操作-psql基本命令 (0)
- PostGreSQL (1)
- 百度网盘资源搜索 (1)
- git command (1)
- log4perl MinGW Dev C++ (1)
- perl 自定义模块 (1)
- 使用virt-manager安装和管理虚拟机 (1)
- ActivePerl5.14 (1)
- servicenter (1)
- 民国货币 (0)
- 物价变迁 (0)
- 历年养老金涨幅 (1)
- 1987年北京物价 (1)
- 金融业总资产 (1)
- 中国通史 (0)
- How to change @INC to find Perl modules in non-standard locations (1)
- ruby on rails (1)
- win10 ruby (1)
- Sybase isql常用命令 (1)
- php开发环境搭建 (1)
- check_Radius_Account.php (1)
- SymmetricDS (1)
- Kotlin Eclipse 环境搭建 (1)
- 基于SpringBoot搭建应用开发框架 基于SpringBoot-Dubbo的微服务快速开发框架 (1)
- 架构师技术图谱,助你早日成为架构师 (1)
- Java并发编程:volatile关键字解析 (1)
- MySQL 表锁和行锁机制 (1)
- IntelliJ IDEA 2018激活码 永久破解 (0)
- 基于 Javassist 和 Javaagent 实现动态切面 (1)
- JAVA必背面试题和项目面试通关要点(带答案) (1)
- Hadoop分布式集群的搭建 (1)
- navicat112_premium (0)
- snmp trap (1)
- net snmp linux (1)
- net snmp trap (1)
- install wmi in linux (1)
- vidyard (0)
- compare file content (1)
- XINETD TCP echo service (1)
- 从页面获取form表单提交的数据 (1)
- thymeleaf 分页 级联 (1)
- Apache log4j2 远程命令执行漏洞复现及修复方案 (1)
- win7 瘦身 (0)
最新评论
用Perl写了一些监控脚本,放在crontab中调度执行。有时候会发觉一个脚本运行时间过长,会同时跑起多个实例,因此有必要为脚本加上控制,只运行一个实例运行。
最基本自然的想法,在脚本中检查并建立一个空的lock文件,脚本结束时再删除。通过判断文件能不能存在的形式来判断脚本能不能已经运行。不过这样做有个bug,如果脚本运行流程中异常终止,lock文件没有正常删除,就会导致脚本不能再运行。
空的lock文件不可以,那么考虑在lock文件中加入一点内容,比如进程的PID号,然后通过检查该PID号的进程能不能还在运行,就能防止上述bug了。在CPAN上有很多现成的模块能够完成上述功能,如File::Lockfile, File::Pid, Proc::PID::File 等。
下面是File::Lockfile的一个示例,非常基本:
#!/usr/bin/perl -w
use File::Lockfile;
# lock文件位于/tmp目录,名为test_file_lock.lck
my $lockfile = File::Lockfile->new('test_file_lock','/tmp');
# 检查脚本能不能
已经运行,如已运行则退出
if ( my $pid = $lockfile->check ) {
print "program is already running with PID: $pid";
exit;
}
#更新lock文件
$lockfile->write;
# 脚本逻辑
sleep 30
#删除lock文件
$lockfile->remove;
通过查看File/Lockfile.pm的源代码可以看到,判断lock文件中记录的进程能不能已经运行,基本的通过kill 0,$pid即可实现。所以即使不用上述模块,自己实现也是非常容易的。
最基本自然的想法,在脚本中检查并建立一个空的lock文件,脚本结束时再删除。通过判断文件能不能存在的形式来判断脚本能不能已经运行。不过这样做有个bug,如果脚本运行流程中异常终止,lock文件没有正常删除,就会导致脚本不能再运行。
空的lock文件不可以,那么考虑在lock文件中加入一点内容,比如进程的PID号,然后通过检查该PID号的进程能不能还在运行,就能防止上述bug了。在CPAN上有很多现成的模块能够完成上述功能,如File::Lockfile, File::Pid, Proc::PID::File 等。
下面是File::Lockfile的一个示例,非常基本:
#!/usr/bin/perl -w
use File::Lockfile;
# lock文件位于/tmp目录,名为test_file_lock.lck
my $lockfile = File::Lockfile->new('test_file_lock','/tmp');
# 检查脚本能不能
已经运行,如已运行则退出
if ( my $pid = $lockfile->check ) {
print "program is already running with PID: $pid";
exit;
}
#更新lock文件
$lockfile->write;
# 脚本逻辑
sleep 30
#删除lock文件
$lockfile->remove;
通过查看File/Lockfile.pm的源代码可以看到,判断lock文件中记录的进程能不能已经运行,基本的通过kill 0,$pid即可实现。所以即使不用上述模块,自己实现也是非常容易的。
发表评论
-
linux upload script
2018-12-06 17:06 460#!/bin/sh find /root/rmsdata/E ... -
cron
2018-11-27 11:26 317crontab -e SHELL=/bin/bash */ ... -
shell脚本判断进程是否存在并重启
2016-04-07 11:00 2029#!/bin/bash # cd /opt/rms/mobi ... -
linux yum安装
2012-07-18 10:35 797yum的安装是比较简单的,不过设置yum的升级资源库稍微麻烦点 ... -
Red Hat Enterprise Linux 5安装gcc
2012-07-06 16:29 2737本文全是如何用rpm包在红帽子5上安装gcc,auto ...
相关推荐
这是一个运行Perl脚本的基础,因为它可以解析和执行Perl代码。 2. 引入Perl COM对象:VB可以利用Perl的COM(Component Object Model)支持来创建一个Perl解释器对象,通过这个对象,VB可以直接调用Perl脚本。在VB中...
因此,对于需要多次执行Perl脚本的情况,建议使用单例模式维护一个全局的Perl解释器实例。 总的来说,JERL为Java开发者提供了一种集成Perl脚本的强大方式,使得Java应用能够利用Perl的灵活性和文本处理能力,同时...
接下来,我们将展示一个示例C程序,该程序可以用来调用一个Perl脚本并传递参数给它。 ```c #include #include <perl.h> int main() { // 定义Perl解释器指针 static PerlInterpreter *my_perl; // 为解释器...
数组索引从0开始,`$array[0]`获取第一个元素。 3. **文件I/O**:Perl提供了打开、关闭、读取和写入文件的简便方法。`open`函数用于打开文件,`<FILEHANDLE>`用于读取,`>FILEHANDLE`用于写入。`close`函数用于关闭...
2. `test.pl`: 这是一个Perl脚本,很可能是用来演示如何调用系统命令和处理输出的实例。 在实际应用中,Perl脚本可能与Java或其他编程语言结合使用,例如,Java程序可以启动和控制Perl脚本,而Perl脚本则处理特定的...
总的来说,"基于Java的实例源码-在Java中运行Perl脚本 JERL.zip"是一个关于如何在Java环境中执行Perl脚本的实践教程。通过学习和使用这个库,开发者能够扩展Java应用程序的功能,利用Perl的强大力量,特别是对于那些...
perl编程实例,与书配套的实例代码 $name="Suzanne"; # These variables are in package main $num=100; package friend; # Package declaration sub welcome { print "Who is your pal? "; chomp($name=); ...
"perl脚本学习范例"这个主题提供了深入理解Perl编程语言的机会,通过具体的实例来探索其语法和特性。 首先,Perl的语法基础是必须掌握的。Perl支持多种数据类型,包括标量(数字或字符串)、数组(一系列有序元素)...
在Java环境中运行Perl脚本可能对开发者来说是一个挑战,因为Java和Perl是两种不同的编程语言,它们有自己的执行环境。然而,有一些工具和库可以帮助我们实现这个目标。JERL(Java-Embedded Ruby and Perl Library)...
"基于Java的在Java中运行Perl脚本 JERL.zip" 提供了一个解决方案,它是一个名为JERL(Java-Embedded Ruby and Perl Library)的库,允许Java应用程序直接执行Perl脚本。 JERL是Java和Perl之间的桥梁,使得Java...
"高级Perl编程脚本实例 TXT版"是一本深入探讨Perl高级特性和技术的书籍,它旨在帮助经验丰富的Perl程序员提升技能,理解并掌握更复杂的编程概念。这本书的PDF电子版可能包含了关于以下主题的详细讨论: 1. **Tie**...
"java源码:在Java中运行Perl脚本 JERL.zip" 提供了一个解决方案,它允许Java应用程序直接执行Perl脚本,这在处理特定文本操作或利用Perl的某些高级功能时非常有用。 JERL,全称Java-Embedded Ruby and Perl ...
Perl 脚本在功能上类似于UNIX awk、sed、shell 脚本和C 程序。shell 脚本主要由UNIX 命令构成,Perl 脚本则不然。sed 和awk 用于编辑和报告文件,但是Perl 无需执行文件即可工作。C 没有shell、sed 和awk 的任何模式...
在这种情况下,JERL(Java-Embedded Ruby and Perl Library)提供了一个解决方案,它允许Java应用程序直接执行Perl脚本,而无需依赖外部进程。 JERL是一个开源库,旨在为Java开发者提供一个方便的接口,以便在Java...
"perl脚本语言权威教程合集(两本中文版)"提供了全面的学习资源,帮助初学者和进阶者掌握Perl的核心概念和高级技巧。 首先,"Perl编程24学时教程"可能是一本按照时间线设计的教程,涵盖了Perl的基础语法,如变量、...
同时,调试过程也是学习的一部分,了解代码在不同操作系统下的运行情况有助于培养跨平台开发的经验。 总的来说,"Perl实例精解"的源码集合是一份宝贵的教育资源,它为读者提供了动手实践的机会,帮助他们在理论与...
在这个"perl脚本实例,处理文本,文件,可供学习参考"的压缩包中,包含了五个Perl脚本,它们分别是getvirus2.pl、getVirus.pl、gapcount.pl、fa_name_leng.pl和batch_in_out_direct.pl。这些脚本旨在帮助初学者理解...
当Java程序使用JERL时,会创建一个Perl虚拟机实例,并通过JNI接口执行Perl脚本,将结果返回给Java环境。 **使用JERL的步骤** 1. **添加依赖**:首先,你需要将JERL的库文件(jar和相应的本地库,如dll或so文件)...
总的来说,Perl脚本实例提供了一个实践和学习Perl语言的宝贵资源。通过深入研究和实践,你可以掌握这个强大的工具,提升你的编程技能,无论是在日常任务自动化还是复杂的系统集成中都能游刃有余。
核心交联脚本是用于处理材料科学数据的一种高级工具,主要涉及Perl编程语言和Materials Studio...同时,对于Perl程序员和Materials Studio的高级用户,源码可以作为一个学习和参考的实例,以便进一步定制和扩展其功能。