Mac OS X相当于Linux flock(1)命令

png*_*png 26 macos shell file-locking

Mac OS X上是否有用于管理文件锁定的flock命令?

http://linux.die.net/man/1/flock

sne*_*eak 17

这里有一个跨平台的flock命令:

https://github.com/discoteq/flock

我测试了它,它在OSX上运行良好,可以作为util-linux flock的替代品.

  • 啊-因为-x是该实现中的默认设置。好的,阅读手册页会更有意义。:) (2认同)

Ern*_*est 10

Perl单线:

perl -MFcntl=:flock -e '$|=1; $f=shift; print("starting\n"); open(FH,$f) || die($!); flock(FH,LOCK_EX); print("got lock\n"); system(join(" ",@ARGV)); print("unlocking\n"); flock(FH,LOCK_UN); ' /tmp/longrunning.sh /tmp/longrunning.sh

作为一个脚本:

#!/usr/bin/perl 
# emulate linux flock command line utility
#
use warnings;
use strict;
use Fcntl qw(:flock);
# line buffer
$|=1;

my $file = shift;
my $cmd = join(" ",@ARGV);

if(!$file || !$cmd) { 
   die("usage: $0 <file> <command> [ <command args>... ]\n");
}

print("atempting to lock file: $file\n"); 
open(FH,$file) || die($!); 
flock(FH,LOCK_EX) || die($!); 
print("got lock\n"); 
print("running command: $cmd\n"); 
system($cmd);
print("unlocking file: $file\n"); 
flock(FH,LOCK_UN); 
Run Code Online (Sandbox Code Playgroud)

  • @Yan将来,您可能不应该将代码更改为其他人的答案.随意提交您建议的编辑作为评论,并让作者打电话询问他或她是否想要改变他们的答案(10次中有9次,如果是错误,他们会修复它).为清晰度或格式化,请随意编辑实质性更改的答案,但不要更改答案本身. (2认同)

mtt*_*trb 7

我不相信flockOS X 上存在该命令,但 BSD 上确实存在该命令,这应该使得移植到 OS X 相当容易。

最接近的可用命令是shlock命令(手册页),但它不如flock.

您最好的选择可能是考虑将 Linux 或 BSD 版本移植flock到 OS X。