pg_stat_activity的奇怪输出

时间:2017-02-16 03:33:21

标签: bash postgresql

我对这个简单查询的输出有疑问:

select 
   pid, 
   state 
from pg_stat_activity 
where datname = 'My_DB_name'

以不同的方式运行:

  1. 在IDE中
  2. 通过在终端中运行psql
  3. 在bash脚本中:
  4. QUERY="copy (select pid, state from pg_stat_activity where datname = 'My_DB_name') to stdout with csv"

    psql -h host -U user -d database -t -c "$QUERY" >> result
    

    1和2返回结果,因为我需要它们:

    1:

     pid     state                         
     ------  ----------------------------- 
     23126   idle                          
     25573   active                        
     2642    active                        
     20420   idle                          
     23391   idle                          
     5339    idle                          
     7710    idle                          
     1558    idle                          
     12506   idle                          
     2862    active                        
     716     active                        
     9834    idle in transaction (aborted)
    

    2:

      pid  |             state             
    -------+-------------------------------
     23126 | idle
     25573 | idle
      2642 | active
     20420 | idle
     23391 | idle
      5339 | active
      7710 | idle
      1558 | idle
     12506 | idle
      2211 | active
       716 | active
      9834 | idle in transaction (aborted)
    

    3很奇怪 - 它没有给我任何州名,除了'活跃'

    23126,
    25573,
    2642,
    20420,
    23391,
    5339,
    7710,
    1558,
    12506,
    1660,active
    716,active
    1927,active
    9834,
    

    我错过了什么?如何通过bash脚本获取所有州名?

1 个答案:

答案 0 :(得分:1)

pg_stat_activity是一个目录视图,根据您是以超级用户身份还是以非特权用户身份登录,将显示不同的内容。

从您的输出中,您似乎以#1和#2中的超级用户身份登录,但作为#3中的普通用户登录。