Check if PostgreSQL Server Is Running on macOS

  1. Check if PostgreSQL Server Is Running on macOS
  2. Use grep Command to Check the Status of PostgreSQL
  3. Use the pg_ctl status Command to Check the Status of PostgreSQL
  4. Use the pg_isready Command to Check the Status of PostgreSQL
  5. Other Commands to Check the Status of PostgreSQL
  6. Conclusion

This article is specially articulated to help you find the status of your PostgreSQL server on the MAC operating system. Several BASH commands have been mentioned in the article.

These can be used to check the status of PostgreSQL and whether it is running or not.

Note: The BASH commands mentioned throughout the article might not work for all operating systems; however, they are known to work well for macOS.

Numerous BASH commands have been mentioned as an alternative to each other; if one command does not work out, other commands can be executed to check the status of the PostgreSQL server.

Check if PostgreSQL Server Is Running on macOS

Numerous commands can be used, moving to the BASH commands to check the status of PostgreSQL. This article focuses on the commands that will help you determine whether PostgreSQL is running or not.

Before diving into the BASH commands, let’s look over the error messages you might receive when you try to access PostgreSQL.

Error Messages

Let’s have a look over the following messages and analyze if these seem familiar to you or not.

[~/dev/working/sw] sudo bundle exec rake db:migrate rake aborted!
could not connect to the server: Connection refused
Is the server running on the host "localhost" and accepting TCP/IP connections on port 5432?

Another error message that pops up when you use the pg_ctl command is as follows:

> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory

These are two examples of error messages that you might have encountered while trying to run PostgreSQL on your system. These errors might result from an incorrect path setup during the initialization process.

When using the initdb command to create a PostgreSQL database cluster, you need to provide the right path that points to the location of PostgreSQL. If there is any error in the path initialization, you need to correct it and then check whether PostgreSQL is working or not.

Several BASH command options have been provided below, so you can choose any of them to check the status of PostgreSQL. Let’s discuss each one of the commands in detail.

Use grep Command to Check the Status of PostgreSQL

The first BASH command that helps to check whether processes are running or not is as follows:

> ps auxwww | grep postgres

Or, you can try another version of the same command, which is:

> ps aux | grep postgres

The return message helps you identify if PostgreSQL is running or not. If you want to start the PostgreSQL server, you need to look for a command that is similar to the following.

/Library/PostgreSQL/12/bin/postgres -D /Library/PostgreSQL/12/data

In the command above, 12 represents the PostgreSQL version. If you have a different version of the PostgreSQL installed, you would see a different figure at the place of 12.

To start the PostgreSQL server, use the following command.

/Library/PostgreSQL/12/bin/pg_ctl start-D /Library/PostgreSQL/12/data -l postgres.log

Note: The /Library/PostgreSQL/12/data is an arbitrary database cluster directory created by the user using initdb in the initialization process.

These commands can help you identify if PostgreSQL is running or not. If PostgreSQL is not running, you can start it with the above command.

Use the pg_ctl status Command to Check the Status of PostgreSQL

Another BASH command that checks the status of PostgreSQL is as follows:

> pg_ctl status

The pg_ctl status command checks the existence of the postmaster process. The command reports that it is running if it can find the process.

Note: The running status does not indicate that the postmaster is ready to accept other connections or execute more queries.

The PGDATA environment variable might also require some edits to check the status of PostgreSQL. Here is a depiction of the PostgreSQL ~/.bashrc file.

export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'

Once you have edited the environment variable, it is essential to run the following command to source the file.

> . ~/.bashrc

After this, you can run the show-pg-status command for PostgreSQL on BASH.

> show-pg-status
pg_ctl: server isrunning (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres

The pg_ctl command can also be used to start the PostgreSQL server manually. It is essential to determine the path of PostgreSQL before running the command.

The path can be determined using the which postgres command. It can then be used to start PostgreSQL manually.

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Use the pg_isready Command to Check the Status of PostgreSQL

Another interesting command you should look at is the pg_isready command. This is used to check the connection status of the PostgreSQL server.

> pg_isready

The execution of the pg_isready command returns either of the following values:

  1. 0 - depicts that the server accepts connections as usual.
  2. 1 - is returned if the server is not accepting any connections.
  3. 2 - it shows that no response was received following the connection attempt.
  4. 3 - depicts that no connection attempt was made; this might be due to an error, for instance, using invalid parameters.

Other Commands to Check the Status of PostgreSQL

There are several other options for BASH commands that you can use to check the status of PostgreSQL.

Try using the psql command or the pgrep postgres command to determine if the PostgreSQL server is running on your MAC or not.

Conclusion

Different operating systems require different commands to perform the same function. The BASH commands mentioned in the article are known to perform well on macOS; however, you can also try these on other operating systems.