linux关闭内核命令,linux – “当操作系统关闭时”和“内核何...

他似乎注意到内核本身和操作系统的其余部分,内核之上构建的用户空间构造之间的区别.

当您使用/ sbin / reboot或等效系统关闭系统时(后者又调用systemd或某些init脚本或其他东西),它不仅要求内核关闭.用户空间工具几乎可以完成所有清理工作,例如卸载文件系统,将SIGTERM发送到其他进程,要求它们关闭等等.

相反,如果您直接以root身份调用reboot() system call,则不会发生任何清理,内核只会执行它所做的事情并立即关闭(可能重新启动或关闭计算机).该手册页指出,reboot()甚至没有相当于sync(),因此它甚至没有进行可以在内核中完成的清理(文件系统驱动程序和I / O缓冲区所在的位置). )

以手册页为例:

LINUX_REBOOT_CMD_RESTART

(RB_AUTOBOOT, 0x1234567). The message "Restarting system." is

printed, and a default restart is performed immediately. If

not preceded by a sync(2), data will be lost.

所以,

Does system call reboot() reboot the OS or kernel?

它要求内核关闭或重新启动,操作系统随之关闭.

Does command reboot reboot the OS but not the kernel?

它要求用户空间进程关闭,进行其他清理,然后才要求内核关闭或重新启动.

reboot()系统调用具有一种模式(LINUX_REBOOT_CMD_RESTART2),该模式被描述为“使用命令字符串”.但是,它并不意味着用户模式命令,而是内核的一个命令,以及甚至不在x86上使用的命令.

请注意,虽然我们正在考虑内核与内核操作系统之间的区别,但原则上您可以重新启动操作系统但保持内核运行.您需要清理用户空间设置的所有内容并终止其他用户空间进程,然后重新启动init以重新启动所有内容,而不是要求内核重新启动.这可能不是很有用,并且很难可靠地重置内核中的所有状态(您需要手动重置所有网络接口,清理iptables规则,重置RAID和循环设备等等.很有可能错过了之后可能会咬回去的东西.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值