flock

当我使用集群时它立即退出而不是等待
flock

当我使用集群时它立即退出而不是等待

-n我很长一段时间都对国旗的含义感到困惑flock(1)。 基本上这个工具有很多指南,我们经常看到的是一些像flock -n 100.这里,fd 号 100 与某个锁文件关联并用于执行锁定。 今天我一直很困惑,因为我会做一些简单的测试,然后flock会立即失败退出。 -n旗帜到底有什么flock作用?我是否正确地认为将-n 100文件描述符编号 100 与某个锁定文件相关联? ...

Admin

群殴奇怪的先有鸡还是先有蛋的问题
flock

群殴奇怪的先有鸡还是先有蛋的问题

此 bash 命令的不同步骤按什么顺序完成: (flock -n 9) 9> toto.txt 如果我只做子外壳部分: (flock -n 9) 我得到这个结果:( flock: 9: Mauvais descripteur de fichier错误的文件描述符)。 因此,我假设子 shell 生成首先使用(...) 9> toto.txt.打开文件描述符 9。 但如果我这样做: (ls -l /proc/$$/fd) 9> toto.txt total 0 lrwx------ 1 laurent laurent 64 déc. ...

Admin

使用集群强制运行脚本?
flock

使用集群强制运行脚本?

如果使用flock()对脚本进行锁定,是否可以根据传递给脚本的某些参数进行强制运行/解锁? ...

Admin

Ubuntu 用户在 Ubuntu 22.04 上不受粘性位影响
flock

Ubuntu 用户在 Ubuntu 22.04 上不受粘性位影响

我在 /tmp 目录和集群命令上的坚持位中遇到了奇怪的行为。尝试了两种情况: 情况1:使用Ubuntu用户创建文件,root无权访问创建的文件。 ubuntu@:~$ touch -a /tmp/ubuntu_user_created.lck ubuntu@:~$ flock -n /tmp/ubuntu_user_created.lck -c "echo 123" 123 ubuntu@:~$ sudo flock -n /tmp/ubuntu_user_created.lck -c "echo 123" flock: cannot open lock f...

Admin

可以互相调用的脚本的共享锁定
flock

可以互相调用的脚本的共享锁定

这是一个不寻常的问题,可能是不良设计的结果。如果有人能提出更好的建议,我很乐意听到。但现在我想“按原样”解决它。 有一堆交互脚本。为了问题的目的并不重要,为了完整起见,这些脚本在物理备用和快照备用之间切换Oracle数据库备用节点,创建快照数据库并为我们的报告团队添加一些拨款,在此过程中释放过时的存档日志。 有: delete_archivelogs.sh switch_to_physical_standby.shdelete_archivelogs.sh,最后也会调用 switch_to_snapshot_standby.sh sync_standby....

Admin

测试文件锁定
flock

测试文件锁定

我有一个脚本锁定文件以避免并发访问它,如何从两个不同的终端同步执行相同的脚本,以检查它是否有效? 这是脚本 #!/bin/bash ( flock -xn 200 trap 'rm /tmp/test_lock.txt' 0 RETVAL=$? if [ $RETVAL -eq 1 ] then echo $RETVAL echo "file already removed" exit 1 else echo "locked and removed" fi ) 200>/tmp/test_...

Admin

Linux 是否有计划添加更高级别的功能,例如 Windows 的 WaitForMultipleObjects?
flock

Linux 是否有计划添加更高级别的功能,例如 Windows 的 WaitForMultipleObjects?

