What is the default directory where postgresql will keep all databases on linux?
/var/lib/postgresql/[version]/data/
At least in Gentoo Linux by default.
You can find postgresql.conf and look at param data_directory
. If it is commented then database directory is the same as this config file directory
The "directory where postgresql will keep all databases" (and configuration) is called "data directory" and is tied to what postgresql calls (a little confusingly) a "database cluster" (not related to distributed computing - it just means a group of databases and related objects managed by a postgresql server). Its location depends on the distribution. If you install from source, the default is /usr/local/pgsql/data
In file system terms, a database cluster will be a single directory under which all data will be stored. We call this the data directory or data area. It is completely up to you where you choose to store your data. There is no default, although locations such as /usr/local/pgsql/data or /var/lib/pgsql/data are popular.
An instance of a running postgresql server is associated to a cluster; the location of its data directory can be passed to the server daemon ("postmaster" or "postgres") in the -D
command line option, or by the PGDATA environment variable (usually in the scope of the running user, "postgres"). You can usually see the running server with something like this:
[root@server1 ~]# ps auxw | grep postgres | grep -- -D
postgres 1535 0.0 0.1 39768 1584 ? S May17 0:23 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
Notice that it is possible (though not frequent) to run two instances of the same postgresql server (same binaries) that serve distinct "clusters" (directories). Of course, they would listen in different TCP/IP ports.