Detaching from controlling terminal

Started by Andrey Mosienkoover 22 years ago9 messagesgeneral
Jump to latest
#1Andrey Mosienko
feo@feo.org.ru

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

Log:
[1]: LOG: fast shutdown request
[2]: LOG: shutting down
[3]: LOG: database system is shut down
[4]: LOG: next transaction id: 45635; next oid: 32885093
[5]: LOG: database system is ready

and I see:

9655 p1 S+ 0:00,01 /usr/local/pgsql/bin/postmaster (postgres)
9657 p1 S+ 0:00,00 postmaster: stats buffer process (postgres)
9658 p1 S+ 0:00,00 postmaster: stats collector process (postgres)

It is attached to console p1. So when I press Ctrl+C in this console
postmaster writes and exits:

Log:
[1]: LOG: fast shutdown request
[2]: LOG: shutting down
[3]: LOG: database system is shut down

When I reload server postmaster starts without any controlling terminal
and I can press Ctrl+C in any console I want:

178 con- I+ 0:00,16 /usr/local/pgsql/bin/postmaster (postgres)
180 con- I+ 0:00,00 postmaster: stats buffer process (postgres)
181 con- I+ 0:00,00 postmaster: stats collector process (postgres)

So I repeat my question:
Is there way to detach it from the controlling terminal under FreeBSD?

--
Best regards Andrey Feofilactovich.

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Andrey Mosienko (#1)
Re: Detaching from controlling terminal

Andrey Mosienko writes:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

That should do it. What version are you using?

--
Peter Eisentraut peter_e@gmx.net

#3Andrey Mosienko
feo@feo.org.ru
In reply to: Peter Eisentraut (#2)
Re: Detaching from controlling terminal

Peter Eisentraut wrote:

Andrey Mosienko writes:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

That should do it. What version are you using?

PostgreSQL: 7.0.1 - 7.3.4
FreeBSD: 4.2 - 4.9

--
Best regards Andrey Feofilactovich.

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Andrey Mosienko (#3)
Re: Detaching from controlling terminal

Andrey Mosienko writes:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

That should do it. What version are you using?

PostgreSQL: 7.0.1 - 7.3.4

I'm sure somewhere in between there it didn't work and then it was fixed.
If in doubt, redirect all three file descriptors stdin, stdout, stderr
somewhere (possibly /dev/null), so they're not attached to the terminal.

--
Peter Eisentraut peter_e@gmx.net

#5Shridhar Daithankar
shridhar_daithankar@myrealbox.com
In reply to: Andrey Mosienko (#1)
Re: Detaching from controlling terminal

Andrey Mosienko wrote:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

You can either use pg_ctl or nohup. Using pg_ctl is recommended.

Shridhar

#6Andrey Mosienko
feo@feo.org.ru
In reply to: Andrey Mosienko (#1)
Re: Detaching from controlling terminal

Shridhar Daithankar wrote:

Andrey Mosienko wrote:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

You can either use pg_ctl or nohup. Using pg_ctl is recommended.

su pgsql -c "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"
^^^^^^^
What is nohup?

--
Best regards Andrey Feofilactovich.

#7Craig O'Shannessy
craig@ucw.com.au
In reply to: Andrey Mosienko (#6)
Re: Detaching from controlling terminal

On Tue, 18 Nov 2003, Andrey Mosienko wrote:

What is nohup?

[craig@crucw craig]$ man -k nohup
nohup (1) - run a command immune to hangups, with output to a non-tty

#8Shridhar Daithankar
shridhar_daithankar@myrealbox.com
In reply to: Andrey Mosienko (#6)
Re: Detaching from controlling terminal

Andrey Mosienko wrote:

Shridhar Daithankar wrote:

Andrey Mosienko wrote:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

You can either use pg_ctl or nohup. Using pg_ctl is recommended.

su pgsql -c "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"
^^^^^^^

Damn.. Sorry I missed that. Usually pg_ctl detaches from terminal.

What is nohup?

When you start a job with nohup and put it in background, the job keeps running
even if terminal detaches.

When a terminal closes, a sighup is delivered to all applications started from
that terminal. Nohup just ignores it.

man nohup for more details.

Shridhar

#9Stephen Robert Norris
srn@commsecure.com.au
In reply to: Shridhar Daithankar (#8)
Re: Detaching from controlling terminal

On Tue, 2003-11-18 at 17:52, Shridhar Daithankar wrote:

Andrey Mosienko wrote:

Shridhar Daithankar wrote:

Andrey Mosienko wrote:

We are using PostgreSQL about two years beginning from version 7.0.
I have one question about starting postmaster:
Is there way to detach it from the controlling terminal under FreeBSD?

My situation: I start postmaster manually:

su pgsql -c "/usr/local/pgsql/bin/pg_ctl
-D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"

You can either use pg_ctl or nohup. Using pg_ctl is recommended.

su pgsql -c "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start"
^^^^^^^

Damn.. Sorry I missed that. Usually pg_ctl detaches from terminal.

What is nohup?

When you start a job with nohup and put it in background, the job keeps running
even if terminal detaches.

When a terminal closes, a sighup is delivered to all applications started from
that terminal. Nohup just ignores it.

man nohup for more details.

Shridhar

Be aware that nohup lowers the priority of the process by default - this
can be undesirable for a server...

Stephen