似乎我的屏幕锁定了一段时间后,我的S.gpg-agent.ssh
消失了,因此为了继续使用我的钥匙,我必须重新初始化它。
显然,这是一个相对频繁的情况,因此我为Shell编写了一个函数来杀死gpg-agent,重新启动它并重置适当的环境变量。
这可能是一个“ X-Y问题”,X在此行上方,但我认为在任何情况下了解下面的Y都更有用。
当现存文件不再存在时,如何自动运行命令?
我想出的最好的方法是:
nohup echo "$file" | entr $command &
在登录时。但是entr会在文件更改时运行命令,而不仅仅是删除文件,因此我不清楚套接字对它的影响。
答案 0 :(得分:0)
根据您的评论,cron
守护程序不适合。
尝试auditd
# auditctl -w /var/run/<your_socket_file> -p wa
$ tail -f /var/log/audit/audit.log | grep 'nametype=DELETE'
如果要在套接字删除时运行脚本,则可以使用while
循环,例如:
tail -Fn0 /var/log/audit/audit.log | grep 'name=<your_socket_file>' | grep 'nametype=DELETE' \
while IFS= read -r line; do
# your script here
done
致敬
答案 1 :(得分:0)
您没有提到所使用的操作系统,但是如果是Linux,则可以使用inotify-tools
软件包中的inotifywait
:
#!/bin/sh
while inotifywait -qq -e delete_self /path/to/S.gpg-agent.ssh; do
echo "Socket was deleted!"
# Recreate it.
done