Linux Shell的锁:flock

Linux Shell的锁:flock

在写分布式系统的时候,需要同步进程之间的调用顺序。我的需求是,多个进程同时要在一个maven工程中编译打包接口。通过new一个Process去跑一个Shell脚本,Shell脚本会将接口源代码拷贝到Maven工程,运行打包命令并将打包好的Jar包移动到对应进程的Classpath下。

当然也可以通过为每个进程拷贝一份maven打包工程,来绕过这个同步问题。这个不在讨论范围内。

Flock

flock有几种使用方式,有兴趣的可以自己取查一下。我这里需要在脚本里运行命令,例子:

#!/bin/bash
{
flock -w 10 200
[ $? -eq 1 ] && { echo fail; exit; }
echo "lock it and wait"
sleep 10
} 200<>.lock

例子很简单,-w 10意思是超时时间为10秒,200为文件描述符。

Reference

http://linux.die.net/man/1/flock

时间: 2024-10-03 05:30:05

Linux Shell的锁:flock的相关文章

思维导图学 Linux Shell攻略之干货篇 mysql数据库脚本管理系统

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1610653 以结果为导向的学习,才是最有效率学习.笔者以前也曾经隔三差五的学习linux shell编程来着.给我的感觉就是,今天学了,后天忘了,一星期之后就白学了. 还好,最近自己平时没啥事,一直照着<linux shell攻略>,学做一些小例子,看着自己写的shell程序,简单的几行程序,实现一些好玩的效果,信心

linux shell rman备份文件的脚本

rman备份脚本 #! /bin/bash su - oracle <<! rman target /<<EOF backup AS COMPRESSED BACKUPSET database include current controlfile format'/orabak/db_%d_%T_%s' plus archivelog format'/orabak/arch_%d_%T_%s' delete allinput; delete noprompt obsolete; e

linux shell编程中date命令的用法

在linux shell编程中,经常用到日期的加减运算 以前都是自己通过expr函数计算,很麻烦 其实date命令本身提供了日期的加减运算 非常方便.例如:得到昨天的时间 date +%Y%m%d --date="-1 day" date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] date 可以用来显示或设定系统的日期与时间. 令1.在显示方面,使用者可以设定欲显

Linux Shell 编程实战技巧

避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇到以下几个问题. 路径问题:当前目录往往不是脚本文件所在目录.因此,脚本在引用其使用的外部文件,如配置文件和其它脚本文件时,无法方便得使用相对路径. 命令找不到问题:脚本中使用到的一些外部命令,在手工执行脚本的时候可以正常调用.但是在定时任务下运行则可能出现脚本解析器找不到相关命令的问题. 脚本重复运行问题

在Linux Shell下将汉字转换为Url编码

在linux 的shell环境下有一个od命令可以将文件按不同的进制的ascii码输 出,该功能可以完成在linux shell下将汉字转换为url编码的任务. url编码是十六进制的形如%E6%9C%8D%E5%8A%A1%E5的字符串,test是包含 "数据库网络,"这几个字符的文件,以下命令输出: #od -t x /test 0000000 ddbefdca f8cde2bf 0a2ce7c2 0000014 该字符串对应的url编码为 %CA%FD%BE%DD%BF%E2%C

Linux shell编程基础 三、shell的基本结构

shell结构大体是由设定变量.内置命令.shell的语法结构.函数组成. 使用实例说明:test.sh #!/bin/bash #说明使用/bin/bash作为这个脚本的解释器 #定义一个函数 function my_fun () { echo "Hello, $1,today is $2" } #定义连个变量 name=$1 today=`date` #函数调用 my_fun "$name" "$today" 上面的这个脚本要想运行还需要做一

一些Linux Shell中的权限相关知识总结

  这篇文章主要介绍了一些Linux Shell中的权限相关知识总结,使Linux入门学习中的基础知识,需要的朋友可以参考下 一个文件一经创建,就具有三种访问方式: 1) 读,可以显示该文件的内容. 2) 写,可以编辑或删除它. 3) 执行,如果该文件是一个s h e l l脚本或程序. 按照所针对的用户,文件的权限可分为三类: 1) 文件属主,创建该文件的用户. 2) 同组用户,拥有该文件的用户组中的任何用户. 3) 其他用户,即不属于拥有该文件的用户组的某一用户 文件的全部信息包括以下: 文

Linux Shell 通配符、元字符、转义符使用实例介绍

  下面是一个实例: 代码如下: [chengmo@localhost ~/shell]$ ls a.txt b.txt c.old #2 [chengmo@localhost ~/shell]$ ls *.txt a.txt b.txt #3 [chengmo@localhost ~/shell]$ ls d*.txt ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢.我们先了解一下,通配符相关知识,再分析下这个实例吧. 一.linux shel

Linux shell脚本基础学习详细介绍(完整版)

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Linux 脚本编写基础 ◆1.1 语法基本介绍1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可