shell - 连续监视一个套接字文件,当它不存在时运行命令?
问题描述
似乎当我的屏幕被锁定一段时间后,我的S.gpg-agent.ssh
消失了,所以为了继续使用我的密钥,我必须重新初始化它。
显然,这是比较频繁的情况,所以我为我的 shell 编写了一个函数来杀死 gpg-agent,重新启动它,并重置相应的环境变量。
这可能有点“XY 问题”,X 在这条线之上,但我认为无论如何,下面的 Y 更普遍有用。
当现有文件不再存在时,如何自动运行命令?
我想出的最好的是:
nohup echo "$file" | entr $command &
登录时。但是entr在文件更改时运行一个命令,而不仅仅是删除,所以我不清楚它在套接字上的表现如何。
解决方案
你没有提到你正在使用的操作系统,但如果它是 linux,你可以inotifywait
从inotify-tools
包中使用:
#!/bin/sh
while inotifywait -qq -e delete_self /path/to/S.gpg-agent.ssh; do
echo "Socket was deleted!"
# Recreate it.
done