Как исключить список полных путей к каталогам в находке, управляют на Солярисе

Ваш лучший выбор состоит в том, чтобы достигнуть в 20 минут или 30 минут.

Вы затем лучше всего могли бы быть должны инициировать каждые 5 минут, и затем провести внутренний подсчет или метку времени, и выполнить каждый 5-й триггер, или если 25 минут протекли начиная с последнего выполнения.

Более сложный должен был бы отработать корректные времена в течение дня, запускающегося в полночь, и принять ошибку в конце дня. Это включило бы дублирование crontab записи в различные часы.

Более сложный, чем это должен был бы отработать времена в течение всего месяца, который включит много копий crontab записи для покрытия различных комбинаций.

Наконец Вы могли всегда реализовывать свое собственное на демоне и иметь, которые делают планирование.

3
23.05.2017, 14:33
2 ответа

Вы не можете соответствовать файлам полным путем с Солярисом find, но можно соответствовать файлам inode. Так использование ls -i для генерации списка inodes для сокращения затем звоните find. Это предполагает, что нет такого количества каталогов, Вы хотите сократить это, Вы пробежались бы через предел длины командной строки.

inode_matches=$(ls -bdi /opt/dir1 /opt/dir2 /var/dir3/dir4 |
                sed -e 's/ *\([0-9][0-9]*\) .*/-inum \1 -o/')
find / -xdev \( $inode_matches -nouser -o -nogroup \) -prune -o -print

Альтернативный подход должен был бы использовать Perl или сценарий Python и обход каталога самокрутки. Perl поставлется с a find2perl сценарий, который мог запустить Вас с File::Find модуль. В Python посмотрите walk функция в os.path модуль.

2
27.01.2020, 21:20
  • 1
    +1 Ahh... Лучше. Как всегда... ;) –  rozcietrzewiacz 22.10.2011, 23:06
  • 2
    еще не имеют достаточного количества представителя к upvote, или у меня был бы... прошу прощения. –  Yanick Girouard 23.10.2011, 20:21

Начиная с реализации (реализаций) находки не поддерживают -path тест, можно моделировать его использование -exec test "{}" = "/path/to/exclude" \; -prune ( {} должен быть расширен до имени полного пути).

Это, к сожалению, займет больше времени, чем "чистая" находка, начиная с test программа будет выполнена в каждом выполнении. Поэтому удостоверьтесь, что оптимизировали тесты так, как Вы можете - например, проверить который из этих двух выполнений быстрее:

 -exec test "{}" = "/dev" \; -o -exec test "{}" = "/proc" \; -o -exec test "{}" = "/tmp/test" \;

или

 -exec test "{}" = "/dev" -o "{}" = "/proc" -o "{}" = "/tmp/test" \;

Я думаю, что последний должен быть быстрее в целом, потому что test программа выполнена только однажды.

Примечание: Вам не нужно -aдля и - логика; это подразумевается по умолчанию. То же идет для -print в конце.

2
27.01.2020, 21:20
  • 1
    Спасибо за детали! Я проверю его и попытаюсь оптимизировать условие испытания настолько лучше всего, как я могу для компенсации. Я приму ответ, так как нет действительно никакой лучшей альтернативы за исключением установки GNU findutils на каждом сервере Соляриса, который мы поддерживаем (который вне рассмотрения). Я изучу альтернативу Perl также, но я не уверен, который будет самым быстрым... –  Yanick Girouard 22.10.2011, 18:48
  • 2
    Вы могли сделать мне одолжение и отправить тот же ответ на версии Переполнения стека этого сообщения также? Ссылка находится на вершине. Очень ценился бы! –  Yanick Girouard 22.10.2011, 18:49
  • 3
    Протестированный оба варианта исполнительного условия, вот результаты: использование нескольких-o в том же тесте = намного быстрее, но на 25% больше использования ЦП в среднем (свитый в клубок глазом это с помощью вершины). Используя несколько тестов = меньше использования ЦП, но НАМНОГО дольше работать. Кажется так или иначе, существует хит производительности по сравнению со встроенными операциями находки. –  Yanick Girouard 22.10.2011, 18:56
  • 4
    Такое увеличенное использование ЦП, кажется не настолько плохо, если оно работает быстрее - машина делает больше анализа вместо ввода-вывода. Это могло бы быть даже выгодно для скорости отклика. Для проверки сценарий не вмешивается слишком много в остальную часть системы, выполнять ее использование nice. –  rozcietrzewiacz 22.10.2011, 19:11
  • 5
    Именно так Вы находитесь на цикле также, мое другое сообщение на Переполнении стека получило лучший ответ. Используя inodes с ls-bdi, и затем - цифра в находке. Это - совместимый POSIX и будет работать над старыми системами. Это намного быстрее, чем использование - исполнительный тест... Хорошо знать обе опции однако! Мог пригодиться в будущем. –  Yanick Girouard 22.10.2011, 23:01

Теги

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