top -H -p $(pgrep beta)
时间: 2024-01-29 08:05:02 浏览: 70
这个命令会显示进程ID为beta的所有线程信息,其中:
- top命令用于显示系统资源占用情况,-H选项表示显示线程信息;
- -p选项后跟进程ID,$(pgrep beta)是一个子命令,用于查找进程名为beta的进程ID;
- 最终显示的结果是每个线程的PID、TID、CPU占用、内存占用等信息。
相关问题
#!/bin/bash # 持续查询 eef 进程的 pid while true do #查询进程pid eef_pid=$(pgrep eef) if [ -n "$pid" ]; then # 执行 top 命令,输出到 /tmp/test.txt top -b -d 60 -p "$eef_pid" >/tmp/test.txt # 记录top命令的进程号 top_pid=$! break fi #暂停1s后继续查询 sleep 1 done # 检测eef进程是否存在 while [[ -e /proc/$eef_pid ]] do sleep 1 done # 如果eef进程不存在了,就结束top命令 kill -9 $top_pid exit 结尾的exit为什么没有生效
这是因为 exit 命令只会终止当前 shell 进程,而不会终止在当前 shell 进程中启动的子进程。在你的脚本中,top 命令是在一个子进程中执行的,因此即使在该子进程中执行了 exit 命令,也不会终止主进程。如果你希望在 top 命令执行完毕后立即终止脚本,可以在执行 top 命令时使用 exec 命令将子进程替换为 top 命令,并在 top 命令执行完毕后直接退出脚本,例如:
```
#!/bin/bash
# 持续查询 eef 进程的 pid
while true
do
#查询进程pid
eef_pid=$(pgrep eef)
if [ -n "$eef_pid" ]; then
# 执行 top 命令,输出到 /tmp/test.txt
exec top -b -d 60 -p "$eef_pid" >/tmp/test.txt
fi
#暂停1s后继续查询
sleep 1
done
# 如果 top 命令执行完毕,就直接退出脚本
exit
```
这样,在 top 命令执行完毕后,脚本就会立即退出,不需要再使用 kill 命令终止 top 进程了。
paste <(pgrep -f tomcat) <(pgrep tomcat)
这个命令会将运行着名字中带有 `tomcat` 的所有进程的 PID 和父进程 PID 合并到一个新的表格中输出。其中:
- `pgrep -f tomcat` 会查找所有名字中带有 `tomcat` 的进程,并输出它们的 PID。
- `pgrep tomcat` 会查找所有名字为 `tomcat` 的进程,并输出它们的 PID。
`<(command)` 语法会将一个命令的输出作为一个文件输入到另一个命令中。`paste` 命令会将两个输入文件按列合并到一个表格中输出。因此,`paste <(pgrep -f tomcat) <(pgrep tomcat)` 命令会将这两个命令的结果合并到一个表格中输出。
阅读全文