#!/bin/bash instancia_dir=$HOME/.local/var/pgsql/instancia01 data_dir=$instancia_dir/data conf_file=$data_dir/postgresql.conf work_dir="$(pwd)" cd $instancia_dir case "$1" in "start") echo -e "\n -> pg_ctl -D data --log postgresql.log start ..." echo pg_ctl -D data --log postgresql.log start echo ;; "stop") echo -e "\n -> pg_ctl -D data stop ..." echo pg_ctl -D data stop echo ;; "restart") echo -e "\n -> pg_ctl -D data stop ..." echo pg_ctl -D data stop sleep 3 echo -e "\n -> pg_ctl -D data --log postgresql.log start ..." echo pg_ctl -D data --log postgresql.log start echo ;; "reload") echo -e "\n -> pg_ctl -D data reload ..." echo pg_ctl -D data reload echo ;; "status") echo -e "\n -> pg_ctl -D data status" echo pg_ctl -D data status if [ $? -eq 0 ]; then echo -e "\n -> ps aux | grep postgres" echo ps aux | grep postgres | grep -v grep | grep -v $(basename $0) echo -e "\n -> ss -plutn | grep postgres" echo ss -plutn 2>/dev/null | grep postgres | column --table echo else echo exit 1 fi ;; "config") if [ ! -f ${conf_file} ]; then echo -e "\n -> Error, ${conf_file} does not exists." exit 1 fi echo -e "\n -> config: ${conf_file}" echo conf_options="listen_addresses port max_connections superuser_reserved_connections unix_socket_directories unix_socket_group unix_socket_permissions authentication_timeout ssl password_encryption logging_collector log_directory log_filename client_encoding lc_messages lc_monetary lc_numeric lc_time default_text_search_config" for conf_option in ${conf_options}; do grep -E "${conf_option} *=" ${conf_file} | sed 's/.#.*$//' | sed 's/^/\t/' done echo ;; "connect") $0 status 1>/dev/null 2>/dev/null || exit 1 shift dbname=postgres if [ -n "$1" ]; then dbname="$1" fi shift psql_host="$(grep -E "listen_addresses *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" psql_port="$(grep -E "port *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" echo -e "\n -> connect: psql --host=$psql_host --port=$psql_port -d $dbname $@" echo psql --host=$psql_host --port=$psql_port -d $dbname $@ echo ;; "execute") $0 status 1>/dev/null 2>/dev/null || exit 1 shift dbname=postgres if [ -n "$1" ]; then dbname="$1" shift fi query="$@" if [ -z "$query" ]; then exit 1 fi psql_host="$(grep -E "listen_addresses *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" psql_port="$(grep -E "port *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" echo -e "\n -> connect: psql --host=$psql_host --port=$psql_port -d $dbname -q -c \"$query\"" echo PAGER=cat psql --host=$psql_host --port=$psql_port -d $dbname -q -c "$query" echo ;; "load") $0 status 1>/dev/null 2>/dev/null || exit 1 shift dbname=postgres if [ -n "$1" ]; then dbname="$1" shift fi filename="" if [ -f "$1" ]; then filename="$1" fi if [ -f "$work_dir/$1" ]; then filename="$work_dir/$1" fi if [ -z "$filename" ]; then exit 1 fi shift psql_host="$(grep -E "listen_addresses *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" psql_port="$(grep -E "port *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" echo -e "\n -> connect: psql --host=$psql_host --port=$psql_port -d $dbname -f $filename $@" echo psql --host=$psql_host --port=$psql_port -d $dbname -f $filename $@ echo ;; "connections") $0 status 1>/dev/null 2>/dev/null || exit 1 query="select datname, usename, application_name, client_addr, client_port, state, query from pg_stat_activity" $0 execute postgres "$query" ;; "jdbc") shift dbname=postgres if [ -n "$1" ]; then dbname="$1" shift fi psql_host="$(grep -E "listen_addresses *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" psql_port="$(grep -E "port *=" ${conf_file} | sed 's/.*=//' | sed 's/\t.*$//' | xargs)" echo echo "jdbc:postgresql://$psql_host:$psql_port/$dbname" echo ;; *) echo "Usage: $(basename $0) [start|stop|restart|reload|status|config|connect|execute|load|connections|jdbc]" ;; esac