Linux 如何从初始PID命名空间以外的PID命名空间和初始PID命名空间调用reboot()?

Linux 如何从初始PID命名空间以外的PID命名空间和初始PID命名空间调用reboot()?,linux,reboot,Linux,Reboot,警察说 PID名称空间内的行为 自Linux 3.4以来,如果从另一个PID命名空间调用reboot() 而不是初始PID名称空间,其中列出了一个cmd值 下面,它对该名称空间执行“重新启动”:即“初始化”进程 PID名称空间的名称立即终止,其效果为 在pid_名称空间(7)中描述 在中调用reboot()时可以在cmd中提供的值 本案情况如下: LINUX\u REBOOT\u CMD\u RESTART,LINUX\u REBOOT\u CMD\u RESTART2 “init”进程终止,并

警察说

PID名称空间内的行为

自Linux 3.4以来,如果从另一个PID命名空间调用reboot()
而不是初始PID名称空间,其中列出了一个cmd值
下面,它对该名称空间执行“重新启动”:即“初始化”进程
PID名称空间的名称立即终止,其效果为
在pid_名称空间(7)中描述

在中调用reboot()时可以在cmd中提供的值 本案情况如下:

LINUX\u REBOOT\u CMD\u RESTART,LINUX\u REBOOT\u CMD\u RESTART2 “init”进程终止,并在父进程中等待(2) 过程报告说孩子是被一个警棍打死的 信号

LINUX\u重新启动\u命令\u电源\u关闭,LINUX\u重新启动\u命令\u停止 “init”进程终止,并在父进程中等待(2) 进程报告孩子是被SIGINT杀死的 信号

对于其他cmd值,reboot()返回-1,errno设置为
艾因瓦尔

在阅读之后,我对PID名称空间有一些有限的了解。我想知道如何调用reboot()

  • 来自初始PID命名空间以外的PID命名空间,以及
  • 从初始PID名称空间

您可以使用nsenter进入其他PID名称空间。 要从初始PID命名空间以外的PID命名空间执行重新启动,请执行以下操作:

/usr/bin/nsenter -p/proc/PID/ns/pid reboot
如果目标PID为1:

/usr/bin/nsenter -p/proc/1/ns/pid reboot
第二个问题与简单调用
reboot
相同,因为它将获得当前的PID上下文