相关疑难解决方法(0)

哪些 Unix 命令可以用作信号量/锁?

我想并行运行多个 Bash shell 脚本。但是,我想避免竞争条件。我可以为此目的使用哪些 Unix 命令真正具有原子性,我该如何使用它们?

scripting semaphore bash

45
推荐指数
4
解决办法
3万
查看次数

在 bash 中的文件中执行原子写操作

通过庆典会后文件这个问题,一个它仍然不是很清楚,我哪能执行原子写入(追加)操作在bash文件。我有一个在多个实例中运行的脚本,并且在某些时候必须将数据写入文件:

echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
Run Code Online (Sandbox Code Playgroud)

如何使所有并发运行的脚本的所有写入操作都原子化(以便来自一个实例的数据不会与来自另一个实例的数据重叠)?

linux command-line semaphore bash

16
推荐指数
2
解决办法
8336
查看次数

cron 是否知道要调度的实例已经在运行?

我想知道我们是否在 crontab 中添加了一个作业,例如每 5 分钟运行一次,而该作业实际上并没有在 5 分钟内完成,cron 守护进程是否知道前一个实例已经在运行并跳过下一次运行?或者我必须以某种方式为流程构建逻辑?如何?

linux scripting cron

9
推荐指数
1
解决办法
2950
查看次数

crontab 作业可以与自身同时运行吗?

如果我有一个 crontab 作业,例如每小时运行一次,但该作业可能需要一个多小时才能完成,下一个作业是否会无法运行?

cron

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

NFS 文件锁定不起作用,我误解了吗?

我计划进行复杂的文件共享设置,并希望确保不会破坏文件锁定。(想在同一数据上使用绑定挂载、nfs、nfs over rdma(InfiniBand 文件共享)和 virtfs(kvm 虚拟机直通文件共享)。)

我刚开始进行健全性检查,只是用一个 nfs 客户端测试 nfs 服务器。两个系统上的最新 Arch,nfs-utils 1.3.2-6,内核 4.1.6-1。

我看到了意想不到的结果。在 nfs 服务器上:

server exports with: /test 192.168.0.0/16(rw,sync,no_subtree_check,
   no_root_squash)
client mount shows: 192.168.1.2:/test on /test type nfs4 (rw,noatime,vers=4.2,
   rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,
   retrans=2,sec=sys,clientaddr=192.168.1.3,local_lock=none,addr=192.168.1.2)
Run Code Online (Sandbox Code Playgroud)

在 /test 中,我有一个以lockFile内容命名的脚本:

#!/bin/bash
filename="lockedFile"
exec 200>$filename
flock -n 200 || exit 1
pid=$$
while true; do
   echo $pid 1>&200
done
Run Code Online (Sandbox Code Playgroud)

如果我在 nfs 服务器上使用两个终端:

1: ./lockFile
2: ./lockFile
Run Code Online (Sandbox Code Playgroud)

然后,终端 1 迅速用它的 pid 填满一个文件,终端 2 立即退出。一切都在预料之中。

但是,如果我在 nfs 服务器和客户端上分别运行一个终端:

server: ./lockFile
client: ./lockFile
Run Code Online (Sandbox Code Playgroud)

两人开心地奔跑,出乎意料。

在此配置中,我的 …

nfs lock

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

标签 统计

bash ×2

cron ×2

linux ×2

scripting ×2

semaphore ×2

command-line ×1

lock ×1

nfs ×1