find 命令无法找到管道文件

find 命令无法找到管道文件

.sock我有一个名为in dir 的文件/var/spool/

以下是结果ls -al /var/spool/

drwxr-xr-x.  9 root     root 121 Dec 16 09:55 .
drwxr-xr-x. 19 root     root 267 Dec 14 10:47 ..
drwxr-xr-x.  2 root     root  63 Oct 28  2019 anacron
drwx------.  2 root     root   6 Feb 13  2019 cron
drwxr-xr-x.  2 root     root   6 Dec 14  2017 lpd
drwxrwxr-x.  2 root     mail  22 Dec 14 10:47 mail
prw-r--r--.  1 telegraf root   0 Dec 17 10:04 nethermind.sock
drwxr-xr-x. 16 root     root 201 Jul 29  2019 postfix
drwxr-xr-x.  3 root     root  19 Oct 28  2019 rhsm
drwx------.  2 root     root   6 Sep  6  2018 up2date

您可以看到nethermind.sock文件被标记为prw-r--r--.

我想删除这个文件,所以我在脚本中写下这个-

NETHERMIND_SOCK="/var/spool/nethermind.sock"
PARITY_SOCK="/var/spool/parity.sock"

if [ -f $NETHERMIND_SOCK ]; then
    rm -f $NETHERMIND_SOCK
elif [ -f $PARITY_SOCK ]; then
    rm -f $PARITY_SOCK
else
    echo ".sock not found"
fi

它总是让.sock not found 我尝试查找并删除类似 -

sudo find / -type f -name "*.sock" -exec rm -f {} +

但似乎找不到该文件。

如果我这样做sudo find /var/spool/ -type f -name "nethermind.sock",它不会返回任何东西。

我不确定p这里的标记prw-r--r--.

这里有一个关联实际上p标记的意思是什么。但是find命令无法找到管道文件。

答案1

由于您的文件不是常规文件而是管道,因此您不能使用[ -f ...]-type f。请改用[ -p ... ]opr -type p

if [ -p $NETHERMIND_SOCK ]; then
    ....

或者

sudo find / -type p -name "*.sock" ...

相关内容