On Thu, Mar 6, 2014 at 4:38 AM, Bruce Momjian <br...@momjian.us> wrote: > On Mon, Nov 4, 2013 at 11:31:30AM -0500, Robert Haas wrote: >> On Sat, Nov 2, 2013 at 3:32 PM, Peter Eisentraut <pete...@gmx.net> wrote: >> > This doesn't seem right: >> > >> > $ pg_ctl -D /nowhere status >> > pg_ctl: no server running >> > >> > It does exit with status 3, so it's not all that broken, but I think the >> > error message could be more accurate. >> >> I doubt anyone will object if you feel the urge to fix it. I won't, anyway. > > I have addressed this issue with the attached patch: > > $ pg_ctl -D /lkjasdf status > pg_ctl: directory "/lkjasdf" does not exist > $ pg_ctl -D / status > pg_ctl: directory "/" is not a database cluster directory > > One odd question is that pg_ctl status has this comment for reporting > the exit code for non-running servers: > > printf(_("%s: no server running\n"), progname); > > /* > * The Linux Standard Base Core Specification 3.1 says this should return > * '3' > * > https://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html > */ > exit(3); > > If they haven't passed us a data directory, we don't really know if the > server is running or not, so the patch just returns '1'.
But for such cases, isn't the status 4 more appropriate? As per above link "4 program or service status is unknown" status 1 - "1 program is dead and /var/run pid file exists" Going by this definition, it seems status 1 means, someone has forcefully killed the server and pid file still remains. With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers