Postgresql

找不到命令:Ubuntu 上的 pg_ctl

  • February 28, 2018

PostgreSQL 9.4.8 Ubuntu 16.04 64 位

我只想解釋這裡發生的事情。為什麼找不到這個命令?沒有其他的。

malikarumi@Tetuoan2:/usr/lib/postgresql/9.4/bin$ pg_ctl stop -m fast
pg_ctl: command not found
malikarumi@Tetuoan2:/usr/lib/postgresql/9.4/bin$ sudo pg_ctl stop -m fast
[sudo] password for malikarumi: 
sudo: pg_ctl: command not found
malikarumi@Tetuoan2:/usr/lib/postgresql/9.4/bin$ ls
clusterdb   initdb             pg_ctl          pg_restore      postmaster
createdb    oid2name           pg_dump         pg_standby      psql
createlang  pg_archivecleanup  pg_dumpall      pg_test_fsync   reindexdb
createuser  pg_basebackup      pg_isready      pg_test_timing  vacuumdb
dropdb      pgbench            pg_receivexlog  pg_upgrade      vacuumlo
droplang    pg_config          pg_recvlogical  pg_xlogdump
dropuser    pg_controldata     pg_resetxlog    postgres
malikarumi@Tetuoan2:/usr/lib/postgresql/9.4/bin$

pg_ctl按照設計,它不在 PostgreSQL Debian(因此是 Ubuntu)發行版的路徑中。PostgreSQL 在 Debian/Ubuntu 中作為服務安裝

sudo service postgresql {start|stop|restart|reload|force-reload|status} [version ..]

該命令呼叫一個init.d環繞pg_ctlcluster. 打開就可以看到/etc/init.d/postgresql。有需要的可以打電話pg_ctlclusterpg_ctrlcluster是一個 perl 腳本,pg_ctl它不會被設計暴露(在路徑中)。

pg_ctrlcluster : 多版本/集群感知 pg_ctl 包裝器;這也為’start’提供了正確的配置參數,並確保postgres真的在’stop’時停止。

pg_ctl在技​​術上是分佈式的,但沒有理由直接呼叫它。找到它執行

find /usr/lib/postgresql/ -name pg_ctl

您可以pg_ctl使用完整路徑顯式呼叫,但不要。

此外,超越並教您如何釣魚,apropos如果您以後有此類問題,您可以隨時使用。

$ apropos pg_ctl
pg_ctl (1)           - initialize, start, stop, or control a PostgreSQL server
pg_ctlcluster (1)    - start/stop/restart/reload a PostgreSQL cluster

引用自:https://dba.stackexchange.com/questions/156717