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

Linux parancsok és shell készségek

Bash Scripting: A „működik a dobozomon” a gyártásig

A Bash akkor kapja meg a helyét, ha egy feladat összeragaszt: parancsokat hangszerel, egyszerű szövegeket vitat, és teljesen a dobozon marad. Iparági hírneve a landolásnak köszönhető, nem az ötletnek: a nem tesztelt folyamatokat a cronba szállították egy szerveren, ahol az egyik változó nincs beállítva, vagy egy fájlnévben szóköz volt. A diszciplína mechanikus és olcsó, és négy részből áll: szigorú mód, idézés, shellcheck és naplózás, ahogy az ops később olvassa.

Kulcspontok

  • Minden komoly szkript megnyílik a set -euo pipefail paranccsal: az unset változók meghiúsulnak, a parancshiba leállítja a szkriptet, a folyamat a felszínen fekszik; enélkül a hibák csendben elhaladnak, amíg el nem érik a termelést.
  • Idézetváltozók és parancshelyettesítések: "$var" és "$(cmd)"; A szóközökre való szófelosztás minden idők klasszikusa, és az IFS, amelyet egyes webhelyek ajánlanak, olyan hiba, amelyet emlékezni szeretne.
  • A kapcsos zárójelek kibővítése a következő változók előtt történik: rm -rf "${CLEANUP:?}"/{a,b} a CLEANUP unset-el a szándékolttól eltérően bővül, és eltávolítja a megtartani kívánt dolgokat; A ${VAR:?} csekk az rm-safety idióma, amit érdemes egyszer megtanulni.
  • A shellcheck minden változtatásnál kiérdemli a helyét: elkapja a nem idézett globusokat, az elérhetetlen kódokat és a 'for f in $(ls)' mintákat, amelyek szóközzel megeszik a fájlneveket; futtasd CI-ben, és a hibák nem érik el a cront.
  • Az ideiglenes munka és a tisztítás párosítva van: TMP=$(mktemp -d), trap 'rm -rf "$TMP"' EXIT, és nincs árva karcolás, valamint nincs "ha hiba, akkor távolítsd el" szórások minden ágon.
  • Az olvasási ciklusok biztonságos módon: míg az IFS= read -r -d '' f az újsorokat és szóközöket tartalmazó fájlneveket a find -print0 segítségével kezeli; 'for f in $(ls)' a bug shellcheck jelzők és a régi szkriptek még mindig mindenhol hordoznak.
  • A kilépési kódok és a naplók a műveletekhez szólnak: visszhangozzák a hibákat a stderr-re (>&2) egy színpadi névvel, valós hiba esetén lépjenek ki nullától eltérő értékből, és hagyják, hogy a cron levele vagy naplója megmutassa azt a sort, amelyre valójában szüksége van hajnali 3-kor.
  • Korai eszkaláció: a JSON-elemzés, a három plusz szint beágyazása, a HTTP-hívások vagy bármilyen állapotalapú logika a Python vagy az awk rendszerbe tartozik; A bash általános célú nyelvvé vált, ahol a hírnevét kiérdemelték.

Terepi jegyzet

A merevítő-kiterjesztési hegünk: rm -rf "${CLEANUP}"/{a,b} a CLEANUP beállítatlan állapotával pontosan úgy bővült, ahogyan a shell akarta, nem pedig a szándék. Mostantól minden ilyen út magában hordozza a ${VAR:?} őrt, és senki sem fizette ki kétszer ezt a számlát.

Gyakori kérdések

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

Az env nyer olyan tárolókban és macOS-telepítésekben, ahol a bash máshol él; a shebang kevésbé számít, mint a set -euo pipefail tényleges jelenléte, és a shellcheck átad minden változást.

A szkriptem manuálisan működik, de a cronban nem működik. Miért?

A Cron csupasz környezetben fut: a PATH rövid, nincs bejelentkezési profil, és a relatív elérési utak rossz otthonra mutatnak. Használjon abszolút elérési utakat, állítsa be kifejezetten a PATH-t, és tartsa meg a bash -x visszajátszást a hibakereséshez.

Bash vagy Python szerverfeladatokhoz?

Bash olyan csővezetékekhez, amelyek többnyire meglévő rendszereszközöket hangszerelnek, és kicsik maradnak; Python strukturált adatokhoz, API-khoz és hibakezeléshez, amelyeknek túl kell élniük az ügyeletet. A bash Python lejátszására kényszerítésével az incidensek neveket kapnak.

Hogyan írhatom le biztonságosan a szkriptek törlését?

Minden változót idézzen, csak az mktemp által előállított vagy explicit módon konfigurált elérési utakat célozza meg, futtasson szárazon futtatott móddal, amely kiírja, amit eltávolítana, és hagyja, hogy a ${VAR:?} megvédje a beállított változókat, mielőtt az rm látná őket.

Hogyan segít a Kinetikatech a linux parancsok és shell készségek területén

Őszintén szólva, a legtöbb csapat azután keres meg minket, hogy előbb maga próbálkozott: Azok a parancsok és szkriptelési szokások, amelyek eldöntik, hogy a rendszergazda üzemeltet-e egy kiszolgálót, vagy küzd ellene: keressen, alakítson, vigyen át és felügyeljen szöveget és folyamatokat a minden alaptelepítésben megtalálható eszközökkel. A Linux-szerverbiztonság és Szerveradminisztráció szolgáltatásunk épp azért van, hogy ne az éles rendszeren ismerkedj meg a linux parancsok és shell készségek területével; mi vállaljuk az üzembe helyezést, a felügyeletet és a hajnali három órai meglepetéseket.

Beszéljen egy mérnökkel

Probléma a szerverrel? Feltörték a webhelyet? Lassú a betöltés?

Kritikus problémák megoldása 30 percen belül — a hét minden napján, éjjel-nappal.

Sürgős támogatás kérése support@kinetikatech.com