如何找出postgres被systemd启动的原因并阻止它?

如何找出postgres被systemd启动的原因并阻止它?

我已经检查了 /proc/PID 目录。
我想阻止任何像 postgres 这样的服务启动,除非我自己启动它们。
因此,我想找出为什么启动 postgres。我看到它正在运行,sudo lsof -i尽管它以前没有运行过,而且我也没有直接启动它。

我正在运行 Debian10,两天前我安装了一些 postgres 更新。我检查了同一天使用 lsof -i 运行的进程,但 Apper 的历史记录没有显示日期时间(bash 历史记录也没有),因此它可能是在更新之前,因此 postgres 可能在更新后自动启动。如果它在更新后自动启动,我想知道如何防止这种情况,但这可能是一个单独的问题。

有多个 postgres 进程。每个都有另一个 postgres 进程作为父进程。它的父PID是1,即systemd。运行时,rkhunter -c它会警告可疑文件类型:/dev/shm/PostgreSQL.{long-number}

答案1

为了找出启动 postgres 的原因,我会追踪父进程向上。既然您发现您的进程以 PID 1 结尾,而该进程在您的系统上是 systemd,那么我会要求 systemd 告诉我其单元的状态,然后查找该进程。您可以 grep 查找进程名称:

$ systemctl status | grep -B3 'postgres'

如果三行不足以发现负责的单位,请增加它直到找到为止。

如果你有PID的话,

$ systemctl status 1024  ## example PID

那么这个命令将要求 systemd 告诉您该进程所属单元的状态(以及名称)。

一旦获得了 systemd 单元的名称,您就可以通过运行以下命令来阻止它启动:

# systemctl mask --now unit-name-here

...该--now选项还会立即停止设备。

相关内容