当我使用集群时它立即退出而不是等待
-n我很长一段时间都对国旗的含义感到困惑flock(1)。 基本上这个工具有很多指南,我们经常看到的是一些像flock -n 100.这里,fd 号 100 与某个锁文件关联并用于执行锁定。 今天我一直很困惑,因为我会做一些简单的测试,然后flock会立即失败退出。 -n旗帜到底有什么flock作用?我是否正确地认为将-n 100文件描述符编号 100 与某个锁定文件相关联? ...
-n我很长一段时间都对国旗的含义感到困惑flock(1)。 基本上这个工具有很多指南,我们经常看到的是一些像flock -n 100.这里,fd 号 100 与某个锁文件关联并用于执行锁定。 今天我一直很困惑,因为我会做一些简单的测试,然后flock会立即失败退出。 -n旗帜到底有什么flock作用?我是否正确地认为将-n 100文件描述符编号 100 与某个锁定文件相关联? ...
此 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. ...
我在 /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...
这是一个不寻常的问题,可能是不良设计的结果。如果有人能提出更好的建议,我很乐意听到。但现在我想“按原样”解决它。 有一堆交互脚本。为了问题的目的并不重要,为了完整起见,这些脚本在物理备用和快照备用之间切换Oracle数据库备用节点,创建快照数据库并为我们的报告团队添加一些拨款,在此过程中释放过时的存档日志。 有: delete_archivelogs.sh switch_to_physical_standby.shdelete_archivelogs.sh,最后也会调用 switch_to_snapshot_standby.sh sync_standby....
我有一个脚本锁定文件以避免并发访问它,如何从两个不同的终端同步执行相同的脚本,以检查它是否有效? 这是脚本 #!/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_...
WaitForMultipleObjects 是几个 Windows 内核函数之一,它可以挂起调用线程并将其与其他线程同步,直到资源等可用,类似于 Linux 中的集群,但处理除文件锁定之外的所有内容。 WaitForMultipleObjects 支持一系列事件(可以是更改通知、控制台输入、事件、内存通知、互斥体、进程、信号量、线程和计时器的混合)、超时或轮询选项以及 AND/OR 选项和报告首先触发,并且它可以同时被多个线程独立使用,而无需彼此了解。 (我正在寻找一个带有超时的IPC锁,以及诸如将SIGALRM与flock一起使用之类的东西,其中建议我不...
我在远程服务器上有一个共享缓存,多个客户端正在读取和写入该缓存,因此我需要同步对此缓存的访问。我想我可以: 通过 SSH 进入远程并获取服务器上的集群 将更新推送到服务器(rsync) 释放羊群 羊群本身正在工作,但为了使整个事情正常工作,我需要一种在远程启动进程的方法,该进程可以在我从客户端更新缓存时获取并保持锁定。然后,如果与客户端的连接丢失,则应在 3. 中从客户端释放该集群。关于如何实现这一目标有什么想法吗? 顺便说一句:在我当前的设置中,服务器不可能连接到客户端并通过 SSH“拉取”更新,从而允许在远程执行的单个脚本中处理所有内容。 ...
我有一个运行命令,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...
我有两个 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 # ...
编辑:我学会了如何使用集群进行独占锁以及如何不弄乱它:https://superuser.com/questions/1619940/flock-is-randomly-failing-on-desktop-pc-but-not-on-notebook-could-be-defectiv/。我认为这个问题是不必要的,因为除了flock之外不需要使用其他任何东西。但是...“重复删除已回答的问题可能会导致您的帐户被阻止提问。您确定要删除吗?”我不会删除这个问题,以免弄乱我的帐户。如果留在这里也可能有助于人们理解和...
我有一个通过 cron 定期(每隔几分钟)执行的脚本。然而,该脚本不应该并行运行多次,并且有时运行时间会更长一些,因此我想实现一些锁定,即确保如果先前的实例已经在运行,则脚本会提前终止。 根据各种建议,我有一个如下所示的锁定: lock="/run/$(basename "$0").lock" exec {fd}<>"$lock" flock -n $fd || exit 1 如果脚本的另一个实例仍在运行,这应该调用 exit 1。 现在的问题是:有时即使脚本已经终止,陈旧的锁仍然存在。这实际上意味着 cron 永远不会再次执行(直到下次重新启...
我有一个虚拟机集群,在 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...
是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...
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}" 知道为什么吗? ...