Почему статусное сообщение для avahi-daemon.service постоянно «запускается»?

Термин «регулярное выражение» (обычно) не применяется к выбору файлов из командной строки. 1 Технический термин - расширение имени пути, более известное как подстановка подстановки, сопоставление с образцом или подстановочный знак. Исходя из того, что вы сказали, первая попытка ответа будет

rm -- *[0-9]x[0-9]*

, которая удалит каждый файл в текущем каталоге, имя которого состоит из

  • чего угодно ( * ), а затем на
  • цифру ( [0-9] ), за которой следует
  • буква x , за которой следует
  • еще одна цифра ( [0- 9] ), за которым следует
  • что угодно ( * ).

- защищает вас от файлов, имена которых начинаются с - . Я настоятельно рекомендую вам сначала сделать

ls -ld -- *[0-9]x[0-9]*

, чтобы увидеть, какие файлы совпадают и будут удалены. Если вы обнаружите, что сопоставляете файлы, которые не хотели, используйте * [0-9] [0-9] [0-9] x [0 -9] [0-9] [0-9] * , чтобы получить только файлы, содержащие (как минимум) трехзначное число, x и еще три- цифровой номер. И / или добавить .jpg (в конце, т. Е. Использовать * [0-9] x [0-9] *. Jpg ) {{1 }}, чтобы ограничить команду файлами с этим расширением, , а затем повторите команду с .png . Или используйте

rm -i -- *[0-9]x[0-9]*

, чтобы rm запрашивали подтверждение для каждого файла.

Вы упомянули «каталог, в котором есть каталоги.У всех есть JPG ". Если вам нужно выполнить поиск в дереве каталогов, можно ввести

shopt -u globstar

, а затем добавить ** / к подстановочному знаку; т.е. добавить его в начало; например,

rm -i -- **/*[0-9]x[0-9]*

Еще одним способом сканирования дерева подкаталогов является

find . -name "*[0-9]x[0-9]*" -type f -exec rm -i -- {} +

, и вы можете «предварительно просмотреть» эту команду (посмотреть, с какими файлами она будет соответствовать), набрав

find . -name "*[0-9]x[0-9]*" -type f -print

Опять же, если это соответствует слишком большому количеству файлов, {{1 }} вы можете добавлять цифры и / или добавлять расширения.

Примечания:

  • Вы должны указать подстановочный знак в команде find . Вы не должны заключать подстановочный знак в кавычки в других командах.
  • Команда find автоматически найдет файлы, имена которых начинаются с на . . Остальные не будут, если сначала вы не введете shopt -s dotglob .
  • Команда find будет работать только с простыми файлами из-за -типа f . Остальные будут работать с каталогами (и другими специальными файлами) , если их имя содержит число x число . Это не должно быть проблемой для каталогов, поскольку rm не удаляет каталоги. Но, как я уже сказал, сначала выполните ls и внимательно проверьте вывод, или используйте rm -i и подумайте, прежде чем вводить ] y .

_________
1 find действительно может сопоставлять регулярные выражения, с тестом -regex , но для этого он вам не нужен проблема.

2
08.05.2018, 18:36
1 ответ

Исходный код демона avahi -включает еще несколько сообщений о состоянии, например.

sd_notifyf(0, "STATUS=Server startup complete. Host name is %s. Local service cookie is %u.", avahi_server_get_host_name_fqdn(s), avahi_server_get_local_service_cookie(s));

Однако по умолчанию демон avahi -входит в безопасный chroot во время запуска. Это означает, что он не может получить доступ к сокету уведомлений systemd /run/systemd/notify. Он заблокировал себя от отправки сообщений о состоянии в systemd. Упс.

# ls -l /proc/817/root
lrwxrwxrwx. 1 root root 0 May  8 16:27 /proc/817/root -> /etc/avahi
# ls -l /proc/817/root/
-rw-r--r--. 1 root root 1753 Jul 10  2017 avahi-daemon.conf
drwxr-xr-x. 2 root root 4096 Apr  6 16:48 etc
-rw-r--r--. 1 root root 1121 Jul 10  2017 hosts
drwxr-xr-x. 2 root root 4096 Apr  6 16:48 services
2
27.01.2020, 22:09

Теги

Похожие вопросы