首页 > 解决方案 > 连续监视一个套接字文件,当它不存在时运行命令?

问题描述

似乎当我的屏幕被锁定一段时间后,我的S.gpg-agent.ssh消失了,所以为了继续使用我的密钥,我必须重新初始化它。

显然,这是比较频繁的情况,所以我为我的 shell 编写了一个函数来杀死 gpg-agent,重新启动它,并重置相应的环境变量。


这可能有点“XY 问题”,X 在这条线之上,但我认为无论如何,下面的 Y 更普遍有用。


当现有文件不再存在时,如何自动运行命令?

我想出的最好的是:

nohup echo "$file" | entr $command &

登录时。但是entr在文件更改时运行一个命令,而不仅仅是删除,所以我不清楚它在套接字上的表现如何。

标签: shellfilewatch

解决方案


你没有提到你正在使用的操作系统,但如果它是 linux,你可以inotifywaitinotify-tools包中使用:

#!/bin/sh

while inotifywait -qq -e delete_self /path/to/S.gpg-agent.ssh; do
    echo "Socket was deleted!"
    # Recreate it.
done

推荐阅读