Linux-kommandoer og Shell-færdigheder
find: Linux-søgningen, der gør alt
find er den farligste kommando på en produktionsserver, og netop derfor fortjener den mestring. Den opregner, filtrerer og udfører i ét udtryk, og hver klassiske '/var here be dragons' hændelse spores tilbage til en forhåndsvisning, som nogen har sprunget over. Vanerne er mekaniske: gå med -print eller -ls først, batch med -exec ... +, rør gennem -print0 til xargs -0, og behandl -delete som en andengangsbeslutning, aldrig et første udkast.
Vigtige pointer
- Filtrer på metadata, ikke navn alene: -type f, -mtime +30, -size +100M og -perm -o+w lokaliser de ulige filer, som både navngivningskonventioner og aldersrapporter savner.
- Forhåndsvis hver destruktiv forespørgsel: find /var/www/uploads -navn 'core.*' -ls først, skift -ls til -delete først, efter du rent faktisk har læst listen; forhåndsvisningen er sikkerhedstjekket, ikke et forslag.
- -exec cmd {} + batcher filer i få påkaldelser og slår \; dannes på store træer; den samme syntaks giver mulighed for 'rm hver matchende fil i én proces' uden en argumentliste-for lang fejl.
- Null-safe output som standard: find . -navn '*.old' -print0 | xargs -0 rm -v; almindelige rør til xargs er et kendt datatabsmønster den dag et filnavn indeholder et mellemrum.
- -xdev og -maxdepth holder gåturen ærlig: de stopper find fra at følge ind i mounts og snapshots, hvilket redder både runtime og dine antagelser om 'denne mappe'.
- Tidsvinduer er præcise, hvis de bliver spurgt præcist: -mmin -1440 for de sidste 24 timer, -newermt '2026-01-01' for siden en dato, og husk -xtime betyder 'n hele 24-timers perioder siden', før du citerer det i en billet.
- Beskær bevidst: find . -path '*/node_modules' -prune -o -name '*.js' -print springer den ene mappe over, der ellers opvejer resten af træet i størrelse og tid.
- Forvent ikke-nul exits på ulæselige mapper; stderr-linjer som 'Permission denied' er oversprungne filer, ikke data, så scripts tolererer enten find's exit-status eller kontrollerer det eksplicit i stedet for at antage rene ture.
Note fra marken
Vores værste fund -slet historie startede med et uciteret navnemønster, som den anden skal udvidede til tre ord opstrøms for find. Reglen siden er enkel: -print først, citer altid, og -delete bruger aldrig en kommando første gang den kører.
Ofte stillede spørgsmål
Mit find fandt filer, men downstream-kommandoen gjorde intet. Hvorfor?
Næsten altid citerende eller tom input: Mønsteret blev udvidet af skallen, før find så det, eller xargs modtog intet. Citer mønstre, og sæt -print0 sammen med xargs -0 hver eneste gang.
-delete eller rm efter find?
-delete er direkte, hurtig og utilgivelig; det kan ikke blandes med -exec i det samme udtryk. Kør det matchende -print først og læs det; det er hele disciplinen.
Hvorfor finder udskriftstilladelsesfejl i systemmapper?
Komponenter du ikke kan læse udskriftsfejl til stderr og få til at finde exit nonnul; filter med 2>/dev/null for interaktiv komfort, og fortolk aldrig disse fejl som fravær af filer.
Forskellen mellem -mtime og -ctime igen?
-mtime er indholdsændring, -ctime er metadataændring (tilladelser, omdøb, hardlink-antal); en chown eller et træk støder ctime uden at røre mtime, hvilket forvirrer præcis én rapport i kvarteret.
Sådan hjælper Kinetikatech med linux-kommandoer og shell-færdigheder
Det har vi gjort hundredvis af gange: De kommandoer og scriptvaner, der afgør, om en administrator driver en server eller bekæmper den: søg, transformer, overfør og overvåg tekst og processer med de værktøjer, der findes i enhver basisinstallation. Med Sikkerhed på Linux-servere og Serveradministration får du hele løkken: vi vurderer, implementerer, følger op hele døgnet og rykker ud inden for 30 minutter, når det er nødvendigt.