.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" ...