哪个 init 守护进程启动 cups?

哪个 init 守护进程启动 cups?

我全新安装了 Ubuntu 14.04,没有触碰过任何东西。

据和报道,Cups 正在ps运行netstat

/etc/init/cups.conf/etc/init.d/cups,两个好像都可以开杯。

我使用以下方法来确定哪个 init 守护进程启动了 cups:

  • service cups status- “未知职业:杯子”
  • initctl status cups- “未知职业:杯子”
  • /etc/init.d/cups status— “cupsd 正在运行”
  • 运行级别为 2,并且没有 cups/etc/rc2.d

那么问题是:哪个 init 守护进程启动了 cups?是传统的 Debian init 还是 upstart?

如果 upstart 是启动 cups 的人,为什么initctl status cups不能报告 cups 状态?

答案1

Ubuntu 上的 CUPS 由 Upstart 通过文件 /etc/init/cups.conf 启动。文件 /etc/init.d/cups 被忽略。/etc/init/cups.conf 不是 init 脚本,而是 Upstart 的配置。它确实启动了主守护进程,并且不仅是 CUPS 的前置和后置配置。

当在环境中设置变量 UPSTART_SESSION 时,service和实用程序会报告未知作业,因为在这种情况下,这两个实用程序作用于initctl会话初始化而不是系统初始化(cups是由系统初始化启动的)。su通常会保留环境,而sudo不会,所以sudo initctl status cups会起作用但su -c "initctl status cups"不会。

答案2

在这两者中,只有一个实际上是 init 脚本:/etc/init.d/cups。该/etc/init/cups.conf文件似乎是一个配置文件,在守护进程启动之前/之后运行某些操作,但它本身并不是 init 脚本。它缺乏正确的格式(启动、停止、重新启动等功能),而且无论如何,它不在正确的位置。Init 脚本位于目录中init.d

至于是谁开始的,14.04 仍然在使用 upstart,他们会迁移至 systemd供将来版本使用。因此,upstart 启动了 cups 守护进程。

现在,至于为什么servicenor都没有initctl返回任何有用的信息,那是因为您没有使用sudo

terdon@16:~$ service cups status
status: Unknown job: cups
terdon@16:~$ sudo service cups status
[sudo] password for terdon: 
cups start/running, process 1319

terdon@16:~$  initctl status cups 
initctl: Unknown job: cups
terdon@16:~$ sudo initctl status cups 
cups start/running, process 1319

相关内容