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

Linux naredbe i vještine školjke

Bash skriptiranje: od 'radi na mojoj kutiji' do proizvodnje

Bash dobiva svoje mjesto kada je zadatak ljepilo: orkestrirajte naredbe, prepirite jednostavan tekst i ostanite u potpunosti na kutiji. Njegova reputacija u industriji dolazi od slijetanja, a ne ideje: neprovjereni cjevovodi isporučeni u cron na poslužitelju gdje jedna varijabla nije bila postavljena ili je jedan naziv datoteke imao razmak. Disciplina je mehanička i jeftina i ima četiri dijela: strogi način rada, citiranje, shellcheck i bilježenje načina na koji će operativci to kasnije pročitati.

Ključne točke

  • Svaka ozbiljna skripta otvara se sa set -euo pipefail: nepostavljene varijable ne uspijevaju, greške naredbi zaustavljaju skriptu, cjevovod leži na površini; bez njega pogreške prolaze tiho dok ne dođu do proizvodnje.
  • Varijable navodnika i zamjene naredbi: "$var" i "$(cmd)"; dijeljenje riječi na razmake je klasik svih vremena, a IFS petljanje koje neke stranice preporučuju je greška koju birate zapamtiti.
  • Proširenje zagrada događa se prije varijabli: rm -rf "${CLEANUP:?}"/{a,b} s CLEANUP nepostavljenim proširuje se drugačije od predviđenog i uklanja stvari koje ste namjeravali zadržati; ${VAR:?} provjere su rm-sigurnosni idiom koji vrijedi jednom naučiti.
  • shellcheck zaslužuje svoje mjesto pri svakoj promjeni: hvata kuglice bez navodnika, nedostupni kod i obrasce 'za f u $(ls)' koji jedu nazive datoteka s razmacima; pokrenite ga u CI-ju i bugovi prestaju dosezati cron.
  • Privremeni rad i čišćenje su upareni: TMP=$(mktemp -d), zamka 'rm -rf "$TMP"' EXIT, i nema napuštenih direktorija za ogrebotine plus nema 'ako je pogreška onda ukloni' posipanja na svakoj grani.
  • Čitaj petlju na siguran način: dok IFS= read -r -d '' f obrađuje nazive datoteka s novim redovima i razmacima preko find -print0; 'za f u $(ls)' su zastavice shellcheck-a za bug i stare skripte posvuda još uvijek postoje.
  • Izlazni kodovi i dnevnici govore o operacijama: echo neuspjehe na stderr (>&2) s umjetničkim imenom, izlaz različit od nule pri stvarnom neuspjehu i neka vam cron-ova pošta ili dnevnik pokažu jedan redak koji vam zapravo treba u 3 ujutro.
  • Rano eskalirajte: JSON parsiranje, više od tri razine ugniježđivanja, HTTP pozivi ili bilo koja logika sa statusom pripada Pythonu ili awku; bash savijen u jezik opće namjene je mjesto gdje je stekao svoju reputaciju.

Terenska bilješka

Naš ožiljak od proširenja naramenice: rm -rf "${CLEANUP}"/{a,b} s nepostavljenim CLEANUP-om proširio se točno onako kako je školjka htjela, a ne namjera. Svaka takva staza sada nosi ${VAR:?} čuvara, a nitko nije platio taj račun dvaput.

Često postavljana pitanja

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

env pobjeđuje među spremnicima i macOS instalira tamo gdje bash živi drugdje; shebang je manje važan od set -euo pipefail koji je stvarno prisutan i shellcheck prosljeđuje svaku promjenu.

Moja skripta radi ručno, ali ne uspijeva u cron-u. Zašto?

Cron radi s golim okruženjem: PATH je kratak, nema profila za prijavu, a relativni putovi pokazuju na pogrešan dom. Koristite apsolutne putanje, izričito postavite PATH i zadržite bash -x replay za otklanjanje pogrešaka.

Bash ili Python za zadatke poslužitelja?

Bash za cjevovode koji uglavnom orkestriraju postojeće sistemske alate i ostaju mali; Python za strukturirane podatke, API-je i rukovanje pogreškama koji moraju preživjeti na poziv. Prisiljavanje basha da igra Python je način na koji incidenti dobivaju imena.

Kako mogu sigurno skriptirati brisanje?

Citirajte svaku varijablu, ciljajte samo mktemp-proizvedene ili eksplicitno konfigurirane staze, pokrenite s načinom rada na suho koji ispisuje ono što bi uklonio, i pustite ${VAR:?} čuvaru da poništi varijable prije nego što ih rm vidi.

Kako Kinetikatech pomaže kod linux naredbe i vještine školjke

Iskreno, većina timova dođe do nas nakon što su prvo pokušali sami: Naredbe i navike skriptiranja koje odlučuju hoće li administrator upravljati poslužiteljem ili se boriti protiv njega: pretražujte, transformirajte, prenosite i nadzirite tekst i procese s alatima koji se nalaze u svakoj osnovnoj instalaciji. Naša usluga Sigurnost Linux servera i Upravljanje serverima postoji da se ne morate upoznavati s linux naredbe i vještine školjke na teži način; mi se brinemo o puštanju u rad, nadzoru i iznenađenjima u tri ujutro.

Razgovarajte s inženjerom

Problem sa serverom? Hakirana stranica? Sporo učitavanje?

Kritični problemi riješeni u 30 minuta — non-stop, 7 dana u tjednu.

Zatražite hitnu podršku support@kinetikatech.com