Linux-opdrachten en shell-vaardigheden
find: de Linux-zoekopdracht die alles doet
find is het gevaarlijkste commando op een productieserver, en dat is precies waarom het meesterschap verdient. Het somt op, filtert en voert uit in één uitdrukking, en elk klassiek '/var here be dragons'-incident is terug te voeren op een voorbeeld dat iemand heeft overgeslagen. De gewoonten zijn mechanisch: loop eerst met -print of -ls, batch met -exec ... +, pijp -print0 door naar xargs -0, en behandel -delete als een tweede beslissing, nooit als een eerste concept.
Kernpunten
- Filter op metadata, niet alleen op naam: -type f, -mtime +30, -size +100M en -perm -o+w lokaliseer de vreemde bestanden die naamgevingsconventies en leeftijdsrapporten beide missen.
- Bekijk een voorbeeld van elke destructieve zoekopdracht: zoek eerst /var/www/uploads -name 'core.*' -ls, wissel -ls pas om voor -delete nadat je de lijst daadwerkelijk hebt gelezen; het voorbeeld is de veiligheidscontrole, geen suggestie.
- -exec cmd {} + batches bestanden in enkele aanroepen en verslaat de \; vorm op grote bomen; dezelfde syntaxis ondersteunt 'rm elk overeenkomend bestand in één proces' zonder een fout met een te lange argumentatielijst.
- Standaard nulveilige uitvoer: find . -naam '*.oud' -print0 | xargs -0rm-v; gewone leidingen naar xargs zijn een bekend patroon van gegevensverlies op de dag dat een bestandsnaam een spatie bevat.
- -xdev en -max depth houden de wandeling eerlijk: ze zorgen ervoor dat find niet kan volgen in mounts en snapshots, wat zowel de runtime als uw aannames over 'deze map' redt.
- Tijdvensters zijn nauwkeurig als het nauwkeurig wordt gevraagd: -mmin -1440 voor de afgelopen 24 uur, -newermt '2026-01-01' voor sinds een datum, en onthoud -xtime betekent 'n volledige perioden van 24 uur geleden' voordat u dit in een ticket citeert.
- Opzettelijk snoeien: vind . -path '*/node_modules' -prune -o -name '*.js' -print slaat de ene map over die anders qua grootte en tijd zwaarder weegt dan de rest van de boom.
- Verwacht niet-nul exits op onleesbare mappen; stderr-regels zoals 'Toestemming geweigerd' zijn overgeslagen bestanden, geen gegevens, dus scripts tolereren de afsluitstatus van find of controleren deze expliciet in plaats van uit te gaan van schone wandelingen.
Notitie uit de praktijk
Ons slechtste vondst-verwijder-verhaal begon met een niet-geciteerd -naampatroon dat de tweede shell stroomopwaarts van vondst uitbreidde tot drie woorden. De regel is sindsdien eenvoudig: -print eerst, quote altijd, en -delete rijdt nooit mee in een opdracht de eerste keer dat deze wordt uitgevoerd.
Veelgestelde vragen
Mijn vondst heeft bestanden gevonden, maar de downstream-opdracht deed niets. Waarom?
Bijna altijd aanhalingstekens of lege invoer: het patroon werd door de shell uitgebreid voordat find het zag, of xargs ontving niets. Citeer patronen en koppel -print0 elke keer met xargs -0.
-verwijderen of rm na vinden?
-delete is direct, snel en meedogenloos; het kan niet in dezelfde expressie worden gemengd met -exec. Voer eerst de overeenkomende -print uit en lees deze; dat is de hele discipline.
Waarom worden afdruktoestemmingsfouten gevonden in systeemmappen?
Componenten die u niet kunt lezen, printfouten naar stderr en ervoor zorgen dat de uitgang niet nul is; filter met 2>/dev/null voor interactief comfort, en interpreteer deze fouten nooit als de afwezigheid van bestanden.
Verschil tussen -mtime en -ctime opnieuw?
-mtime is inhoudswijziging, -ctime is metadatawijziging (rechten, hernoemen, aantal hardlinks); een chown of een zet stuitert op ctime zonder mtime aan te raken, wat precies één rapport per kwartaal in de war brengt.
Hoe Kinetikatech helpt bij linux-opdrachten en shell-vaardigheden
Dit is ons dagelijks werk: De opdrachten en scriptgewoonten die beslissen of een beheerder een server beheert of bestrijdt: tekst en processen zoeken, transformeren, overdragen en controleren met de tools die in elke basisinstallatie aanwezig zijn. Onze dienst Linux-serverbeveiliging en Serverbeheer dekt het volledige traject: beoordeling, implementatie, 24/7-monitoring en noodrespons binnen 30 minuten.