Kiedy wiesz, że plik znajduje się gdzieś na serwerze, ale nie wiesz gdzie, często kusi Cię przeszukiwanie folderów po folderach. Zły pomysł. W Linuksie znajdować jest do tego stworzony: wyszukuj według nazwy, typu, rozmiaru, daty, uprawnień, a następnie podejmuj działania dopiero wtedy, gdy wyniki będą jasne.
Radzę używać go rozważnie, szczególnie na serwerze produkcyjnym. Polecenie „find” uruchomione na poziomie głównym może przeskanować ogromną liczbę plików, wyświetlić błędy uprawnień i niepotrzebnie obciążyć dysk. Chodzi o to, aby nie wpisywać najszerszego możliwego polecenia, ale szybko zawęzić obszar wyszukiwania.

Zacznij od szukania we właściwym miejscu
Podstawowa forma jest prosta: określasz folder początkowy, a następnie kryteria wyszukiwania.
znajdź /etc -name "ssh_config"
Tutaj Linux szuka pliku o nazwie ssh_config W /itp i jego podfoldery. Jeśli wiesz już, gdzie plik powinien się znajdować, zacznij od tej lokalizacji. Jest to szybsze, bardziej czytelne i pozwala uniknąć niepotrzebnego skanowania całego systemu.
Aby zignorować rozróżnianie wielkości liter, użyj -imię :
znajdź /var/www -iname "*.conf"
Jeśli zaczniesz od korzenia, spodziewaj się zobaczyć wiadomości Odmowa pozwoleniaTo niekoniecznie stanowi problem. Możesz je ukryć, ale nie rób tego systematycznie, jeśli celowo dążysz do emisji akcji z prawem poboru.
znajdź / -name "nginx.conf" 2>/dev/null
Ogranicz wyszukiwanie według typu pliku
Na serwerze nazwa może odpowiadać plikowi, folderowi, dowiązaniu symbolicznemu lub czemuś innemu. Dodaj -Uprzejmy aby uniknąć niepotrzebnych wyników.
znajdź /var/log -type f -name "*.log"
znajdź /var/www -type d -name "cache"
znajdź /usr/bin -type l -name "python*"
-wpisz f docelowe pliki standardowe. -wpisz D foldery docelowe. -typ l Filtr ten koncentruje się na dowiązaniach symbolicznych. Ten niewielki filtr pozwala uniknąć dużej ilości szumu w wynikach.
Możesz również ograniczyć głębokość, jeśli nie chcesz schodzić zbyt głęboko w drzewo:
znajdź /var/www -maxdepth 2 -type d -name "cache"
Jest to bardzo użyteczne w przypadku stron internetowych, kopii zapasowych lub folderów użytkowników zawierających wiele podkatalogów.
Zanim cokolwiek usuniesz, znajdź duże pliki.
Gdy na serwerze kończy się miejsce na dysku, funkcja find może pomóc w zlokalizowaniu dużych plików. Zacznij od ich wylistowania, a nie usuwania.
znajdź /var -type f -size +100M -print
znajdź /home -type f -size +1G -print
Aby wyświetlić rozmiary w sposób czytelny, możesz uruchomić ls -lh na każdym wyniku:
znajdź /var -type f -size +100M -exec ls -lh {} +
Jeśli Twoim celem jest zwolnienie miejsca, nie przechodź od razu do rmNajpierw sprawdź, co znalazłeś, zwłaszcza w /var/lib, /var/log lub folderów aplikacji. Plik bazy danych lub pamięć podręczna mogą wymagać określonej metody czyszczenia.
Aby uzyskać bardziej kompleksowe podejście do tematu, można uzupełnić go o przewodnik Polecenia do użycia, gdy miejsce na dysku Linux jest pełne.
Szukaj według daty modyfikacji
Opcje daty są bardzo przydatne, aby dowiedzieć się, co ostatnio się zmieniło. Na przykład, pliki zmodyfikowane w ciągu ostatnich 7 dni:
znajdź /etc -type f -mtime -7
Pliki zmodyfikowane ponad 30 dni temu:
znajdź /var/log -type f -mtime +30
-mczas działa w ciągu kilku dni. Aby uzyskać bardziej precyzyjne wyszukiwanie, sprawdź również -mmin, który działa w ciągu kilku minut:
znajdź /tmp -type f -mmin -60
Jest to przydatne po zmianie konfiguracji, aktualizacji lub skrypcie, który wygenerował pliki, nie podając jasnej informacji, gdzie się znajdują.
Filtruj według uprawnień bez ich naruszania
Funkcja „Znajdź” umożliwia również wyszukiwanie na podstawie uprawnień. Na przykład, aby znaleźć skrypty wykonywalne w folderze:
znajdź /usr/local/bin -type f -perm /111
Aby zidentyfikować pliki, do których dostęp jest zbyt łatwy, możesz poszukać plików, które każdy może edytować:
znajdź /var/www -type f -perm -002 -exec ls -lh {};
Nie poprawiaj listy wyników za pomocą chmod globalny bez zrozumienia kontekstu. Uprawnienia Linuksa mogą szybko doprowadzić do awarii aplikacji. Jeśli chcesz to sprawdzić, przeczytaj artykuł na ten temat. rekurencyjny chmod w systemie Linux wyjaśnia dokładnie, dlaczego musimy zachować ostrożność.
Użycie -exec bez wywoływania katastrofy
-wykon Pozwala wykonać polecenie na znalezionych plikach. Jest potężny, więc to właśnie tam możesz wyrządzić najwięcej szkód.
Zawsze zaczynaj od wyświetlenia wyników:
znajdź /tmp -wpisz f -nazwa "*.tmp" -drukuj
Dopiero wtedy, jeśli lista jest poprawna, możesz poprosić o potwierdzenie przed usunięciem:
znajdź /tmp -type f -name "*.tmp" -exec rm -i {} +
para {} reprezentuje znalezione pliki. + prosi find o grupowanie kilku wyników w jednym poleceniu, jeśli jest to możliwe, co pozwala uniknąć uruchamiania procesu dla każdego pliku.
znajdź /var/log -type f -name "*.log" -exec ls -lh {} +
Moja rada jest prosta: nie usuwaj niczego automatycznie, dopóki nie przejrzysz listy. Na serwerze, zaoszczędzenie sekundy nie jest warte przywracania z kopii zapasowej.
Szybka metoda przed uruchomieniem, znaleziona w produkcji
- zacznij od najdokładniejszego pliku, jaki jest możliwy;
- dodać
-wpisz f,-wpisz DLub-typ ltak szybko jak to możliwe; - używać
-maksymalna głębokośćjeśli chcesz uniknąć zbyt głębokich poszukiwań; - wyświetl wyniki za pomocą
-wydrukowaćLub-exec ls -lhprzed podjęciem działań; - Polecenia destrukcyjne zostaw na koniec, jeśli to możliwe, potwierdzając je.
W celu uzyskania dokumentacji referencyjnej można zapoznać się z podręcznikiem GNU Findutils pod adresem znajdować i strona znajdź(1) z man7. Jeśli po znalezieniu pliku musisz postępować zgodnie z dziennikami, skorzystaj z przewodnika ogon pod Linuksem Ta metoda dobrze ją uzupełnia.