Linux-kommandoer og skallferdigheter
finn: Linux-søket som gjør alt
find er den farligste kommandoen på en produksjonsserver, og det er nettopp derfor den fortjener mestring. Den oppregner, filtrerer og kjører i ett uttrykk, og hver klassiske '/var here be dragons'-hendelse spores tilbake til en forhåndsvisning noen hoppet over. Vanene er mekaniske: gå med -print eller -ls først, batch med -exec ... +, rør gjennom -print0 inn i xargs -0, og behandle -delete som en andregangsbeslutning, aldri et førsteutkast.
Nøkkelpunkter
- Filtrer på metadata, ikke navn alene: -type f, -mtime +30, -size +100M og -perm -o+w finn de rare filene som både navnekonvensjoner og aldersrapporter savner.
- Forhåndsvis alle destruktive spørringene: finn /var/www/uploads -navn 'core.*' -ls først, bytt -ls for -delete først etter at du faktisk har lest listen; forhåndsvisningen er sikkerhetssjekken, ikke et forslag.
- -exec cmd {} + grupperer filer i noen få påkallelser og slår \; dannes på store trær; den samme syntaksen driver 'rm hver samsvarende fil i én prosess' uten en argument-liste-for lang feil.
- Null-sikker utgang som standard: finn . -navn '*.old' -print0 | xargs -0 rm -v; plain pipes into xargs er et kjent datatapsmønster den dagen et filnavn inneholder et mellomrom.
- -xdev og -maxdepth holder vandringen ærlig: de stopper funn fra å følge med inn i monteringer og øyeblikksbilder, noe som redder både kjøretid og antakelsene dine om 'denne katalogen'.
- Tidsvinduer er nøyaktige hvis de blir spurt nøyaktig: -mmin -1440 for de siste 24 timene, -newermt '2026-01-01' for siden en dato, og husk -xtime betyr 'n fulle 24-timers perioder siden' før du siterer det i en billett.
- Beskjær bevisst: finn . -path '*/node_modules' -prune -o -name '*.js' -print hopper over den ene katalogen som ellers oppveier resten av treet i størrelse og tid.
- Forvent ikke-null utganger på uleselige kataloger; stderr-linjer som 'Tillatelse nektet' er overhoppede filer, ikke data, så skript tolererer enten funns utgangsstatus eller sjekker den eksplisitt i stedet for å anta rene turer.
Feltnotat
Vår verste funn -sletthistorie startet med et navnemønster uten anførselstegn som det andre skallet utvidet til tre ord oppstrøms for funn. Regelen siden er enkel: -skriv ut først, siter alltid, og -slett tar aldri inn en kommando første gang den kjøres.
Vanlige spørsmål
Jeg fant filer, men nedstrømskommandoen gjorde ingenting. Hvorfor?
Nesten alltid siterer eller tomme input: mønsteret ble utvidet av skallet før funn så det, eller xargs mottok ingenting. Sitat mønstre, og par -print0 med xargs -0 hver eneste gang.
-slett eller rm etter funn?
-delete er direkte, rask og uforsonlig; det kan ikke blandes med -exec i samme uttrykk. Kjør den matchende -print først og les den; det er hele disiplinen.
Hvorfor finner utskriftstillatelsesfeil i systemkataloger?
Komponenter du ikke kan lese utskriftsfeil til stderr og få til å finne exit nonzero; filter med 2>/dev/null for interaktiv komfort, og tolk aldri disse feilene som fravær av filer.
Forskjellen mellom -mtime og -ctime igjen?
-mtime er innholdsendring, -ctime er metadataendring (tillatelser, endre navn, antall hardlink); en chown eller et trekk støter ctime uten å berøre mtime, noe som forvirrer nøyaktig én rapport i kvarteret.
Slik hjelper Kinetikatech med linux-kommandoer og skallferdigheter
Vi har håndtert dette hundrevis av ganger: Kommandoene og skriptvanene som avgjør om en administrator driver en server eller bekjemper den: søk, transformer, overføring og overvåk tekst og prosesser med verktøyene som finnes i hver basisinstallasjon. Med Sikring av Linux-servere og Serveradministrasjon får du hele løkken: vi evaluerer, implementerer, overvåker kontinuerlig og griper inn i 30 minutter når det haster.