PostgreSQL Start and Stop Shell Script | Devops Junction

In this quick article, we are presenting you with the shell script to start and stop PostgreSQL DB instance.

You can use these scripts as part of rc.d or init.dto be executed during the server shutdown and boot up.

Feel free to modify it further to suit your needs. Hope this helps.

Shell script to STOP PostgreSQL instance

You need to update a few key values on the script before executing.

  • PATH - the path where the PostgreSQL binaries are present
  • PGDATA - Data directory of your Postgres DB instance
  • PG_LOG_FILE - log file location for this DB instance.
#!/usr/bin/env bash
# script to stop Postgres Database
export PATH=/cdwapps/local/pgsql/bin:$PATH
export PGDATA=/cdwsapps/airflow/database
PG_LOG_FILE=/cdwapps/airflow/logs/postgres.log
num_trys=0
while [[ ${num_trys} -lt 3 ]];do
if ! pg_ctl status; then
echo -e "postgre is running for PGDATA Location ${PGDATA} \n"
echo -e "Attempt: ${num_trys} to stop..."
pg_ctl stop -D ${PGDATA} -t 180
if [ $? -eq 0 ]
then
echo -e "Stop command Successful."
else
echo -e "Stop command Failed"
fi
echo -e "Waiting 30 seconds for DB Gracefully shutdown..."
sleep 30
if ! pg_ctl status; then
echo -e "PG ${PGDATA} has been stopped successfully..."
break
fi
((num_trys++))
else
break
fi
done
#!/usr/bin/env bash # script to stop Postgres Database export PATH=/cdwapps/local/pgsql/bin:$PATH export PGDATA=/cdwsapps/airflow/database PG_LOG_FILE=/cdwapps/airflow/logs/postgres.log num_trys=0 while [[ ${num_trys} -lt 3 ]];do if ! pg_ctl status; then echo -e "postgre is running for PGDATA Location ${PGDATA} \n" echo -e "Attempt: ${num_trys} to stop..." pg_ctl stop -D ${PGDATA} -t 180 if [ $? -eq 0 ] then echo -e "Stop command Successful." else echo -e "Stop command Failed" fi echo -e "Waiting 30 seconds for DB Gracefully shutdown..." sleep 30 if ! pg_ctl status; then echo -e "PG ${PGDATA} has been stopped successfully..." break fi ((num_trys++)) else break fi done
#!/usr/bin/env bash
# script to stop Postgres Database

export PATH=/cdwapps/local/pgsql/bin:$PATH

export PGDATA=/cdwsapps/airflow/database

PG_LOG_FILE=/cdwapps/airflow/logs/postgres.log

num_trys=0

while [[ ${num_trys} -lt 3 ]];do
    if ! pg_ctl status; then
        echo -e "postgre is running for PGDATA Location ${PGDATA} \n"
        echo -e "Attempt: ${num_trys} to stop..."

        pg_ctl stop -D ${PGDATA} -t 180

        if [ $? -eq 0 ]
        then
            echo -e "Stop command Successful."
        else
            echo -e "Stop command Failed"
        fi

        echo -e "Waiting 30 seconds for DB Gracefully shutdown..."
        sleep 30

        if ! pg_ctl status; then
            echo -e "PG ${PGDATA} has been stopped successfully..."
            break
        fi
        
        ((num_trys++))
    else
        break
    fi
done


 

Shell script to start PostgreSQL instance

you need to update the following variables before using the script

  • PATH - the path where the PostgreSQL binaries are present
  • PGDATA - Data directory of your Postgres DB instance
  • PG_LOG_FILE - log file location for this DB instance.

 

#!/usr/bin/env bash
export PATH=/usr/lib/postgresql/10/bin:$PATH
export PGDATA=/var/lib/postgresql/10/main
PG_LOG_FILE=/tmp/postgres.log
num_trys=0
while [[ ${num_trys} -lt 3 ]];do
if pg_ctl status; then
echo -e "postgre is running for PGDATA Location ${PGDATA} \n"
break
else
((num_trys++))
echo -e "Airflow PG ${PGDATA} not running \n"
echo -e "Attempt: ${num_trys} to restart..."
pg_ctl start -D ${PGDATA} -l ${PG_LOG_FILE}
echo -e "Waiting 30 seconds for DB to come up..."
sleep 30
if pg_ctl status; then
echo -e "PG ${PGDATA} has been started successfully..."
break
fi
fi
done
#!/usr/bin/env bash export PATH=/usr/lib/postgresql/10/bin:$PATH export PGDATA=/var/lib/postgresql/10/main PG_LOG_FILE=/tmp/postgres.log num_trys=0 while [[ ${num_trys} -lt 3 ]];do if pg_ctl status; then echo -e "postgre is running for PGDATA Location ${PGDATA} \n" break else ((num_trys++)) echo -e "Airflow PG ${PGDATA} not running \n" echo -e "Attempt: ${num_trys} to restart..." pg_ctl start -D ${PGDATA} -l ${PG_LOG_FILE} echo -e "Waiting 30 seconds for DB to come up..." sleep 30 if pg_ctl status; then echo -e "PG ${PGDATA} has been started successfully..." break fi fi done
#!/usr/bin/env bash


export PATH=/usr/lib/postgresql/10/bin:$PATH

export PGDATA=/var/lib/postgresql/10/main

PG_LOG_FILE=/tmp/postgres.log

num_trys=0

while [[ ${num_trys} -lt 3 ]];do
    if pg_ctl status; then
        echo -e "postgre is running for PGDATA Location ${PGDATA} \n"
        break
    else
        ((num_trys++))
        echo -e "Airflow PG ${PGDATA} not running \n"
        echo -e "Attempt: ${num_trys} to restart..."

        pg_ctl start -D ${PGDATA} -l ${PG_LOG_FILE}

        echo -e "Waiting 30 seconds for DB to come up..."
        sleep 30

        if pg_ctl status; then
            echo -e "PG ${PGDATA} has been started successfully..."
            break
        fi
    fi
done

 

Are you in need of any Automation? you give us the challenge/problem statement we will solve it for you. reach out to us at hello@gritfy.com 

Cheers
Sarav AK

Follow me on Linkedin My Profile
Follow DevopsJunction onFacebook orTwitter
For more practical videos and tutorials. Subscribe to our channel

Buy Me a Coffee at ko-fi.com

Signup for Exclusive "Subscriber-only" Content

Loading