Команди Linux і навички оболонки
знайти: пошук у Linux, який робить усе
find — найнебезпечніша команда на робочому сервері, і саме тому вона заслуговує на майстерність. Він перераховує, фільтрує та виконує в одному виразі, і кожен класичний інцидент «/var here be dragons» відстежує попередній перегляд, який хтось пропустив. Звички є механічними: спочатку пройти з -print або -ls, пакетно з -exec ... +, передати через -print0 у xargs -0 і розглядати -delete як рішення другого проходу, ніколи не першу чернетку.
Головне
- Фільтруйте метадані, а не лише ім’я: -type f, -mtime +30, -size +100M і -perm -o+w знайдіть дивні файли, які не враховуються ні правилами іменування, ні віковими звітами.
- Перегляньте кожен деструктивний запит: спочатку знайдіть /var/www/uploads -name 'core.*' -ls, замініть -ls на -delete лише після того, як ви фактично прочитаєте список; попередній перегляд є перевіркою безпеки, а не пропозицією.
- -exec cmd {} + групує файли в декілька викликів і випереджає \; формують на великих деревах; той самий синтаксис дозволяє «завантажувати кожен відповідний файл в один процес» без помилки «задовгий список аргументів».
- Захищений від нуля вихід за замовчуванням: find . -name '*.old' -print0 | xargs -0 rm -v; звичайні канали в xargs є відомим шаблоном втрати даних у день, коли ім’я файлу містить пробіл.
- -xdev і -maxdepth забезпечують чесність проходження: вони зупиняють пошук від переходу до монтувань і знімків, що рятує як час виконання, так і ваші припущення щодо «цього каталогу».
- Часові вікна є точними, якщо їх запитують точно: -mmin -1440 за останні 24 години, -newermt '2026-01-01' для дати, починаючи з дати, і пам'ятайте, що -xtime означає 'n повних 24-годинних періодів тому' перед цитуванням у заявці.
- Обрізати свідомо: знайти . -path '*/node_modules' -prune -o -name '*.js' -print пропускає один каталог, який в іншому випадку переважає решту дерева за розміром і часом.
- Очікуйте ненульових виходів у нечитабельних каталогах; Рядки stderr, як-от «Дозвіл заборонено», пропускають файли, а не дані, тому сценарії або допускають статус виходу find, або явно перевіряють його замість припущення чистих проходів.
Польова нотатка
Наша найгірша історія find-delete почалася з шаблону імені без лапок, який друга оболонка розширила до трьох слів перед знахідкою. З тих пір правило просте: -друк спочатку, цитати завжди, і -delete ніколи не їде в команді під час першого запуску.
Часті запитання
Мій пошук знайшов файли, але нижча команда нічого не дала. чому
Майже завжди цитування або порожній вхід: шаблон було розширено оболонкою до того, як find його побачив, або xargs не отримали нічого. Котируйте шаблони та поєднуйте -print0 із xargs -0 щоразу.
-видалити або RM після пошуку?
- видалення є прямим, швидким і невблаганним; його не можна змішувати з -exec в одному виразі. Запустіть відповідність - спочатку надрукуйте та прочитайте; це вся дисципліна.
Чому відображається помилка дозволу на друк у системних каталогах?
Компоненти, які не можуть читати помилки друку в stderr і робити find exit відмінним від нуля; фільтруйте за допомогою 2>/dev/null для інтерактивного комфорту та ніколи не інтерпретуйте ці помилки як відсутність файлів.
Знову різниця між -mtime і -ctime?
-mtime — зміна вмісту, -ctime — зміна метаданих (дозволи, перейменування, кількість жорстких посилань); чаун або хід змінює ctime, не торкаючись mtime, що вводить в оману рівно один звіт на квартал.
Допомога Kinetikatech: команди linux і навички оболонки
Ми бралися за це сотні разів: Команди та сценарії, які вирішують, чи керує адміністратор сервером, чи бореться з ним: шукайте, трансформуйте, пересилайте та контролюйте текст і процеси за допомогою інструментів, які присутні в кожній базовій установці. Служба Безпека серверів Linux та Адміністрування серверів дає замкнений цикл: ми оцінюємо, впроваджуємо, цілодобово стежимо й підхоплюємо за 30 хвилин, коли це критично.