跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1 部分:用户命令 Oracle Solaris 11 Information Library (简体中文) |
- proc 工具
/usr/bin/pflags [-r] pid | core [/lwp] ...
/usr/bin/pcred [pid | core]...
/usr/bin/pcred [-u user/uid] [-g group/gid] [-G grouplist] pid...
/usr/bin/pcred -l login pid...
/usr/bin/pldd [-Fl] [pid | core]...
/usr/bin/psig [-n] pid...
/usr/bin/pstack [-F] pid | core [/lwp] ...
/usr/bin/pfiles [-Fn] pid...
/usr/bin/pwdx pid...
/usr/bin/pstop pid[/lwp] ...
/usr/bin/prun pid[/lwp] ...
/usr/bin/pwait [-v] pid...
/usr/bin/ptime [-Fm] [-p] pid...
/usr/bin/ptime [-m]command [arg]...
proc 工具是用于执行 /proc 的功能的实用程序(请参见 proc(4))。其中大多数工具都接受进程 ID (pid) 的列表。确实接受进程 ID 的工具还可以接受 /proc/nnn 作为进程 ID,因此可以使用 shell 扩展 /proc/* 来指定系统中的所有进程。
某些 proc 工具还可应用于核心文件(请参见 core(4))。应用于核心文件的工具可以接受进程 ID 和(或)核心文件的名称的列表。
某些 proc 工具可在各个线程上执行。用户可以仅检查通过将 /thread-id 附加到进程 ID 或核心文件名称而选定的线程。可使用 - 和 , 分隔符选择多个线程。例如,/1,2,7-9 将检查线程 1、2、7、8 和 9。
请参见警告。
为每个进程或每个进程中的指定 lwp 输出 /proc 跟踪标志、暂挂的和保留的信号以及其他 /proc 状态信息。
输出或设置每个进程的凭证(有效的、实际的、已保存的 UID 和 GID)。
列出链接到每个进程的动态库,包括使用 dlopen(3C) 显式连接的共享对象。另请参见 ldd(1)。
列出每个进程的信号操作和处理程序。请参见 signal.h(3HEAD)。
为每个进程或每个进程中的指定 lwp 输出十六进制符号栈跟踪。
报告每个进程中所有打开的文件的 fstat(2) 和 fcntl(2)信息。对于网络端点,还会提供本地的(及对等方的,如果已连接)地址信息。对于套接字,还会提供套接字类型、套接字选项以及接收和发送缓冲区大小。此外,如果可从 /proc/pid/path 中获取文件路径信息,则还会报告该信息。这不一定是用来打开文件的同一名称。有关更多信息,请参见 proc(4)。
输出每个进程的当前工作目录。
停止每个进程或指定的 lwp(PR_REQUESTED 停止)。
设置正在运行的每个进程或指定的 lwp(与 pstop 相反)。
等待所有指定的进程终止。
与 time(1) 一样,对命令进行计时,但使用微观状态计数以获得可复现的精度。与 time(1) 不同的是,不会对命令的子代进行计时。
如果使用 -p pid 版本,将显示指定 pid 的计时统计信息的快照。
支持以下常规选项:
强制。抓取目标进程,即使另一进程已掌握了控制权。
(仅限 psig 和 pfiles)设置非详细模式。psig 显示信号处理程序地址,而不是名称。pfiles 不显示每个文件描述符的详细信息。相反,pfiles 将其输出限制为在进程向其每个文件描述符应用了 fstat(2) 的情况下将检索到的信息。
(仅限 pflags)如果进程已停止,将显示其计算机寄存器。
(仅限 pwait)详细。将结果报告到标准输出。
除了常规选项外,pcred 还支持以下选项:
将目标进程的实际的、有效的和已保存的组 ID (GID) 设置为指定值。
将目标进程的辅助 GID 设置为指定的组列表。应当以组名称 ID 的逗号分隔的列表形式指定辅助组。空列表将清除目标进程的辅助组列表。
将目标进程的实际的、有效的和已保存的 UID 设置为指定登录的 UID。将目标进程的实际的、有效的和已保存的 GID 设置为指定登录的 GID。将辅助组列表设置为指定登录的辅助组列表。
将目标进程的实际的、有效的和已保存的用户 ID (UID) 设置为指定值。
除了常规选项外,pldd 还支持以下选项:
显示未解析的动态链接程序映射名称。
除了常规选项外,ptime 还支持以下选项:
显示整套微观状态计数统计信息。
显示的字段如下所示:
挂钟时间。
用户级 CPU 时间。
系统调用 CPU 时间。
其他系统陷阱 CPU 时间。
文本页面错误休眠时间。
数据页面错误休眠时间。
内核页面错误休眠时间。
用户锁等待休眠时间。
所有其他休眠时间。
CPU 延迟(等待)时间。
停止时间。
显示指定 pid 的计时统计信息的快照。
要设置其他进程的凭证,某个进程必须具有足够的特权,以将其用户和组 ID 更改为根据 setuid(2) 中制定的规则指定的用户和组 ID,且还必须具有足够的特权以控制目标进程。
以下 proc 工具在检查其目标进程并报告结果时会停止目标进程:pfiles、pldd 和 pstack。进程被停止后将无法执行任何操作。因此,如果对 X 服务器进行检查的某个 proc 工具是在由 X 服务器控制的窗口中运行,则整个窗口系统将进入死锁状态,因为该 proc 工具将试图将其结果输出到一个无法刷新的窗口。在这种情况下,使用 ssh(1) 从其他系统登录并终止违例的 proc 工具将会消除死锁。
请参见警告。
使用 -F 标志时应谨慎。在一个被调试的进程上施加两个控制进程可能会导致混乱。仅当主控制进程(通常是调试器)已停止了被调试的进程,并且在应用 proc 工具的可疑时刻主控制进程未在执行任何操作,才能保证安全。
某些 proc 工具还可应用于核心文件,如上面的概要中所示。核心文件是进程状态的快照,由内核在使用信号终止进程之前生成,或者由 gcore(1) 实用程序生成。某些 proc 工具可能需要派生出与对内核进行了转储的进程对应的可执行程序的名称,或者与该进程相关联的共享库的名称。例如,pstack(1) 需要使用这些文件来提供符号表信息。如果该 proc 工具无法找到所需的可执行程序或共享库,某些符号信息将无法显示。同样,如果在一个操作系统发行版上检查另一个不同的操作系统发行版中的核心文件,运行时链接编辑器调试接口 (librtld_db) 将无法初始化。在这种情况下,将无法获取共享库的符号信息。
将返回以下退出值:
操作成功。
出现错误。
进程文件
有关下列属性的描述,请参见 attributes(5):
|
人类可读的输出是 "Uncommitted"(未确定)。选项为 "Committed"(已确定)。
gcore(1)、ldd(1)、pargs(1)、pgrep(1)、pkill(1)、plimit(1)、pmap(1)、preap(1)、ps(1)、ptree(1)、ppgsz(1)、pwd(1)、rlogin(1)、ssh(1)、time(1)、truss(1)、wait(1)、fcntl(2)、fstat(2)、setuid(2)、dlopen(3C)、signal.h(3HEAD)、core(4)、proc(4)、process(4)、attributes(5)、zones(5)
以下 proc 工具在检查其目标进程并报告结果时将停止目标进程:pfiles、pldd 和 pstack。不过,pstack 将停止整个进程,即使它是在单个线程上执行操作。
进程或线程被停止后将无法执行任何操作。在生产环境中停止某个频繁使用的进程或线程(即使仅停止很短时间)可能会导致严重的瓶颈,甚至导致这些进程或线程挂起,使得用户无法使用这些进程。某些数据库可能还会异常终止。因此,当使用上述 proc 工具跟踪一个数据库进程或线程时,负载过重的数据库服务器可能会挂起。因此,应避免在生产环境中停止 UNIX 进程或线程。
可通过发出 /usr/bin/ps -eflL 并在第一列中查找 "T" 来识别这些工具停止的进程或线程。请注意,某些进程(如 sched)缺省情况下大多数时候可显示 "T" 状态。
为网络文件系统上的锁定文件返回的进程 ID 可能没有意义。