【发布时间】:2022-01-03 16:21:57
【问题描述】:
我想实现一个始终在后台运行的 shell 脚本。该脚本将 将其添加到启动应用程序中以进行运行。在尝试确保一次只运行一个实例时,我遇到了以下代码:
#!/bin/bash
another_instance()
{
echo “There is another instance running, exiting”
exit 1
}
( flock -n 100 || another_instance DEST=/home/backup/`date +%s` mkdir -p “$DEST” rsync -avz root@myhost:/home/web “$DEST/.” ) 100>/var/lock/dobackup.lock
here,附上解释:
在本例中,我们在重定向到锁定文件时使用文件描述符 100。另外,如果flock失败,我们调用another_instance,通知有另一个实例,然后退出。
它有效,但我不理解文件描述符 100 部分。我尝试在网上查找,但我的困惑占了上风。
有人可以解释一下flock -n 100 和100>/var/lock/dobackup.lock吗?
据我了解,flock -n 在给定的 /var/lock.. 位置创建/检查锁,但是 100 的意义是什么?
谢谢。
【问题讨论】: