我如何诊断某个进程启动的原因?

我如何诊断某个进程启动的原因?

我正在运行一个 ubuntu 机器,主要是为了学习,所以我应该首先声明,我对 unix 知识的掌握还处于“复制命令直到某些命令奏效”的阶段。我最近从 14.10 升级到了 15.04,升级之后,deluge torrent 客户端的守护进程出现了问题。

当我升级到 15.04 时,我按照“官方”说明将deluged守护进程移至 systemd。作为此过程的一部分,我相信我删除了与此服务相关的旧 upstart 配置。在我之前的配置和新配置中,我都在自己的用户帐户下启动守护进程(首次安装时,在“deluge”用户下启动它给我带来了问题) - 除一个问题外,此方法有效。

尽管我的 .service 文件符合我想要的配置,尽管这个服务启动正常并且工作正常,但systemctl start deluged我还是无法启动该服务,除非我终止在用户帐户deluged下启动时运行的实例root。我不希望它以 root 身份运行,据我所知,我从未将其配置为这样做 - 而这个守护进程的实例显然会阻止我想要的实例启动。我显然不希望它以 root 身份运行,部分原因是我知道这是一个坏主意,但也因为它会阻止瘦客户端实际连接。

Tl;dr:我如何找出导致此服务在启动时以 root 身份启动的原因,以及如何阻止它这样做,以便我能够正确启动守护进程,而无需在每次重新启动后先手动终止不需要的实例?在按照说明操作之前,我已经删除了所有现有配置,据我所知,它们upstartinit.d我的系统上不再处于活动状态。我可能在第一次安装时做了一些我不记得的愚蠢的事情,因为 deluge 是我在第一次安装 unix 时配置的第一件事之一。

(对于任何好心提供答案的人,我目前的 unix 能力仅限于了解进程/守护进程是否正在运行、理解和手动编辑配置文件、对如何解释日志的初级理解,以及基本上不了解幕后工作的更深层次的概念。)

答案1

因为这似乎不是一个常见的问题,而且为了在这么长时间后解决这个问题,我正在回答我自己的问题——结果发现这个过程是在开始的/etc/rc.local,这对我来说真的很愚蠢(而且我没有想到在那里检查也是相当愚蠢的)。

因此,如果这里要吸取什么教训的话,那就是列举出可能发生故障的每一种可能方式,然后逐一检查各种可能性,无论这种做法多么愚蠢,也无论您是否认为已经检查过了。

相关内容