Обсуждение: Getting process id of a connection?
Hi all, Is there a way to determine the pid of a database connection from within that connection? As a hypothetical example, I would like to be able to do the following: $ps x PID TTY STAT TIME COMMAND 11674 ? S 0:00 sshd: webbs@pts/1 11675 pts/1 Ss 0:00 -bash 11682 pts/1 T 0:00 psql 11685 pts/1 R+ 0:00 ps x psql=# select CURRENT_PID; 11682 I want this so that I can log the psycopg2 connection pid, and kill it to test reconnection code. Thanks! -W
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Fri, 4 Jan 2008 14:59:47 -0800
"Webb Sprague" <webb.sprague@gmail.com> wrote:
> Hi all,
>
> Is there a way to determine the pid of a database connection from
> within that connection?
>
> As a hypothetical example, I would like to be able to do the
> following:
>
> $ps x
> PID TTY STAT TIME COMMAND
> 11674 ? S 0:00 sshd: webbs@pts/1
> 11675 pts/1 Ss 0:00 -bash
> 11682 pts/1 T 0:00 psql
> 11685 pts/1 R+ 0:00 ps x
>
> psql=# select CURRENT_PID;
> 11682
>
> I want this so that I can log the psycopg2 connection pid, and kill it
> to test reconnection code.
postgres=# select procpid from pg_stat_activity;
procpid
- ---------
30851
17510
4496
20237
1305
(5 rows)
Sincerely,
Joshua D. Drake
- --
The PostgreSQL Company: Since 1997, http://www.commandprompt.com/
Sales/Support: +1.503.667.4564 24x7/Emergency: +1.800.492.2240
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
SELECT 'Training', 'Consulting' FROM vendor WHERE name = 'CMD'
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHfrwSATb/zqfZUUQRAq9XAKCnuyYcmAu/kmeoHGzJ9B2HDCS63ACffPGA
zXb5dnHQImYtoE89WK3CyuI=
=jQmT
-----END PGP SIGNATURE-----
Webb Sprague wrote: > Hi all, > > Is there a way to determine the pid of a database connection from > within that connection? > > As a hypothetical example, I would like to be able to do the following: > > $ps x > PID TTY STAT TIME COMMAND > 11674 ? S 0:00 sshd: webbs@pts/1 > 11675 pts/1 Ss 0:00 -bash > 11682 pts/1 T 0:00 psql > 11685 pts/1 R+ 0:00 ps x > > psql=# select CURRENT_PID; > 11682 > > I want this so that I can log the psycopg2 connection pid, and kill it > to test reconnection code. > > Thanks! > -W I think select pg_backend_pid(); will do that.
Joshua D. Drake wrote:
> On Fri, 4 Jan 2008 14:59:47 -0800
> "Webb Sprague" <webb.sprague@gmail.com> wrote:
>
>> Hi all,
>>
>> Is there a way to determine the pid of a database connection from
>> within that connection?
>>
>> As a hypothetical example, I would like to be able to do the
>> following:
>>
>> $ps x
>> PID TTY STAT TIME COMMAND
>> 11674 ? S 0:00 sshd: webbs@pts/1
>> 11675 pts/1 Ss 0:00 -bash
>> 11682 pts/1 T 0:00 psql
>> 11685 pts/1 R+ 0:00 ps x
>>
>> psql=# select CURRENT_PID;
>> 11682
>>
>> I want this so that I can log the psycopg2 connection pid, and kill it
>> to test reconnection code.
>
> postgres=# select procpid from pg_stat_activity;
> procpid
> - ---------
> 30851
> 17510
> 4496
> 20237
> 1305
> (5 rows)
I think he's looking for the pid of the client, not the server.
cww=# select procpid from pg_stat_activity;
procpid
---------
8902
(1 row)
8902 ? Ss 0:00 \_ postgres: cww cww 192.168.171.100(40424)
idle
Colin
> > I think select pg_backend_pid(); will do that. Perfect. I tried googling but I didn't try \df *pid* which would have found it I tried to figure out the pg_stat_activity, but I can't think of a WHERE condition that would make it give me the info I wanted. Thx again to everyone.