跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 强制僵尸进程的父进程收割僵尸进程
preap [-F] pid...
僵尸进程是其退出状态尚未由其父进程收割的进程。退出状态是经由 wait(3C)、waitid(2) 或 waitpid(3C) 系统调用收割的。在正常的系统运行过程中,可能会出现僵尸进程,但通常是比较短暂的。如果父进程没有收割其部分或所有子进程的退出状态就退出,则会出现这种情况。在这种情况下,这些子进程将重新认 PID 1 为父。请参见 init(1M),它定期收割此类进程。
不可靠的父进程无法花很长的时间退出,这样,就将僵尸进程留在了系统上。因为操作系统在进程成为僵尸进程之前几乎已毁坏了其所有组件,所以这些僵尸进程通常不会影响系统运行。不过,它们的确会消耗少量系统内存。
preap 强制 pid 指定的进程的父代 waitid(3C) pid(如果 pid 表示一个僵尸进程)。
在下列情况下,preap 会尝试阻止管理员轻率地收割即将由其父进程收割的子进程:
该进程是 init(1M) 的子进程。
父进程已停止并且可能会在再次允许它运行时拜访子进程。
进程的僵死时间少于一分钟。
支持以下选项:
强制父进程收割子进程,不管安全检查。
支持下列操作数:
进程 ID 列表。
使用 -F 标志时应谨慎。在一个被调试的进程上施加两个控制进程可能会导致混乱。仅当主控制进程(通常是调试器)已停止了被调试的进程,并且在应用 proc 工具的可疑时刻主控制进程未在执行任何操作,才能保证安全。
输出被收割的每个目标进程的退出状态的 preap 返回以下退出值:
操作成功。
失败,例如没有这样的进程、权限遭拒或选项无效。
有关下列属性的说明,请参见 attributes(5):
|
proc(1)、init(1M)、waitid(2)、wait(3C)、waitpid(3C)、proc(4)、attributes(5)
应慎用 preap,只有在管理员或开发人员确认僵尸进程不会由父进程进行收割时,才可使用。否则,应用 preap 可能会对父进程造成不可预测的损害。