WaitForMultipleObjects 是几个 Windows 内核函数之一,它可以挂起调用线程并将其与其他线程同步,直到资源等可用,类似于 Linux 中的集群,但处理除文件锁定之外的所有内容。 WaitForMultipleObjects 支持一系列事件(可以是更改通知、控制台输入、事件、内存通知、互斥体、进程、信号量、线程和计时器的混合)、超时或轮询选项以及 AND/OR 选项和报告首先触发,并且它可以同时被多个线程独立使用,而无需彼此了解。 (我正在寻找一个带有超时的IPC锁,以及诸如将SIGALRM与flock一起使用之类的东西,其中建议我不...

Admin

同步对共享远程资源的访问
flock

同步对共享远程资源的访问

我在远程服务器上有一个共享缓存,多个客户端正在读取和写入该缓存,因此我需要同步对此缓存的访问。我想我可以: 通过 SSH 进入远程并获取服务器上的集群 将更新推送到服务器(rsync) 释放羊群 羊群本身正在工作,但为了使整个事情正常工作,我需要一种在远程启动进程的方法,该进程可以在我从客户端更新缓存时获取并保持锁定。然后,如果与客户端的连接丢失,则应在 3. 中从客户端释放该集群。关于如何实现这一目标有什么想法吗? 顺便说一句:在我当前的设置中,服务器不可能连接到客户端并通过 SSH“拉取”更新,从而允许在远程执行的单个脚本中处理所有内容。 ...

Admin

如何使用lockf命令运行eval?
flock

如何使用lockf命令运行eval?

我有一个运行命令,eval如下所示。 #! /bin/sh readonly scr="MYENV=1 sh /tmp/scr.sh" eval ${scr} -a 1 -b 2 现在我想scr使用lockf实用程序运行脚本,因此我进行了以下更改: #! /bin/sh readonly scr="MYENV=1 sh /tmp/scr.sh" lockf -k /tmp/f.lock eval ${scr} -a 1 -b 2 这会引发以下错误: lockf: eval: No such file or directory 基本上,限制是MY...

Admin

这种与 if-else 一起使用的集群安全吗?
flock

这种与 if-else 一起使用的集群安全吗?

我有两个 shell 脚本,它们可以并行运行,但也可以一次运行一个。这两个脚本都依赖于初始设置步骤,该步骤需要一段时间并且不能同时运行。 为了允许其余部分的并行执行,我使用以下命令将设置步骤包装在控制流中flock基于这个建议。 这似乎工作正常,但我不确定 if-else 结构是否完全安全。这里是否有我遗漏的隐藏问题? set -euxo pipefail ( # Only run setup if we're the first to acquire the lock if flock -x -n 200 ; then # ...

Admin

有没有一种真正简单可靠的方法来在Linux上创建唯一的锁(文件)?不使用“flock”
flock

有没有一种真正简单可靠的方法来在Linux上创建唯一的锁(文件)?不使用“flock”

编辑:我学会了如何使用集群进行独占锁以及如何不弄乱它:https://superuser.com/questions/1619940/flock-is-randomly-failing-on-desktop-pc-but-not-on-notebook-could-be-defectiv/。我认为这个问题是不必要的,因为除了flock之外不需要使用其他任何东西。但是...“重复删除已回答的问题可能会导致您的帐户被阻止提问。您确定要删除吗?”我不会删除这个问题,以免弄乱我的帐户。如果留在这里也可能有助于人们理解和...

Admin

Linux 中过时文件锁的处理和集群的稳健使用
flock

Linux 中过时文件锁的处理和集群的稳健使用

我有一个通过 cron 定期(每隔几分钟)执行的脚本。然而,该脚本不应该并行运行多次,并且有时运行时间会更长一些,因此我想实现一些锁定,即确保如果先前的实例已经在运行,则脚本会提前终止。 根据各种建议,我有一个如下所示的锁定: lock="/run/$(basename "$0").lock" exec {fd}<>"$lock" flock -n $fd || exit 1 如果脚本的另一个实例仍在运行,这应该调用 exit 1。 现在的问题是:有时即使脚本已经终止,陈旧的锁仍然存在。这实际上意味着 cron 永远不会再次执行(直到下次重新启...

Admin

rsync 脚本在 CentOS 7 上工作,相同的脚本在 RHEL 7 上不起作用
flock

rsync 脚本在 CentOS 7 上工作,相同的脚本在 RHEL 7 上不起作用

我有一个虚拟机集群,在 CentOS7 上有 3 个节点,在 RHEL7 上有 1 个节点。在crontab中有一个启用rsync的目录,/mnt/<server_IP>/portal/wso2telcohub-3.0.2/repository/deployment/server/synapse-configs/default/api/ 设置如下。 $ incrontab -l /mnt/<server_IP>/portal/wso2telcohub-3.0.2/repository/deployment/server/synaps...

Admin

我们能否仅通过查看集群锁定文件来判断某个命令是否正在由进程运行?
flock

我们能否仅通过查看集群锁定文件来判断某个命令是否正在由进程运行?

是util-linux 的flock基于flock()Linux C API实现? 我们能否仅通过查看锁定文件来判断某个命令是否正在由进程运行?我发现当由 守护的命令flock完成运行时,锁定文件似乎没有变化。这是运行时和运行完成后的情况: $ ls -l ../sleep.flock.file -rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.file $ ls -l ../sleep.flock.file -rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.fi...

Admin

bash - 使用环境变量使用 exec 作为文件描述符
flock

bash - 使用环境变量使用 exec 作为文件描述符

LOCK_FD=200 LOCK_FILE=/tmp/lock-file exec ${LOCK_FD}>${LOCK_FILE} 我收到一个错误 exec: 200 not found 然而这有效 LOCK_FD=200 LOCK_FILE=/tmp/lock-file eval "exec ${LOCK_FD}>${LOCK_FILE}" 知道为什么吗? ...

Admin