是否知道&& amp;多个bash命令的命令?

时间:2017-10-27 20:44:19

标签: bash flock

我正在使用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完成时才会解锁?

我发现的人和例子并不清楚。

1 个答案:

答案 0 :(得分:1)

Shell以这种方式解释你的命令:

flock -n ~/.my.lock cd /to/my/dir && python3.6 runcommand.py > /dev/null 2>&1
  • 第1步:运行flock -n ~/.my.lock cd /to/my/dir部分
  • 步骤2:如果步骤1中的命令以非零退出,则跳过步骤3
  • 第3步:运行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网站: