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

Linux команди и умения за командни обвивки

Bash скриптове: от „работи в моята кутия“ до производство

Bash печели мястото си, когато една задача е лепило: оркестрирайте команди, разправете прост текст и останете изцяло на кутията. Репутацията му в индустрията идва от кацането, а не от идеята: нетествани тръбопроводи, изпратени в cron на сървър, където една променлива не е зададена или едно име на файл има интервал. Дисциплината е механична и евтина и има четири части: строг режим, цитиране, shellcheck и регистриране на начина, по който операторите ще го прочетат по-късно.

Ключови точки

  1. Всеки сериозен скрипт се отваря с set -euo pipefail: ненастроените променливи са неуспешни, командните грешки спират скрипта, тръбопроводът лежи на повърхността; без него грешките преминават тихо, докато не достигнат до производство.
  2. Променливи в кавички и замествания на команди: "$var" и "$(cmd)"; разделянето на думи на интервали е класиката за всички времена, а IFS бъркането, което някои сайтове препоръчват, е грешка, която избирате да запомните.
  3. Разширяването на скоби се случва преди променливите: rm -rf "${CLEANUP:?}"/{a,b} с ненастроен CLEANUP се разширява по различен начин от предвиденото и премахва нещата, които сте искали да запазите; Проверките на ${VAR:?} са идиома за rm-безопасност, която си струва да научите веднъж.
  4. shellcheck печели своето място при всяка промяна: той улавя некотирани глобуси, недостижим код и шаблони „за f в $(ls)“, които изяждат имена на файлове с интервали; стартирайте го в CI и грешките спират да достигат cron.
  5. Временната работа и почистването са сдвоени: TMP=$(mktemp -d), прихващане 'rm -rf "$TMP"' ИЗХОД и без осиротели директории за издраскване плюс без пръски "ако е грешка, тогава премахнете" на всеки клон.
  6. Четенето зацикля по безопасния начин: докато IFS= read -r -d '' f обработва имена на файлове с нови редове и интервали чрез find -print0; 'за f в $(ls)' е флаговете за проверка на shellcheck за грешки и старите скриптове навсякъде все още носят.
  7. Кодовете за изход и регистрационните файлове говорят за операциите: ехо неуспехи към stderr (>&2) със сценично име, изход, различен от нула при реална повреда, и оставете пощата или журнала на cron да ви покаже единствения ред, от който всъщност се нуждаете в 3 сутринта.
  8. Ескалирайте рано: анализирането на JSON, три и повече нива на влагане, HTTP извиквания или всякаква логика със състояние принадлежи на Python или awk; bash, превърнат в език с общо предназначение, е мястото, където е спечелена репутацията му.

Бележка от терен

Нашият белег за разширяване на скоби: rm -rf "${CLEANUP}"/{a,b} с ненастроен CLEANUP се разшири точно по начина, по който черупката, а не намерението, искаше. Всяка пътека като тази сега носи охраната ${VAR:?} и никой не е платил тази сметка два пъти.

Често задавани въпроси

#!/bin/bash или #!/usr/bin/env bash?

env печели в контейнери и macOS се инсталира там, където bash живее другаде; shebang има по-малко значение от това, че set -euo pipefail действително присъства и shellcheck предава всяка промяна.

Моят скрипт работи ръчно, но се проваля в cron. защо

Cron работи с чиста среда: PATH е кратък, няма профил за влизане и относителните пътища сочат към грешния дом. Използвайте абсолютни пътища, задайте PATH изрично и запазете bash -x replay за отстраняване на грешки.

Bash или Python за сървърни задачи?

Bash за тръбопроводи, които предимно оркестрират съществуващи системни инструменти и остават малки; Python за структурирани данни, API и обработка на грешки, които трябва да оцелеят при повикване. Принуждаването на bash да играе на Python е начинът, по който инцидентите получават имена.

Как да направя безопасно изтриване на скрипт?

Цитирайте всяка променлива, насочете се само към създадени от mktemp или изрично конфигурирани пътеки, стартирайте с режим на сухо изпълнение, който отпечатва това, което би премахнал, и оставете ${VAR:?} да наложи вето на деактивираните променливи, преди rm да ги види.

Как Kinetikatech помага с linux команди и умения за командни обвивки

Честно казано, повечето екипи идват при нас, след като първо са опитали сами: Командите и скриптовите навици, които решават дали администраторът управлява сървър или се бори с него: търсене, трансформиране, прехвърляне и надзор на текст и процеси с инструментите, които се намират във всяка основна инсталация. Услугата ни Сигурност на Linux сървъра и Сървърна администрация съществува, за да не се запознавате с linux команди и умения за командни обвивки по трудния начин; ние се занимаваме с въвеждането, наблюдението и изненадите в три през нощта.

Говорете с инженер

Проблем със сървъра? Уебсайт хакнат? Бавно зареждане?

Критичните проблеми се разрешават за 30 минути — 24/7.

Поискайте спешна помощ support@kinetikatech.com