我正在使用bash和flos on centos。
通常我会运行cd /to/my/dir && python3.6 runcommand.py
但是我们将它添加到cron并且不想输出所以添加> /dev/null 2>&1
在它之前添加一个fl来防止多个实例,如下所示:
flock -n ~/.my.lock cd /to/my/dir && python3.6 runcommand.py > /dev/null 2>&1
问题
只有这会聚集cd /to/my/dir
,然后执行python3.6
(通常没有flock)或者它会聚集完整的bash命令行(所以两者都有)并且只有在python3.6 runcommand.py
完成时才会解锁?
我发现的人和例子并不清楚。
答案 0 :(得分:1)
Shell以这种方式解释你的命令:
flock -n ~/.my.lock cd /to/my/dir && python3.6 runcommand.py > /dev/null 2>&1
flock -n ~/.my.lock cd /to/my/dir
部分python3.6 runcommand.py > /dev/null 2>&1
部分因此,flock
与&&
或其右侧没有业务关系。
你可以这样做:
touch ./.my.lock # no need for this step if the file is already there and there is a potential that some other process could lock it
(
flock -e 10
cd /to/my/dir && python3.6 runcommand.py > /dev/null 2>&1
) 10< ./.my.lock
在Unix和&amp ;;上看到这篇文章Linux网站: