curl
não está disponívelMakefile
db
para utilitários de banco de dados e db top
db
db
db connections
de subcomandodb pga
(por exemplo, pg_activity
)bin/tablet
bin/specs
fornecidobin/spec -P
Makefile
Makefile
Emblemas | Digitalização FOSSA | |
---|---|---|
FOSSSA | ||
Testes de CI | ||
Instalação de CI | ||
ShellCheck | ||
Gitter |
|
Bashmatic® é uma estrutura BASH, o que significa que é uma coleção de funções BASH (quase 900 delas) que, esperamos, tornam a programação BASH mais fácil, mais agradável e, mais importante, divertida - devido ao foco da biblioteca em fornecer ao desenvolvedor um feedback constante sobre o que está acontecendo, enquanto um script que usa os auxiliares do Bashmatic está em execução.
Dica | Sugerimos que você aprenda sobre o Bashmatic na versão PDF deste documento, que é muito melhor para impressão.
|
Depois de instalar a biblioteca (o local padrão é ~/.bashmatic
), perceba que você pode escolher entre:
Obtendo automaticamente a biblioteca (e todas as mais de 900 funções) de seus 'dotfiles' shell como ~/.bash_profile
adicionando esta linha: source ~/.bashmatic/init.sh
. Em um laptop M1 Apple recente, isso adiciona cerca de 100 ms no total.
OU, pode ignorá-lo durante a inicialização do login , e carregá-lo apenas no topo dos scripts que utilizam a biblioteca.
Cuidado | Ambas as abordagens são absolutamente válidas e têm seus prós e contras. Carregar o bashmatic em seus dotfiles pode ser um pouco arriscado. De uma forma ou de outra, em breve forneceremos maneiras de verificar se o bashmatic que você baixou é sempre a versão segura e correta. |
Tudo o que diremos sobre esse assunto é que gerenciamos e otimizamos o fornecimento da biblioteca. Aqui está um exemplo:
O estilo de programação do Bashmatic® é fortemente influenciado pelas linguagens DSL do Ruby. Se você der uma olhada rápida no script is.sh, ele define um monte de funções DSL que podem ser encadeadas com &&
e ||
para criar um código compacto e autodocumentado como este:
[seta circulando para baixo]
# 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 " $@ "
Para usá-lo em seus próprios scripts, primeiro você deve estudar os exemplos fornecidos abaixo e aproveitar cada módulo disponível em lib
.
Nota final: depois que o Bashmatic estiver instalado e carregado pelos arquivos init do shell, você poderá digitar is.<tab><tab>
para ver quais funções estão disponíveis para você que começam com is
. Cada módulo em lib
normalmente define funções públicas começando com o nome do arquivo. Por exemplo, funções em array.sh
normalmente começam com array.<something>.<action>
Bashmatic® oferece uma enorme variedade de funções auxiliares cada vez maiores para executar comandos, repetição automática, estrutura de execução repetível e de medição de tempo de execução com a função principal run
. Existem ajudantes para todas as ocasiões, desde desenhar caixas, linhas, cabeçalhos até mostrar barras de progresso, obter informações do usuário, instalar pacotes e muito mais.
Observação | Uma boa parte dos auxiliares do Bashmatic® são escritos para OS-X, embora muitas funções úteis também funcionem no Linux. Todo o nosso conjunto de testes é executado no Ubuntu. Há um esforço em andamento para converter funções específicas do Homebrew em auxiliares neutros em termos de sistema operacional, como package.install , que funcionariam igualmente bem no Linux. |
Comece a explorar o Bashmatic® abaixo com nossa seção de exemplos. Quando estiver pronto, o conjunto completo de funções públicas (quase 500 delas) pode ser encontrado na página de índice de funções.
E, finalmente, não se preocupe, o Bashmatic® é totalmente de código aberto e gratuito para uso e extensão. Simplesmente gostamos do seu aspecto com um pouco de ® :)
BASH versão 4+
BASH versão 3 (compatibilidade parcial, algumas funções estão desativadas)
ZSH – na atualização recente, o Bashmatic é quase 90% compatível com o ZSH.
Atualmente sem suporte
FISH (embora você possa usar o Bashmatic via auxiliar de script bin/bashmatic
ou seus executáveis)
Este projeto nasceu de uma simples realização feita por vários engenheiros seniores e altamente experientes, que:
Muitas vezes é mais fácil usar o BASH para escrever coisas como instaladores universais, também conhecidos como scripts de configuração , uploaders , wrappers para todos os tipos de funcionalidades, como NPM , rbenv , instalação de gemas, rubis, uso de AWS, implantação de código, etc.
Os valores de retorno da função BASH se prestam perfeitamente a uma DSL compacta (linguagem específica de domínio), onde múltiplas funções podem ser encadeadas por AND &&
e OR ||
para fornecer uma lógica de execução muito compacta. Mais importante ainda, pensamos que esta lógica é extremamente fácil de ler e compreender.
Apesar dos pontos acima, também é geralmente aceito que:
Muitos scripts BASH são muito mal escritos e difíceis de ler e entender.
Muitas vezes é difícil entender o que diabos está acontecendo enquanto o script está em execução, porque ou não está gerando nada útil OU está gerando muita coisa.
Quando ocorrem erros de BASH, a merda geralmente atinge o ventilador e alguém decide que deveria reescrever o script BASH de 20 linhas em C++ ou Go, porque, bem, é um maldito script BASH e não está funcionando.
Dica | O objetivo do Bashmatic é tornar a programação BASH divertida, consistente e fornecer bastante saída visível ao usuário, para que não haja mistério sobre o que está acontecendo. |
Talvez a maneira mais fácil de instalar o Bashmatic® seja usando curl
conforme mostrado abaixo.
Primeiro, certifique-se de ter o Curl instalado, execute which curl
para ver. Em seguida, copie/cole este comando em seu Terminal.
[seta para baixo]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[seta para cima]
Onde:
-q significa "quieto";
-v para "detalhado"
Dica | A URL https://bashmatic.re1.re redireciona para o HEAD do script bin/bashmatic-install no Github Bashmatic Repo. Usamos esse URL para podermos redirecionar a instalação para um script diferente no futuro, se necessário. |
Se você preferir examinar o script antes de executar o código enviado diretamente da Internet, não o culpo. Você é cauteloso e inteligente.
Para pessoas como você, aqui está uma maneira um pouco mais segura de fazer a mesma coisa:
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
Este método permite examinar o script /tmp/install
antes de executá-lo.
Abaixo estão algumas das explicações
Você pode instalar um branch ou tag do Bashmatic passando o sinalizador -b / --git-branch <tag|branch>
.
Você pode passar sinalizadores para a função bashmatic-install
para controlar como, onde o Bashmatic é instalado e de onde ele é baixado, incluindo:
-v
ou --verbose
para exibir saída adicional ou o oposto:
-d
ou --debug
imprimirá saída de depuração adicional
-f
ou --force
substituirá qualquer pasta bashmatic existente pela nova
-q
ou --quiet
para nenhuma saída
-l
ou --skip-on-login
para NÃO instalar o gancho que carrega o Bashmatic no login.
Se você preferir instalar o Bashmatic em um local não padrão (o padrão é ~/.bashmatic
), você pode usar o sinalizador -H PATH
Por exemplo, aqui estamos instalando o Bashmatic em um destino não padrão, enquanto imprimimos informações adicionais detalhadas e de depuração, bem como usamos -f
(forçar) para possivelmente substituir a pasta de destino (se ela já existir) com um checkout do Bashmatic de acordo para uma tag v2.4.1
:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ;
bashmatic-install -d -v -f -b v2.4.1 -H ~/workspace/bashmatic "
Se você tiver suas chaves SSH instaladas localmente e a chave pública tiver sido configurada com sua conta no Github, você pode querer instalar o Bashmatic usando [email protected]:kigster/bashmatic
origin, em vez do https://github.com/kigster/bashmatic
:
Aqui está a lista completa de opções aceitas pelo instalador:
Quando você executa bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install"
, normalmente acontece o seguinte:
curl
baixa o script bin/bashmatic-install
e o passa para o BASH integrado para avaliação.
Uma vez avaliada, a função bashmatic-install
é invocada, que realmente executa a instalação.
Esta é a função que aceita os argumentos listados acima.
O script pode solicitar sua senha para ativar o acesso sudo - isso pode ser necessário no OS-X para instalar as ferramentas do desenvolvedor XCode (que incluem git
)
Se a sua versão do BASH for 3 ou anterior, o script irá baixar e compilar a partir das fontes da versão 5+ do BASH e instalá-lo em /usr/local/bin/bash
. SUDO pode ser necessário para esta etapa.
No OS-X, o script instalará o Homebrew no OS-X, se ainda não estiver instalado.
Depois que o Brew é instalado, os pacotes brew coreutils
e gnu-sed
são instalados, pois ambos são necessários e dependem do Bashmatic.
O script tentará então git clone
o repositório bashmatic na pasta inicial do Bashmatic ou - se já existir - fará git pull
das alterações mais recentes.
Finalmente, a menos que você especifique -l
ou --skip-on-login
o script verificará seus arquivos bash dot e adicionará o gancho para carregar o Bashmatic de ~/.bashrc
ou ~/.bash_profile
.
A última parte pode exigir alguma explicação.
Agora, você pode ou não querer carregar o Bashmatic no login.
Em outras palavras, você tem algo assim em seu ~/.bashrc
:
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
Acesso instantâneo a mais de 800 funções de conveniência que o Bashmatic© oferece e ajudantes. O Bashmatic será atualizado automaticamente sempre que for carregado no branch principal.
Atraso de cerca de 134 ms no login e um potencial vetor de ataque à segurança (por exemplo, se alguém hackear o repositório).
Dica | Recentemente, melhoramos drasticamente o tempo de carregamento de todas as funções do Bashmatic©. Anteriormente, eram necessários quase 900 ms, quase um segundo inteiro, para carregar 854 funções. Hoje não passa de 180ms: |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
Se o comando acima mostrar a saída que você vê acima, quando você usar o grep em seu bashrc
ou zshrc
, todas as funções Bashmatic serão carregadas em seu shell. Isto poderia ser muito conveniente, por exemplo,
você pode invocar ruby.install-ruby-with-readline-and-openssl 3.0.1
para instalar o Ruby.
Você poderia invocar gem.remote.version sym
para ver se a última versão publicada de sym
é 3.0.1
.
Você poderia juntar uma matriz de valores com array.join ", " apple pear orange
AVISO: O Bashmatic normalmente não leva mais do que 200-300 ms para carregar. Dito isto, talvez você não queira ter tantas funções de shell em seu ambiente; nesse caso, você pode pular o gancho de login passando -l
ou --skip-on-login
.
Instale-o com:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
Neste caso sugerimos que você simplesmente adicione a pasta bin
do Bashmatic ao $PATH
.
Por exemplo:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
Então você terá acesso ao script executável bashmatic
que pode ser usado *como um "gateway" para todas as funções bashmatic:
Você usa assim: bashmatic <function> <args>
:
Importante | Os exemplos abaixo pressupõem que você definiu o PATH para incluir ${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
Se você receber um erro, talvez o Bashmatic® não tenha sido instalado corretamente.
curl
não está disponível Portanto, para situações em que curl
pode não estar disponível, ofereça a seguinte função shell que funciona em sistemas baseados em Linux/Ubuntu e OS-X. Pode ser facilmente estendido com novos sistemas operacionais:
# @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
}
Para descobrir a variedade de funções disponíveis, digite o seguinte comando para ver todas as funções de shell importadas:
# 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
Para instalar o Bashmatic manualmente, siga estas etapas (sinta-se à vontade para alterar BASHMATIC_HOME
se desejar):
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
Às vezes, você pode não conseguir usar git
(vi problemas que variam desde incompatibilidade de certificado local até versões antigas do git e muito mais), mas talvez consiga fazer download com curl
. Nesse caso, você pode procurar a tag mais recente (substitua "v1.6.0" abaixo por essa tag) e, em seguida, emitir este comando:
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
Você sempre pode recarregar o Bashmatic® com a função bashmatic.reload
. Isso simplesmente realiza o fornecimento de ${BASHMATIC_HOME}/init.sh
.
Quando você instala o Bashmatic, ele adiciona automaticamente um gancho ao seu ~/.bash_profile
, mas se você estiver no ZSH, pode ser necessário adicioná-lo manualmente (por enquanto).
Adicione o seguinte ao seu arquivo ~/.zshrc
:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
Observação | A biblioteca inteira leva menos de 300 ms para carregar no ZSH e em um MacBook Pro recente. |
Makefile
O Makefile
de nível superior é fornecido principalmente como uma conveniência, pois encapsula algumas tarefas comuns usadas no desenvolvimento por autor(es) Bashmatic, bem como outras úteis para qualquer pessoa que explore o Bashmatic.
Você pode executar make help
e ler os alvos disponíveis:
❯ 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.
Adicionei espaços em branco em torno de um conjunto de tarefas comuns que podem ser úteis.
Vamos dar uma olhada rápida no que está disponível aqui.
Makefile é fornecido como uma conveniência para executar as tarefas mais comuns e para simplificar a execução de algumas tarefas mais complexas que exigem a lembrança de muitos argumentos, como make setup
. Você pode querer usar o Makefile por vários motivos:
make open-readme
Esta tarefa abre a versão PDF do README no visualizador do sistema PDF.
make install
Isso permite que você instale o Bashmatic Framework localmente. Ele simplesmente executa o script bin/bashmatic-install
. No máximo, isso adicionará ganchos aos arquivos init do shell para que o Bashmatic seja carregado no login.
make setup
Esta tarefa invoca o script bin/dev-setup
nos bastidores, para que você possa configurar a configuração do desenvolvedor do seu computador local para desenvolvimento de software.
Agora, esse script oferece uma interface CLI muito rica, para que você possa executar o script diretamente e ter um controle refinado sobre o que ele está fazendo ou executá-lo com sinalizadores padrão por meio deste make target.
Este make target específico executa o script bin/dev-setup
com as seguintes ações:
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
e make test-parallel
são destinados a desenvolvedores e colaboradores do Bashmatic. Consulte a seção Contribuindo sobre como executar e o que esperar dos testes UNIT.
make update
é a tarefa que deve ser executada pelos contribuidores da biblioteca depois de terem feito suas alterações e desejarem que a documentação gerada automaticamente reflita as novas funções adicionadas e assim por diante e assim por diante. Esta tarefa também gera o índice da função, gera novamente os PDFs mais recentes dos arquivos README
, USAGE
ou CHANGELOG
.
Observação | A execução de make update é necessária para enviar qualquer solicitação pull. |
Bashmatic vem com um Dockerfile que pode ser usado para executar testes ou apenas validar manualmente várias funcionalidades no Linux e, possivelmente, para experimentar.
Execute make docker-build
para criar uma imagem docker bashmatic:latest
.
Execute make docker-run-bash
(ou …-zsh
ou …-fish
) para iniciar um contêiner com seu shell favorito e, em seguida, valide se suas funções funcionam conforme o esperado.
Observe como isso me levou diretamente ao prompt do ambiente Linux com o Bashmatic já instalado.
Por que precisamos de outra estrutura BASH?
O BASH é conhecido por ser muito detalhado e não confiável. Pedimos para diferir. É por isso que queríamos começar este README com alguns exemplos.
Basta olhar para este pequeno script de cinco linhas:
#! /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 ) "
Resultados nesta saída ASCII detalhada e, sejamos honestos, linda :
Diga-me que você não está nem um pouco animado para começar a escrever fluxos de instalação complexos no BASH imediatamente?
Você não apenas obtém uma saída bonita, mas também pode cada comando executado, seu status de saída, se foi bem-sucedido (verde/vermelho), bem como a duração sangrenta de cada comando em milissegundos. O que há para não gostar?!?
Ainda não está convencido?
Dê uma olhada em um exemplo mais abrangente a seguir.
Neste exemplo, baixaremos e instalaremos os binários kubectl
e minikube
em /usr/local/bin
Fornecemos um script de exemplo em examples/k8s-installer.sh
. Clique e dê uma olhada na fonte.
Aqui está o resultado da execução deste script:
Por que achamos que esse tipo de instalador é incrível, comparado a um shell script silencioso, mas mortal, que "Jim-in-the-corner" escreveu e agora ninguém entende?
Porque:
O script faz de tudo para comunicar demais o que faz ao usuário.
Permite e lembra sobre uma fuga limpa (Ctrl-C)
Ele compartilha o comando exato que executa e seus tempos para que você possa observar problemas como congestionamentos de rede ou endereços de rede, etc.
Ele mostra em verde o código de saída '0' de cada comando. Se algum dos comandos falhar, você verá em vermelho.
Seu código-fonte é conciso, explícito e fácil de ler. Não há mágica. Apenas funções BASH.
Observação | Se você precisar criar um instalador BASH, o Bashmatic® oferece uma economia de tempo incrível. |
Vamos voltar à Terra e falar sobre como instalar o Bashmatic e como usá-lo com mais detalhes logo em seguida.
Este exemplo final e mais rico em recursos não é apenas um exemplo – é uma ferramenta funcional que pode ser usada para instalar várias dependências de desenvolvedor em seu laptop Apple .
Observação | o script depende do Homebrew nos bastidores e, portanto, não funcionaria no Linux ou no Windows (a menos que o Brew seja portado para lá). |
Ele está localizado em bin/dev-setup
e possui muitos sinalizadores CLI:
No exemplo abaixo usaremos o script dev-setup
para instalar o seguinte:
Ferramentas de desenvolvimento
PostgreSQL
Redis
Memcached
Rubi 2.7.1
NodeJS/NPM/Yarn
Apesar de a lista ser longa, podemos instalar tudo em um comando.
Executaremos isso a partir de uma pasta onde nossa aplicação está instalada, pois então a versão Ruby será detectada automaticamente em nosso arquivo .ruby-version
, e além de instalar todas as dependências o script também executará bundle install
e npm install
(ou yarn install
). Nada mal, hein?
${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
Esta linha de comando compacta instala muitas coisas, mas não acredite apenas em nossa palavra - execute você mesmo. Ou, pelo menos, aproveite esta captura de tela extremamente longa :)
Esta é uma ótima ferramenta que colore a saída de quase qualquer outra ferramenta.
Execute assim:
${BASHMATIC_HOME} /bin/install-grc
Pode ser necessário inserir sua senha para SUDO.
Depois de concluído, execute source ~/.bashrc
(ou qualquer shell que você use) e digite algo como ls -al
ou netstat -rn
ou ping 1.1.1.1
e observe como todos os itens acima estão bem coloridos.
db
para utilitários de banco de dados e db top
Se você usa PostgreSQL, está com sorte! Bashmatic inclui vários auxiliares para o utilitário CLI do PostreSQL psql
.
Observação | Antes de começar, recomendamos que você instale o arquivo .psqlrc do diretório conf do Bashmatic em sua pasta pessoal. Embora não seja obrigatório, este arquivo configura seu prompt e várias macros para PostgreSQL que serão muito úteis se você usar psql com alguma regularidade. |
Afinal, o que é db top
?
Assim como com o top
normal, você pode ver os "principais" processos que consomem recursos em execução no seu sistema local, com dbtop
você pode observar um relatório de atualização automática das consultas em execução ativa em até três servidores de banco de dados ao mesmo tempo.
Aqui está a captura de tela pixelada do dbtop
rodando em dois bancos de dados ativos:
Para que isso funcione, você deve primeiro definir os parâmetros de conexão do banco de dados em um arquivo YAML localizado no seguinte PATH: ~/.db/database.yml
.
Aqui está como o arquivo deve ser organizado (se você já usou Ruby on Rails, o arquivo padrão config/database.yml
deve ser totalmente compatível):
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 "
Dado o arquivo acima, você poderá executar o seguinte comando para ver todas as conexões disponíveis (registradas no arquivo YAML acima):
$ db connections
development
staging
production
Quando isso estiver funcionando, você poderá executar dbtop
: