返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

25.1. 标准 Unix 工具

发布于 2019-09-30 03:07:40 字数 1786 浏览 1042 评论 0 收藏 0

PostgreSQL 在大多数平台上修改 ps 输出的命令标题,这样我们就很容易找出某个服务器进程。一个简单的显示如下

$ ps auxww | grep ^postgres
postgres   960  0.0  1.1  6104 1480 pts/1    SN   13:17   0:00 postgres -i
postgres   963  0.0  1.1  7084 1472 pts/1    SN   13:17   0:00 postgres: writer process
postgres   965  0.0  1.1  6152 1512 pts/1    SN   13:17   0:00 postgres: stats collector process   
postgres   998  0.0  2.3  6532 2992 pts/1    SN   13:18   0:00 postgres: tgl runbug 127.0.0.1 idle
postgres  1003  0.0  2.4  6532 3128 pts/1    SN   13:19   0:00 postgres: tgl regression [local] SELECT waiting
postgres  1016  0.1  2.4  6532 3080 pts/1    SN   13:19   0:00 postgres: tgl regression [local] idle in transaction

调用 ps 的方法因平台的不同而略有不同,显示出来的细节也有一些区别。这个例子来自一个最近的 Linux 系统。这里显示出来的第一个进程是主服务器进程。显示的命令参数和启动它的命令行参数相同。下面是由主服务器进程自动调用的两个统计收集器后台进程,如果你设置了系统不启动统计收集器,那么它们不会出现。剩下的都是一个个处理客户连接的服务器进程,每个这样的进程都用下面的形式显示:

postgres: user database host activity

在该客户端连接的生命期中,user, database, host(连接源主机)都保持不变,但是活跃性指示符会变化。活跃性可以是 idle(等待客户端的命令)、idle in transaction(在一个 BEGIN 块里等待用户)、或者一个命令类型名,比如 SELECT 。同样,如果当前正在等待一个其它服务器进程持有的锁的时候,会在信息后面附加 waiting 。在上面的例子中,我们可以推出:进程 1003 正在等待 1016 完成其事务,这样才能释放一些锁或者其它什么东西

如果关闭了 update_process_title 那么活跃性指示符将不会变化,并且进程标题仅在新进程被启动的时候设置一次。在某些平台上这样做可以节省每个命令的开销,但在其它平台上却没有这种差异。

【提示】Solaris 需要特别的处理。你必需使用 /usr/ucb/ps 而不是 /bin/ps 。你还必需使用两个 w 标志,而不是一个。另外,你最初调用 postgres 时用到的命令行在 ps 状态显示中必须比 ps 给每个服务器进程显示的短。如果没满足这三个条件,那么 ps 为每个服务器进程输出的将是最初的 postgres 的命令行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文