在 sysvinit 中,telinit
是一个符号链接init
。
init
作为守护进程运行。是否telinit
作为守护进程运行?
我的 Lubuntu 上没有安装 sysvinit。作为比较, 与as tosystemctl
扮演类似的角色,并且有一个控制终端,因此不作为守护进程运行,而作为守护进程运行。systemd
telinit
init
systemctl
systemd
谢谢。
答案1
一个文件是否是另一个文件的符号链接与其运行方式无关。telinit
,就像 一样systemctl
,作为“正常”进程运行。
答案2
基于这个问题和在 sysvinit 中,`telinit` 和 `init` 是否在同一进程中运行?我认为您对程序如何与符号链接交互感到困惑。
当一个程序有多个名称(符号链接、硬链接)时,它可以根据调用方式执行不同的操作。
例如,这是一个简单的 shell 脚本
$ 猫 x
#!/bin/bash
pname=${0##*/}
case $pname in
tina) echo "Tina Tuner doesn't need another hero" ;;
fred) echo "The current date is: $(date)" ;;
harry) sleep 3 ;;
*) echo Call me tina or fred or harry
esac
它有符号链接:
$ ls -l x tina fred harry
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:47 fred -> x*
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:48 harry -> x*
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:48 tina -> x*
-rwxr-xr-x 1 sweh sweh 217 Dec 19 09:48 x*
所以现在我可以得到不同的结果,具体取决于我如何称呼它:
$ ./tina
Tina Tuner doesn't need another hero
$ ./fred
The current date is: Wed Dec 19 09:50:00 EST 2018
$ ./harry
$ ./x
Call me tina or fred or harry
$ ln -s x something
$ ./something
Call me tina or fred or harry
现在sysv-init
程序做了类似的事情。如果telinit
这样启动,它只是向主程序发出信号init
。如果启动init
(如果 PID 为 1,也可能如此,但这会变得更加混乱),那么它将作为主系统 init 进程启动。
所以不行;telinit
是不是一个守护进程。
答案3
init 作为守护进程运行。 telinit 是否作为守护进程运行?
不,当作为 telinit 调用时,init 二进制文件具有不同的行为。