curl
недоступенMakefile
db
для утилит базы данных и db top
db
db
db connections
db pga
(например, pg_activity
)bin/tablet
bin/specs
bin/spec -P
Makefile
Makefile
Значки | Сканирование FOSSA | |
---|---|---|
ФОСССА | ||
CI-тесты | ||
CI-установка | ||
ШеллЧек | ||
Гиттер |
|
Bashmatic® — это среда BASH, то есть это набор функций BASH (их почти 900), которые, как мы надеемся, сделают программирование BASH проще, приятнее и, что более важно, увлекательным — благодаря тому, что библиотека ориентирована на предоставление разработчику постоянная обратная связь о происходящем, пока работает скрипт, использующий помощники Bashmatic.
Кончик | Мы предлагаем вам узнать о Bashmatic из PDF-версии этого документа, которую гораздо удобнее распечатать.
|
После установки библиотеки (по умолчанию — ~/.bashmatic
) поймите, что у вас есть выбор:
Автоматическое получение библиотеки (и всех более 900 функций) из точечных файлов вашей оболочки, таких как ~/.bash_profile
путем добавления этой строки: source ~/.bashmatic/init.sh
. На последнем ноутбуке Apple M1 это добавляет всего около 100 мс.
ИЛИ можно пропустить его во время инициализации входа в систему и загружать его только в верхней части сценариев, использующих библиотеку.
Осторожность | Оба подхода абсолютно верны и имеют свои плюсы и минусы. Загрузка bashmatic в ваши точечные файлы может быть немного рискованной. Так или иначе, мы скоро предоставим способы каждый раз проверять, что загружаемая вами версия bashmatic является безопасной и правильной. |
Все, что мы скажем по этому поводу, это то, что нам удается чертовски оптимизировать поиск библиотеки. Вот пример:
Стиль программирования Bashmatic® находится под сильным влиянием языков DSL Ruby. Если вы взглянете на скрипт is.sh, то увидите, что он определяет набор функций DSL, которые можно объединить с помощью &&
и ||
чтобы создать компактный и самодокументируемый код, например:
[стрелка круг вниз]
# An example of a DSL-like function
function bashmatic.auto-update() {
local dir= " ${1 :- " ${BASHMATIC_HOME " }} "
is.a-directory " ${dir} " && {
file.exists-and-newer-than " ${dir} /.last-update " 30 && return 0
(
cd ${BASHMATIC_HOME} &&
git.is-it-time-to-update &&
git.sync-remote
)
}
}
# check if the function is defined and call it
is.a-function.invoke bashmatic.auto-update " $@ "
Чтобы использовать его в своих собственных сценариях, вам нужно сначала изучить приведенные ниже примеры и воспользоваться преимуществами каждого модуля, доступного в lib
.
Последнее замечание: как только Bashmatic будет установлен и загружен файлами инициализации оболочки, вы можете ввести is.<tab><tab>
чтобы увидеть, какие функции, начинающиеся с is
вам доступны. Каждый модуль в lib
обычно определяет общедоступные функции, начиная с имени файла. Например, функции в array.sh
обычно начинаются с array.<something>.<action>
Bashmatic® предлагает огромный набор постоянно растущих вспомогательных функций для запуска команд, автоматической повторной попытки, повторяемой среды выполнения с измерением времени выполнения с ключевой функцией run
. Есть помощники на любой случай: от рисования полей, линий, заголовков до отображения индикаторов выполнения, получения данных от пользователя, установки пакетов и многого другого.
Примечание | Большая часть помощников Bashmatic® написана для OS-X, хотя многие полезные функции будут работать и под Linux. Весь наш набор тестов работает на Ubuntu. В настоящее время предпринимаются усилия по преобразованию функций, специфичных для Homebrew, в независимые от ОС помощники, такие как package.install , которые будут одинаково хорошо работать в Linux. |
Начните изучать Bashmatic® ниже с нашего раздела примеров. Когда вы будете готовы, полный набор общедоступных функций (около 500 из них) можно будет найти на индексной странице функций.
И, наконец, не волнуйтесь: Bashmatic® имеет полностью открытый исходный код, его можно использовать и расширять бесплатно. Нам просто нравится, как это выглядит с небольшим ® :)
БАШ версия 4+
BASH версии 3 (частичная совместимость, некоторые функции отключены)
ZSH – по состоянию на недавнее обновление Bashmatic почти на 90% совместим с ZSH.
В настоящее время не поддерживается
FISH (хотя вы можете использовать Bashmatic через помощник сценария bin/bashmatic
или его исполняемые файлы)
Этот проект родился в результате простой реализации нескольких очень старших и опытных инженеров, которая:
Зачастую проще использовать BASH для написания таких вещей, как универсальные установщики , они же сценарии установки , загрузчики , оболочки для всех видов функциональности, таких как NPM , rbenv , установка драгоценных камней, рубинов, использование AWS, развертывание кода и т. д.
Возвращаемые значения функции BASH прекрасно подходят для компактного DSL (предметно-ориентированного языка), где несколько функций могут быть связаны логическими операторами AND &&
и OR ||
чтобы обеспечить очень компактную логику выполнения. Самое главное, мы считаем, что эту логику чрезвычайно легко читать и понимать.
Несмотря на вышеизложенное, общепринято также, что:
Многие сценарии BASH написаны очень плохо, их трудно читать и понимать.
Часто бывает трудно понять, что, черт возьми, происходит во время работы скрипта, потому что он либо не выводит ничего полезного, либо выводит слишком много.
Когда возникают ошибки BASH, обычно вся фигня попадает в вентилятор, и кто-то решает, что им следует переписать 20-строчный сценарий BASH на C++ или Go, потому что, ну, это проклятый сценарий BASH, и он не работает.
Кончик | Цель Bashmatic — сделать программирование BASH увлекательным, последовательным и предоставить пользователю множество видимых результатов, чтобы не было никакой тайны в том, что происходит. |
Возможно, самый простой способ установить Bashmatic® — использовать curl
, как показано ниже.
Для начала убедитесь, что у вас установлен Curl, запустите which curl
, чтобы увидеть. Затем скопируйте/вставьте эту команду в свой терминал.
[стрелка вниз]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[стрелка вверх]
Где:
-q означает «тихо»;
-v для «многословного»
Кончик | URL-адрес https://bashmatic.re1.re перенаправляет на HEAD сценария bin/bashmatic-install в репозитории Github Bashmatic. Мы используем этот URL-адрес, чтобы в будущем сохранить возможность перенаправить установку на другой сценарий, если это будет необходимо. |
Если вы предпочитаете иметь возможность проверить сценарий перед выполнением кода, переданного прямо из Интернета, я вас не виню. Вы осторожны и умны.
Для таких людей, как вы, есть немного более безопасный способ сделать то же самое:
export script= " /tmp/install "
curl -fsSL https://bashmatic.re1.re > /tmp/install
chmod 755 /tmp/install
# At this point you can examine /tmp/install
/tmp/install --help
/tmp/install --verbose --debug # install with extra info
Этот метод позволяет вам проверить сценарий /tmp/install
перед его запуском.
Ниже приведены некоторые пояснения
Вы можете установить ветку или тег Bashmatic, передав флаг -b / --git-branch <tag|branch>
.
Вы можете передать флаги функции bashmatic-install
чтобы контролировать, как, где Bashmatic устанавливается и откуда он загружается, в том числе:
-v
или --verbose
для отображения дополнительного вывода или наоборот:
-d
или --debug
выведет дополнительный вывод отладки
-f
или --force
заменит любую существующую папку bashmatic на новую.
-q
или --quiet
для отсутствия вывода
-l
или --skip-on-login
, чтобы НЕ устанавливать перехватчик, загружающий Bashmatic при входе в систему.
Если вы предпочитаете устанавливать Bashmatic в нестандартное место (по умолчанию ~/.bashmatic
), вы можете использовать флаг -H PATH
Например, здесь мы устанавливаем Bashmatic в место назначения, отличное от стандартного, при этом печатаем дополнительную подробную и отладочную информацию, а также используем -f
(force), чтобы возможно перезаписать папку назначения (если она уже существует) с извлечением Bashmatic в соответствии с к тегу v2.4.1
:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ;
bashmatic-install -d -v -f -b v2.4.1 -H ~/workspace/bashmatic "
Если у вас установлены ключи SSH локально, а открытый ключ настроен для вашей учетной записи на Github, возможно, вы захотите установить Bashmatic, используя [email protected]:kigster/bashmatic
origin вместо https://github.com/kigster/bashmatic
:
Вот полный список опций, принимаемых установщиком:
При запуске bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install"
обычно происходит следующее:
curl
загружает сценарий bin/bashmatic-install
и передает его встроенному BASH для оценки.
После оценки вызывается функция bashmatic-install
, которая фактически выполняет установку.
Это функция, которая принимает перечисленные выше аргументы.
Сценарий может запросить ваш пароль для включения доступа sudo — это может потребоваться в OS-X для установки инструментов разработчика XCode (включая git
).
Если ваша версия BASH 3 или старше, сценарий загрузит и соберет из исходных кодов версию BASH 5+ и установит ее в /usr/local/bin/bash
. Для этого шага может потребоваться SUDO.
В OS-X сценарий установит Homebrew в OS-X, если он еще не установлен.
После установки Brew устанавливаются пакеты Brew coreutils
и gnu-sed
, поскольку оба они необходимы и используются Bashmatic.
Затем скрипт попытается git clone
репозиторий bashmatic в домашнюю папку Bashmatic или — если он уже существует — он git pull
последние изменения.
Наконец, если вы не укажете -l
или --skip-on-login
скрипт проверит ваши точечные файлы bash и добавит перехватчик для загрузки Bashmatic из ~/.bashrc
или ~/.bash_profile
.
Последняя часть требует некоторых пояснений.
Теперь вы можете загружать Bashmatic при входе в систему, а можете и не хотеть.
Другими словами, у вас в ~/.bashrc
есть что-то вроде этого:
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
Мгновенный доступ к более чем 800 удобным функциям и помощникам Bashmatic©. Bashmatic будет автоматически обновляться при каждой загрузке из основной ветки.
Задержка около 134 мс при входе в систему и потенциальный вектор атаки на безопасность (например, если кто-то взломает репозиторий).
Кончик | Недавно мы значительно улучшили время загрузки всех функций Bashmatic©. Раньше загрузка 854 функций занимала почти 900 мс, то есть почти целую секунду. Сегодня это не более 180мс: |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
Если приведенная выше команда показывает вывод, который вы видите выше, когда вы выполняете grep bashrc
или zshrc
, все функции Bashmatic будут загружены в вашу оболочку. Это может быть очень удобно, например,
вы можете вызвать ruby.install-ruby-with-readline-and-openssl 3.0.1
чтобы установить Ruby.
Вы можете вызвать gem.remote.version sym
, чтобы увидеть, что последняя опубликованная версия sym
— 3.0.1
.
Вы можете объединить массив значений с помощью array.join ", " apple pear orange
ВНИМАНИЕ. Обычно загрузка Bashmatic занимает не более 200–300 мс. Тем не менее, возможно, вам не захочется иметь в своей среде такое количество функций оболочки, поэтому в этом случае вы можете пропустить перехватчик входа в систему, передав -l
или --skip-on-login
.
Установите его с помощью:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
В этом случае мы предлагаем вам просто добавить папку bin
Bashmatic в $PATH
.
Например:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
После этого у вас появится доступ к исполняемому скрипту bashmatic
, который можно использовать *как «шлюз» ко всем функциям bashmatic:
Вы используете это так: bashmatic <function> <args>
:
Важный | В примерах ниже предполагается, что вы установили PATH , включив ${HOME}/.bashmatic/bin |
# Eg, if as in the previous example you sourced in Bashmatic:
$ bashmatic.version
2.1.2
# If you have not, you can still invoke 'bashmatic.version':
$ bashmatic version
# Or another function, 'array.join' — if you sourced in init.sh:
$ array.join ' | ' hello goodbye
hello | goodbye
# Or using the script:
$ bashmatic array.join ' | ' hello goodbye
hello | goodbye
Если вы получаете сообщение об ошибке, возможно, Bashmatic® установился неправильно.
curl
недоступен Поэтому в ситуации, когда curl
может быть недоступен, предложите следующую функцию оболочки, которая работает в системах на базе Linux/Ubuntu и OS-X. Его можно легко расширить за счет новых операционных систем:
# @description Installs bashmatic dependency into the ~/.bashmatic folder.
function install_bashmatic() {
# install bashmatic using https:// URL instead of git@
command -v curl > /dev/null || {
local OS= $( uname -s )
local code
case ${OS} in
Linux)
apt-get update -yq && apt-get install curl -yqq
code= $?
(( code )) && sudo apt-get update -yq && sudo apt-get install curl -yqq
;;
Darwin)
command -v brew > /dev/null || /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
hash -r
brew install curl
;;
* )
echo " OS ${OS} is not supported. "
;;
esac
}
[[ -d ~ /.bashmatic ]] || bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q -m https "
return 0
}
Чтобы открыть для себя широкий спектр доступных функций, введите следующую команду, чтобы просмотреть все импортированные функции оболочки:
# List all functions using 4-column mode; print top 5 lines.
❯ bashmatic functions 4 | head -5
7z.a db.psql.connect.db-set hl.yellow-on-gray run.inspect-variables
7z.install db.psql.connect.db-set hr run.inspect-variables-
7z.unzip db.psql.connect.just-d hr.colored run.inspect.set-skip-f
7z.x db.psql.connect.table- http.servers run.on-error.ask-is-en
7z.zip db.psql.connect.table- https.servers run.print-command
# or, to get the count of all functions, use 1 column output:
$ bashmatic functions 1 | wc -l
773
Чтобы установить Bashmatic вручную, выполните следующие действия (не стесняйтесь изменить BASHMATIC_HOME
, если хотите):
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
test -d " ${BASHMATIC_HOME} " ||
git clone https://github.com/kigster/bashmatic.git " ${BASHMATIC_HOME} "
cd " ${BASHMATIC_HOME} " && ./bin/bashmatic-install -v
cd - > /dev/null
Иногда вы не сможете использовать git
(я видел проблемы, начиная от несоответствия локального сертификата и заканчивая старыми версиями git и т. д.), но, возможно, вы сможете загрузить с помощью curl
. В этом случае вы можете найти последний тег (замените его на «v1.6.0» ниже), а затем выполнить следующую команду:
export BASHMATIC_TAG= " v2.4.1 "
set -e
cd ${HOME}
curl --insecure -fSsl
https://codeload.github.com/kigster/bashmatic/tar.gz/ ${BASHMATIC_TAG}
-o bashmatic.tar.gz
rm -rf .bashmatic && tar xvzf bashmatic.tar.gz && mv bashmatic- ${BASHMATIC_TAG} .bashmatic
source ~ /.bashmatic/init.sh
cd ${HOME} /.bashmatic && ./bin/bashmatic-install -v
cd ~ > /dev/null
Вы всегда можете перезагрузить Bashmatic® с помощью функции bashmatic.reload
. Это просто выполняет поиск ${BASHMATIC_HOME}/init.sh
.
Когда вы устанавливаете Bashmatic, он автоматически добавляет хук в ваш ~/.bash_profile
, но если вы используете ZSH, вам может потребоваться добавить его вручную (пока).
Добавьте следующее в ваш файл ~/.zshrc
:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
Примечание | Загрузка всей библиотеки на ZSH и последнем MacBook Pro занимает менее 300 мс. |
Makefile
Makefile
верхнего уровня в основном предоставляется для удобства, поскольку он инкапсулирует некоторые общие задачи, используемые при разработке авторами Bashmatic, а также другие, полезные для всех, кто изучает Bashmatic.
Вы можете запустить make help
и прочитать доступные цели:
❯ make
help Prints help message auto-generated from the comments.
open-readme Open README.pdf in the system viewer
docker-build Builds the Docker image with the tooling inside
docker-run-bash Drops you into a BASH session with Bashmatic Loaded
docker-run-fish Drops you into a FISH session with Bashmatic Loaded
docker-run-zsh Drops you into a ZSH session with Bashmatic Loaded
docker-run Drops you into a BASH session
file-stats-git Print all files known to ` git ls-files ` command
file-stats-local Print all non-test files and run ` file ` utility on them.
install-dev Installs the Development Tooling using dev-setup script
install-ruby Installs the Bashmatic default Ruby version using rbenv
install install BashMatic Locally in ~ /.bashmatic
release Make a new release named after the latest tag
tag Tag this commit with .version and push to remote
setup Run the comprehensive development setup on this machine
shell-files Lists every single checked in SHELL file in this repo
test Run fully automated test suite based on Bats
test-parallel Run the fully auto-g mated test suite
update-changelog Auto-generate the doc/CHANGELOG (requires GITHUB_TOKEN env var set)
update-functions Auto-generate doc/FUNCTIONS index at doc/FUNCTIONS.adoc/pdf
update-readme Re-generate the PDF version of the README
update-usage Auto-generate doc/USAGE documentation from lib shell files,
to doc/USAGE.adoc/pdf
update Runs all update targets to regenerate all PDF docs and the
Changelog.
Я добавил пробелы вокруг набора общих задач, которые могут оказаться вам полезными.
Давайте кратко рассмотрим, что здесь доступно.
Makefile предоставляется для удобства выполнения наиболее распространенных задач и для упрощения выполнения некоторых более сложных задач, требующих запоминания множества аргументов, таких как make setup
. Возможно, вам захочется использовать Makefile по нескольким причинам:
make open-readme
Эта задача открывает PDF-версию README в вашей системе просмотра PDF.
make install
Это позволит вам установить Bashmatic Framework локально. Он просто запускает скрипт bin/bashmatic-install
. В лучшем случае это добавит перехватчики в файлы инициализации вашей оболочки, чтобы Bashmatic загружался при входе в систему.
make setup
Эта задача запускает встроенный сценарий bin/dev-setup
, чтобы вы могли настроить локальный компьютер разработчика для разработки программного обеспечения.
Теперь этот сценарий предлагает очень богатый интерфейс CLI, поэтому вы можете либо запустить сценарий напрямую и иметь детальный контроль над тем, что он делает, либо вы можете запустить его с флагами по умолчанию через эту цель make.
Эта конкретная цель make запускает сценарий bin/dev-setup
со следующими действиями:
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
и make test-parallel
предназначены для разработчиков и участников Bashmatic. Пожалуйста, ознакомьтесь с разделом «Содействие» о том, как запускать UNIT-тесты и чего ожидать от них.
make update
— это задача, которую должны запускать участники библиотеки после того, как они внесли свои изменения и хотят, чтобы автоматически созданная документация отражала добавленные новые функции и так далее, и так далее. Эти задачи также создают индекс функции, повторно создают последние PDF-файлы README
, USAGE
или CHANGELOG
.
Примечание | Для отправки любого запроса на включение требуется запуск make update . |
Bashmatic поставляется с файлом Dockerfile, который можно использовать для запуска тестов или ручной проверки различных функций под Linux и, возможно, для экспериментов.
Запустите make docker-build
, чтобы создать образ docker bashmatic:latest
.
Запустите make docker-run-bash
(или …-zsh
или …-fish
), чтобы запустить контейнер с вашей любимой оболочкой, а затем проверьте, работают ли ваши функции должным образом.
Обратите внимание, что это привело меня прямо к приглашению среды Linux с уже установленным Bashmatic.
Зачем нам нужен еще один фреймворк BASH?
Известно, что BASH слишком многословен и ненадежен. Мы позволим себе не согласиться. Вот почему мы хотели начать этот README с пары примеров.
Просто посмотрите на этот крошечный пятистрочный скрипт:
#! /usr/bin/env bash
source ${BASHMATIC_HOME} /init.sh
h2 " Installing ruby gem sym and brew package curl... "
" Please standby... "
gem.install " sym " && brew.install.package " curl " &&
success " installed sym ruby gem, version $( gem.version sym ) "
Результаты в этом подробном и, будем честны, великолепном выводе ASCII:
Скажите, вы совсем не в восторге от возможности сразу начать писать сложные процессы установки на BASH?
Вы не только получаете красивый результат, но и можете узнать каждую выполненную команду, ее статус завершения, была ли она успешной (зеленый/красный), а также чертову продолжительность каждой команды в миллисекундах. Что не нравится?!?
Все еще не убеждены?
Далее рассмотрим более подробный пример.
В этом примере мы загрузим и установим двоичные файлы kubectl
и minikube
в /usr/local/bin
Мы предоставили пример сценария в examples/k8s-installer.sh
. Пожалуйста, нажмите и посмотрите на источник.
Вот результат запуска этого скрипта:
Почему мы считаем этот тип установщика довольно крутым по сравнению с тихим, но смертоносным скриптом оболочки, который написал «Джим в углу» и теперь никто не понимает?
Потому что:
Скрипт изо всех сил старается сообщить пользователю, что он делает.
Позволяет и напоминает о чистом отдыхе (Ctrl-C)
Он сообщает точную команду, которую выполняет, и ее время, чтобы вы могли наблюдать за такими проблемами, как перегрузка сети, сетевые адреса и т. д.
Зеленый код выхода «0» отображается для каждой команды. Если какая-либо из команд не удастся выполнить, вы увидите ее красным цветом.
Его исходный код краток, ясен и легко читается. Никакого волшебства. Просто функции BASH.
Примечание | Если вам нужно создать установщик BASH, Bashmatic® предлагает невероятную экономию времени. |
Давайте вернемся на Землю и сразу поговорим о том, как установить Bashmatic, и как им пользоваться более подробно.
Этот последний и наиболее многофункциональный пример — не просто пример — это работающий инструмент, который можно использовать для установки множества зависимостей разработчика на ваш ноутбук Apple .
Примечание | сценарий за кулисами опирается на Homebrew и поэтому не будет работать в Linux или Windows (если Brew не будет перенесен туда). |
Он расположен в bin/dev-setup
и имеет множество флагов CLI:
В приведенном ниже примере мы будем использовать сценарий dev-setup
для установки следующего:
Инструменты разработки
PostgreSQL
Редис
Мемкеш
Рубин 2.7.1
NodeJS/NPM/Ярн
Несмотря на то, что это длинный список, мы можем установить все это одной командой.
Мы запустим это из папки, в которой установлено наше приложение, потому что тогда версия Ruby будет автоматически определена из нашего файла .ruby-version
, и в дополнение к установке всех зависимостей скрипт также запустит bundle install
и npm install
(или yarn install
). Неплохо, да?
${BASHMATIC_HOME} /bin/dev-setup
-g " ruby postgres mysql caching js monitoring "
-r $( cat .ruby-version )
-p 9.5 # use PostgreSQL version 9.5
-m 5.6 # use MySQL version 5.6
Эта компактная командная строка устанавливает массу вещей, но не верьте нам на слово — запустите ее самостоятельно. Или, по крайней мере, наслаждайтесь этим чрезвычайно длинным скриншотом :)
Это отличный инструмент, который раскрашивает результаты практически любого другого инструмента.
Запустите это так:
${BASHMATIC_HOME} /bin/install-grc
Возможно, вам придется ввести пароль для SUDO.
После завершения запустите source ~/.bashrc
(или любую другую оболочку, которую вы используете) и введите что-то вроде ls -al
или netstat -rn
или ping 1.1.1.1
и обратите внимание, как все вышеперечисленное красиво окрашено.
db
для утилит базы данных и db top
Если вы используете PostgreSQL, вам повезло! Bashmatic включает в себя множество помощников для утилиты CLI PostreSQL psql
.
Примечание | Прежде чем начать, мы рекомендуем вам установить файл .psqlrc из каталога conf Bashmatic в вашу домашнюю папку. Хотя этот файл не является обязательным, он настраивает приглашение и различные макросы для PostgreSQL, которые будут очень полезны, если вы регулярно используете psql . |
Что вообще такое db top
?
Как и в случае с обычным top
вы можете видеть «самые» ресурсоемкие процессы, запущенные в вашей локальной системе, с помощью dbtop
вы можете наблюдать самообновляющийся отчет об активно выполняемых запросах на трех серверах баз данных одновременно.
Вот пиксельный скриншот работы dbtop
с двумя действующими базами данных:
Чтобы это работало, вы должны сначала определить параметры подключения к базе данных в файле YAML, расположенном по следующему пути: ~/.db/database.yml
.
Вот как должен быть организован файл (если вы когда-либо использовали Ruby on Rails, стандартный файл config/database.yml
должен быть полностью совместим):
development :
database : development
username : postgres
host : localhost
password :
staging :
database : staging
username : postgres
host : staging.db.example.com
password :
production :
database : production
username : postgres
host : production.db.example.com
password : " a098098safdaf0998ff79789a798a7sdf "
Учитывая приведенный выше файл, вы сможете запустить следующую команду, чтобы просмотреть все доступные (зарегистрированные в приведенном выше файле YAML) соединения:
$ db connections
development
staging
production
Как только это заработает, вы сможете запустить dbtop
: