У меня есть файл с именем .sock
в директории / 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
не может найти передаваемый файл.
Поскольку ваш файл не обычный файл, а канал, вы не можете использовать [ -f ...]
или -тип f
. Вместо этого используйте [-p ... ]
opr -тип p
:
if [ -p $NETHERMIND_SOCK ]; then
....
или
sudo find / -type p -name "*.sock" ...