相关疑难解决方法(0)

快速而又脏的方法,确保一次只运行一个shell脚本实例

确保在给定时间只运行一个shell脚本实例的快速而简单的方法是什么?

bash shell lockfile process

174
推荐指数
16
解决办法
10万
查看次数

确保只运行一个Bash脚本实例的最佳方法是什么?

确保只有给定脚本的一个实例运行的最简单/最好的方法是什么 - 假设它是Linux上的Bash?

目前我正在做:

ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
Run Code Online (Sandbox Code Playgroud)

但它有几个问题:

  1. 它把检查放在脚本之外
  2. 它不允许我从单独的帐户运行相同的脚本 - 我有时会这样.
  3. -C 仅检查进程名称的前14个字符

当然,我可以编写自己的pidfile处理,但我觉得应该有一个简单的方法来实现它.

linux bash lockfile pid flock

100
推荐指数
4
解决办法
10万
查看次数

如果当前的工作没有完成,Cron会开始一份新工作吗?

可能重复:
如果cron作业已在运行,如何阻止cron作业执行

我的cron工作可能需要2分钟,或者可能需要5个小时才能完成.我需要确保始终执行此作业.

我的问题是:

如果我将它设置为每分钟执行一次,它会在上一个完成之后启动还是同时运行并弄乱数据库?

concurrency cron

26
推荐指数
2
解决办法
2万
查看次数

bash flock:退出如果无法获得锁定

以下锁定机制用于防止cron作业并发运行:

#!/bin/bash

echo "Before critical section"
(
    flock -e 200
    echo "In critical section"
    sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Run Code Online (Sandbox Code Playgroud)

当一起运行两个实例时,后者一直等到第一个完成,然后运行.这可能导致等待运行的脚本积压.

如何更改此脚本以便在flock无法获取锁定时终止脚本?我试过-n没有成功.

bash concurrency flock

17
推荐指数
2
解决办法
1万
查看次数

这个规范的群体示例如何运作?

当必须通过文件系统同步程序(shell脚本)时,我发现了一个flock基于建议的解决方案(也应该在NFS上工作).从脚本(来自http://linux.die.net/man/1/flock)中使用的规范示例是:

(
flock -s 200

# ... commands executed under lock ...

) 200>/var/lock/mylockfile 
Run Code Online (Sandbox Code Playgroud)

我不太明白为什么整个构造确保原子性.具体地讲,我想知道以何种顺序flock -s 200200>/var/lock/mylockfile例如,当被执行bash执行这些代码行.这个订单是保证/确定性的吗?我理解它的方式,如果这个成语应该起作用,那一定是确定性的.但是由于子进程是在子进程中生成的,所以我不明白这两个进程是如何同步的.我只看到这两个命令之间的竞争条件.

如果有人能让我对此消失感到困惑并解释为什么这个结构可以用来安全地同步进程,我将不胜感激.

同时,如果有人知道,我会感兴趣的是选择一些任意文件描述符(例如200在示例中)是多么安全,特别是在具有许多客户端的大型NFS文件系统的上下文中.

linux bash synchronization nfs locking

5
推荐指数
1
解决办法
3508
查看次数

在 Bash 中创建互斥锁时,我应该使用 `flock` 还是 `mkdir`?

我搜索了 Bash 如何创建互斥锁。我遇到了两种在 Bash 中创建互斥锁的不同方法。两者都是 stackoverflow 的答案,并且都有超过 100 个赞:一个答案使用mkdir另一个答案使用flock.

在 bash 中创建互斥锁时,我应该使用flock还是mkdir

bash shell mutex lockfile semaphore

3
推荐指数
1
解决办法
1677
查看次数

标签 统计

bash ×5

lockfile ×3

concurrency ×2

flock ×2

linux ×2

shell ×2

cron ×1

locking ×1

mutex ×1

nfs ×1

pid ×1

process ×1

semaphore ×1

synchronization ×1