以下锁定机制用于防止作业同时运行:
#!/bin/bash
echo "Before critical section"
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
当两个实例同时运行时,后一个会等待第一个完成后再运行。这可能会导致脚本积压等待运行。
我该如何修改此脚本,以便如果flock
无法获取锁定,则终止脚本?我已经尝试使用-n
但没有成功。
$0
包含空格,它将会失败,并且如果$0
不包含运行脚本的路径(例如脚本在其他地方但是在PATH
中),它也会失败。 - joeytwiddle