我正在尝试编写一个 init,但无法弄清楚 reboot\poweroff 的事情。显然重启只是一个指向 systemctl 的链接?(我正在使用 arch)那么它是如何工作的呢?init poweroff
作品之类的,但是reboot
/poweroff
似乎只是链接到systemctl
我正在尝试编写一个 init,但无法弄清楚 reboot\poweroff 的事情。显然重启只是一个指向 systemctl 的链接?(我正在使用 arch)那么它是如何工作的呢?init poweroff
作品之类的,但是reboot
/poweroff
似乎只是链接到systemctl
许多程序的行为根据调用它们的名称而有所不同。如果它是vs 如果它是,则类似
systemctl
检查值argv[0]
和行为不同的东西。您可以在busybox中看到这一点的极致,它是一个二进制文件,通过将所有命令符号链接到单个二进制文件来提供几乎整个(最小)用户空间。reboot
systemctl
busybox
您可以使用 shell 脚本做完全相同的事情:
假设这是
multicall.sh
,如果我们这样设置:然后看:
systemctl
特别是,逻辑在这里实现: