bash脚本在内部运行时如何锁定文件夹
我有一个任务流,它可以分为步骤1和步骤2,都在bash中运行。 步骤1需要在文件夹a中运行bash脚本。 当我将作业提交到多个主机时,有多个线程将触发文件夹_a中的bash脚本,这将中断该函数 我希望我的作业按以下方式运行:bash脚本在内部运行时如何锁定文件夹,bash,makefile,Bash,Makefile,我有一个任务流,它可以分为步骤1和步骤2,都在bash中运行。 步骤1需要在文件夹a中运行bash脚本。 当我将作业提交到多个主机时,有多个线程将触发文件夹_a中的bash脚本,这将中断该函数 我希望我的作业按以下方式运行: 每个作业的步骤_1都必须逐个运行,否则会中断文件夹_a中的功能 为了提高速度,每个作业的step_2都可以并行运行 如果文件夹_a中的bash正在运行并且拒绝为其他线程运行,如何锁定该文件夹? 也许我只能将step_1 bash top脚本锁定在文件夹a中,而不是文件夹中。
也许我只能将step_1 bash top脚本锁定在文件夹a中,而不是文件夹中。如果您在类Unix系统(GNU/Linux,BSD…)下工作,您可能有
flock
,您可以在flock
调用中包装关键作业:
step1_job: | folder_a/.lock
flock $| command [arguments]
folder_a/.lock:
touch $@
有关详细信息,请参见
man flock
。如果您在类Unix系统(GNU/Linux,BSD…)下工作,您可能有flock
,您可以在flock
调用中包装关键作业:
step1_job: | folder_a/.lock
flock $| command [arguments]
folder_a/.lock:
touch $@
有关详细信息,请参见
man flock
。请参见或使用GNU Parallel作为互斥器。。。您还可以使用GNU Parallel在多台主机上并行运行作业。请参阅,或者您可以使用GNU Parallel作为互斥对象。。。您还可以使用GNU并行在多台主机上并行运行您的作业。我测试了flock,它适合我的需要,添加了flock-x。在多进程需要锁定的命令之前。我的顶级任务shell脚本中的示例:1。cd文件夹_a;2.flock-x。“我测试了flock,它适合我的需要,”flock-x补充道。在多进程需要锁定的命令之前。我的顶级任务shell脚本中的示例:1。cd文件夹_a;2.flock-x。步骤1的命令\u