在做计划任务的时候,可能由于某些问题,任务没有执行完成,导致任务重复的运行,解决这个问题,只需要一个flock命令就可以了。

flock --help
flock (util-linux-ng 2.17.2)
Usage: flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...
flock [-sxon][-w #] directory [-c] command...
-s --shared Get a shared lock #获得一个共享锁
-x --exclusive Get an exclusive lock #获得一个独占锁,这是默认的
-u --unlock Remove a lock #删除一个锁,通常是不需要的,因为在文件关闭时锁会自动删除
-n --nonblock Fail rather than wait #如果没有立即获得锁,直接失败而不是等待
-w --timeout Wait for a limited amount of time #如果没有立即获得锁,等待指定时间
-o --close Close file descriptor before running command #在执行命令之前关闭保持锁的文件描述符
-c --command Run a single command string through the shell #在shell中运行一个单独的命令
-h --help Display this text #显示帮助
-V --version Display version #显示版本

例:

我要用rsync计划任务做同步,写了一个日志切割脚本logsplit.sh,设置了30分钟同步一次服务端,但是可能由于其他某些因素导致,30分钟内没有同步完成,后台还会继续执行此计划任务,此时就能看到两个rsync同步同时在跑,这时候我们就需要flock命令来解决问题了。

原来我的计划任务:

*/30 * * * * /www/logspli.sh

使用flock后的计划任务:

*/30 * * * * flock -xn /tmp/demo.lock -c /www/logspli.sh

这样的话,当前计划任务whsir.sh如果没有运行完,下一个任务会判断demo.lock被锁定,直接失败,等待下次在判断。

用flock命令解决Linux计划任务重复执行的更多相关文章

  1. 用ethtool 命令解决Linux 网卡丢包【转】

    转自:https://blog.csdn.net/chengxuyuanyonghu/article/details/73739516 生产中有一台Linux设备并发比较大,droped包比较多,尤其 ...

  2. du命令解决linux磁盘空间满的问题(很不错的哦)

    首先你要确定是不是真正的是因为数据空间占满磁盘,经常是因为某个程序的日志占满了空间.当发现磁盘满了以后不要着急,使用以下命令从根目录开始排除查找哪个文件夹最大: du --max-depth=1 找到 ...

  3. 一个命令解决linux重启nginx就丢失pid文件问题

    sudo nginx -c /etc/nginx/nginx.conf

  4. 如何解决 shell 脚本重复执行的问题

    在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一 ...

  5. linux使用flock文件锁解决crontab冲突问题

    * * * * * flock -xn /dev/shm/redis.lock -c "/usr/local/bin/redis-server" 可以用flock命令,配合使用rs ...

  6. Linux重复执行上条命令

    Linux系统下Shell重复执行上条命令的 4 种方法: 1.使用上方向键,并回车执行.2.按 !! 并回车执行.3.输入 !-1 并回车执行.4.按 Ctrl+P 并回车执行.

  7. 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33

    今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...

  8. linux sheel重复执行上条命令

    Linux系统下Shell重复执行上条命令的 4 种方法: 1.使用上方向键,并回车执行. 2.按 !! 并回车执行. 3.输入 !-1 并回车执行. 4.按 Ctrl+P 并回车执行.

  9. rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能

    rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [root@asm RedHat]# ...

随机推荐

  1. jq 回车提交指定按钮

    $(this).keydown(function (e) { var key = window.event ? e.keyCode : e.which; ") { $("#Main ...

  2. Windows下libjpeg-trubo-1.5.3编译(VS2015)

    简述 https://libjpeg-turbo.org/的网站上是有已经编译好的版本下载的,但是VC下是使用的VC10.0编译的.虽然在VC14.0下也能用,但是我还是需要编译一个VC14.0版本的 ...

  3. 使用Ubuntu

    一.ubuntu把文件夹名称改为中文 vim ~/.config/user-dirs.dirs 修改文件内容为: XDG_DESKTOP_DIR="$HOME/Desktop" X ...

  4. JAVA中对List<Map<String,Object>>中的中文汉字进行排序

    转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...

  5. 外贸圈 贸易经 外贸心路 一位成功外贸人的SOHO心得

    一位成功外贸人的SOHO心得 外贸圈http://waimaoquan.alibaba.com/wm Jade,高中毕业,93年进入外贸行业,刚开始,只是在公司的外贸仓库工作,10多年后的今天,他已成 ...

  6. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

  7. C#反射实现

    一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的外部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制,它可以动态的分析程 ...

  8. Nginx 指令目录(中文版)

    指令大全 accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_t ...

  9. Lambert漫反射的BRDF

    Lambert漫反射brdf=Albedo/pi. 推导: 如图,设Lambert面元获得入射照度Ei,各方向均匀释放亮度,每个方向释放的亮度都是Lo. 又设此表面反射率为Albedo,根据反射率定义 ...

  10. EasyUI - DataGrid 去右边空白滚动条列

    在网上查了很长时间没有找到解决方法,干脆自已查看一下代码来解决吧,随是压缩过的,不过也还是好查的,工夫不负有心人,终于解决了,方法如下: 一.我们先让表格自适应宽度 <!DOCTYPE html ...