Polecenia systemu Linux i umiejętności powłoki
find: Wyszukiwarka systemu Linux, która robi wszystko
find to najniebezpieczniejsze polecenie na serwerze produkcyjnym i właśnie dlatego zasługuje na mistrzostwo. Wylicza, filtruje i wykonuje w jednym wyrażeniu, a każdy klasyczny przypadek „/var here be Dragons” prowadzi do pominiętego podglądu. Nawyki są mechaniczne: najpierw chodź z -print lub -ls, wsadowo z -exec ... +, potokuj przez -print0 do xargs -0 i traktuj -delete jako decyzję drugiego przejścia, nigdy pierwszą wersję roboczą.
Kluczowe punkty
- Filtruj według metadanych, a nie samej nazwy: -type f, -mtime +30, -size +100M i -perm -o+w lokalizują dziwne pliki, które są pomijane zarówno w konwencjach nazewnictwa, jak i raportach dotyczących wieku.
- Podgląd każdego destrukcyjnego zapytania: znajdź /var/www/uploads -name 'core.*' -ls najpierw, zamień -ls na -delete dopiero po przeczytaniu listy; podgląd jest kontrolą bezpieczeństwa, a nie sugestią.
- -exec cmd {} + dzieli pliki na kilka wywołań i pokonuje \; tworzą się na dużych drzewach; ta sama składnia umożliwia „usuwanie każdego pasującego pliku w jednym procesie” bez błędu „zbyt długa lista argumentów”.
- Domyślnie wyjście bezpieczne z wartością null: find . -name '*.old' -print0 | xargs -0 rm -v; zwykłe potoki do xargs są znanym wzorcem utraty danych w dniu, w którym nazwa pliku zawiera spację.
- -xdev i -maxlength utrzymują uczciwość spaceru: powstrzymują find przed podążaniem za wierzchowcami i migawkami, co ratuje zarówno środowisko wykonawcze, jak i twoje założenia dotyczące „tego katalogu”.
- Okna czasowe są dokładne, jeśli zostaną dokładnie zadane: -mmin -1440 przez ostatnie 24 godziny, -newermt '2026-01-01' od daty i pamiętaj, że -xtime oznacza 'n pełnych 24-godzinnych okresów temu' przed podaniem tego w zgłoszeniu.
- Przycinaj celowo: znajdź . -path '*/node_modules' -prune -o -name '*.js' -print pomija jeden katalog, który w przeciwnym razie przewyższa resztę drzewa pod względem rozmiaru i czasu.
- Oczekuj niezerowych wyjść w nieczytelnych katalogach; Linie stderr, takie jak „Odmowa uprawnień”, są pomijanymi plikami, a nie danymi, więc skrypty albo tolerują status wyjścia find, albo sprawdzają go jawnie, zamiast zakładać, że przejdziesz bez problemu.
Notatka z praktyki
Nasza najgorsza historia o find -delete zaczęła się od niecytowanego wzorca -name, który druga powłoka rozwinęła do trzech słów poprzedzających find. Zasada jest prosta: -print najpierw, zawsze cytuj, a -delete nigdy nie pojawia się w poleceniu przy pierwszym uruchomieniu.
Częste pytania
Moje wyszukiwanie znalazło pliki, ale dalsze polecenie nic nie dało. Dlaczego?
Prawie zawsze cytuję lub puste dane wejściowe: wzorzec został rozwinięty przez powłokę, zanim find go zobaczył, lub xargs nic nie otrzymał. Cytuj wzorce i za każdym razem łącz -print0 z xargs -0.
-usuń lub rm po znalezieniu?
-delete jest bezpośrednie, szybkie i bezlitosne; nie można go mieszać z opcją -exec w tym samym wyrażeniu. Najpierw uruchom pasujące polecenie -print i przeczytaj je; to jest cała dyscyplina.
Dlaczego wyszukuje błędy dotyczące uprawnień do drukowania w katalogach systemowych?
Komponenty, których nie można odczytać błędów drukowania na stderr i sprawić, aby find exit był różny od zera; filtruj za pomocą 2>/dev/null dla wygody interaktywnej i nigdy nie interpretuj tych błędów jako braku plików.
Znowu różnica między -mtime i -ctime?
-mtime to zmiana zawartości, -ctime to zmiana metadanych (uprawnień, zmiana nazwy, liczba twardych łączy); chown lub ruch uderza w ctime bez dotykania mtime, co powoduje zamieszanie dokładnie w jednym raporcie na kwartał.
Jak Kinetikatech pomaga w polecenia systemu linux i umiejętności powłoki
Szczerze mówiąc, większość zespołów trafia do nas po samodzielnych próbach: Polecenia i nawyki związane z tworzeniem skryptów, które decydują o tym, czy administrator obsługuje serwer, czy z nim walczy: przeszukuje, przekształca, przesyła i nadzoruje tekst i procesy za pomocą narzędzi znajdujących się w każdej podstawowej instalacji. Nasza usługa Bezpieczeństwo serwerów Linux i Zarządzanie serwerami istnieje po to, aby nie musieli Państwo poznawać polecenia systemu linux i umiejętności powłoki na własnych błędach — zajmujemy się konfiguracją, monitoringiem i niespodziankami o 3 w nocy.