这个文件描述符和 flock 是如何工作的?
How does this file descriptor and flock work?
我想始终在后台执行一个 shell 脚本到 运行。该脚本将
将其添加到 运行ning 的启动应用程序中。在尝试确保一次只有一个实例 运行 时,我遇到了这段代码:
#!/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 creates/checks 在给定 /var/lock.. 位置锁定,但是 100 有什么意义?
谢谢。
flock -n creates/checks for a lock at the given /var/lock.. location
不,flock 作用于文件描述符。
/var/lock
是 系统管理员 锁定 全局实用程序 的典型位置。例如包管理器(pacman
、apt-get
等)。您可以在任何地方使用(好的,几乎)任何文件 flock
.
一般来说,flock
是一个 属性 与一个 文件 相关联 文件描述符。数字 100
并不重要,它必须是任何打开的以写入文件描述符。
100>/var/lock/dobackup.lock
将文件描述符 100
重定向到文件 /var/lock/dobackup.lock
。 flock -n 100
在文件描述符 100
上应用 flock。当文件描述符 100
关闭时(进程终止时发生),与该进程关联的 flock 将自动解除。
有关文件描述符,请参阅维基百科,请参阅 man 2 flock
和 man 2 fcntl
。
我想始终在后台执行一个 shell 脚本到 运行。该脚本将 将其添加到 运行ning 的启动应用程序中。在尝试确保一次只有一个实例 运行 时,我遇到了这段代码:
#!/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 creates/checks 在给定 /var/lock.. 位置锁定,但是 100 有什么意义?
谢谢。
flock -n creates/checks for a lock at the given /var/lock.. location
不,flock 作用于文件描述符。
/var/lock
是 系统管理员 锁定 全局实用程序 的典型位置。例如包管理器(pacman
、apt-get
等)。您可以在任何地方使用(好的,几乎)任何文件 flock
.
一般来说,flock
是一个 属性 与一个 文件 相关联 文件描述符。数字 100
并不重要,它必须是任何打开的以写入文件描述符。
100>/var/lock/dobackup.lock
将文件描述符 100
重定向到文件 /var/lock/dobackup.lock
。 flock -n 100
在文件描述符 100
上应用 flock。当文件描述符 100
关闭时(进程终止时发生),与该进程关联的 flock 将自动解除。
有关文件描述符,请参阅维基百科,请参阅 man 2 flock
和 man 2 fcntl
。