NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
SK

Linuxové príkazy

Bash Scripting: Od 'works on my box' až po produkciu

Bash si zasluhuje miesto, keď je úloha zlepená: organizujte príkazy, lámte si jednoduchý text a zostaňte úplne na krabici. Jeho reputácia v odvetví pochádza z pristátia, nie z myšlienky: netestované potrubia odoslané do cronu na server, kde bola jedna premenná nenastavená alebo jeden názov súboru mal medzeru. Disciplína je mechanická a lacná a má štyri časti: prísny režim, citovanie, kontrola shellu a protokolovanie tak, ako to budú čítať neskôr.

Kľúčové body

  • Každý seriózny skript sa otvorí s set -euo pipefail: nenastavené premenné zlyhajú, zlyhania príkazov zastavia skript, potrubie leží na povrchu; bez neho chyby prechádzajú ticho, kým sa nedostanú do výroby.
  • Citujte premenné a substitúcie príkazov: "$var" a "$(cmd)"; delenie slov na medzerách je klasika všetkých čias a hranie IFS, ktoré niektoré stránky odporúčajú, je chyba, ktorú si chcete zapamätať.
  • Rozšírenie zloženej zátvorky sa uskutoční pred premennými: rm -rf "${CLEANUP:?}"/{a,b} s nenastaveným CLEANUP sa rozbalí inak, ako bolo zamýšľané, a odstráni veci, ktoré ste si chceli ponechať; ${VAR:?} šeky sú rm-safety idiom, ktorý sa oplatí raz naučiť.
  • shellcheck si zasluhuje svoje miesto pri každej zmene: zachytáva neuvedené guľôčky, nedostupný kód a vzory 'for f v $(ls)', ktoré požierajú názvy súborov s medzerami; spustite ho v CI a chyby prestanú dosahovať cron.
  • Dočasná práca a čistenie sú spárované: TMP=$(mktemp -d), pasca 'rm -rf "$TMP"' EXIT a žiadne osirelé škrabadlá plus žiadne posypy "ak chyba, potom odstráňte" na každej vetve.
  • Čítanie cyklov bezpečným spôsobom: zatiaľ čo IFS= read -r -d '' f spracováva názvy súborov s novými riadkami a medzerami cez find -print0; 'for f v $(ls)' je príznak kontroly bugov a staré skripty všade stále existujú.
  • Výstupné kódy a protokoly sa prihovárajú ops: ozvite zlyhania na stderr (>&2) s umeleckým menom, pri skutočnom zlyhaní ukončite nenulovú hodnotu a nechajte cronov mail alebo journald, aby vám o 3:00 ukázal jeden riadok, ktorý skutočne potrebujete.
  • Eskalujte včas: analýza JSON, tri plus úrovne vnorenia, HTTP volania alebo akákoľvek stavová logika patria do Pythonu alebo awk; bash zakomponovaný do univerzálneho jazyka je miestom, kde si získala svoju povesť.

Poznámka z teréna

Naša jazva po roztiahnutí ortézy: rm -rf "${CLEANUP}"/{a,b} s deaktivovaným CLEANUP sa rozšírila presne tak, ako to chcelo puzdro, nie zámer. Každá takáto cesta teraz nesie strážcu ${VAR:?} a nikto tento účet nezaplatil dvakrát.

Často kladené otázky

#!/bin/bash alebo #!/usr/bin/env bash?

env víťazí medzi kontajnermi a inštaláciami macOS tam, kde inde žije bash; na shebang nezáleží menej ako na nastavení -euo pipefail je skutočne prítomný a shellcheck odovzdáva každú zmenu.

Môj skript funguje manuálne, ale zlyhá v crone. prečo?

Cron beží v holom prostredí: PATH je krátka, neexistuje žiadny prihlasovací profil a relatívne cesty ukazujú na nesprávny domov. Použite absolútne cesty, nastavte PATH explicitne a ponechajte bash -x replay pre ladenie.

Bash alebo Python pre úlohy servera?

Bash pre kanály, ktoré väčšinou organizujú existujúce systémové nástroje a zostávajú malé; Python pre štruktúrované údaje, rozhrania API a spracovanie chýb, ktoré musia prežiť počas hovoru. Nútiť bash hrať Python je spôsob, akým incidenty získavajú mená.

Ako môžem bezpečne odstrániť skripty?

Citujte každú premennú, zacieľte iba na cesty vytvorené mktemp alebo explicitne nakonfigurované cesty, spustite s režimom suchého spustenia, ktorý vypíše, čo by odstránila, a nechajte ${VAR:?} ochranné veto zrušiť nastavenie premenných, kým ich rm uvidí.

Ako Kinetikatech pomáha s linuxové príkazy

To je to, čo robíme každý deň: Príkazy a skriptovacie návyky, ktoré rozhodujú o tom, či správca prevádzkuje server alebo s ním bojuje: vyhľadávajte, transformujte, prenášajte a dohliadajte na text a procesy pomocou nástrojov, ktoré sú súčasťou každej základnej inštalácie. Naša služba Bezpečnosť Linuxových serverov a Správa serverov pokrýva všetko od hodnotenia po implementáciu, monitoring 24/7 a núdzovú reakciu do 30 minút.

Pozrite sa s inžinierom

Problém so serverom? Napadený web? Pomalé načítanie?

Kritické problémy vyriešime v 30 minútach — nonstop, 7 dní v týždni.

Požiadať o núdzovú podporu support@kinetikatech.com