“服务postgresql开始”和“pg_ctl开始”有什么区别?

在Ubuntu 14.04上,如果我有PGDATA环境variables设置,这两个命令

service postgresql start 

 pg_ctl start 

似乎做同样的事情:在后台启动postgres服务器。 没有设置PGDATA,“pg_ctl start”需要额外的-D / datadir参数才能启动。 该服务不需要这个。 这是为什么? 启动服务器的两种方式有什么区别? 如何在不知道数据目录的情况下启动服务?

service命令运行一个System V风格的初始化脚本。 在这种情况下,您正在/etc/init.d目录下运行一个名为postgreql的脚本。 这个脚本可能是专门为Ubuntu编写的,并且有适当的配置信息。