• URL: Weixin
    TAG: ((6209ac4b-6222-428d-b02a-c1b542d4f621))
    YEAR:
    IN A WOED:
    印象笔记:

标识

UID 启动进程的用户
PID 进程的进程号
PPID 父进程进程号
C cpu使用率
STIME 进程启动时的系统时间
TTY 进程启动时终端设备
TIME 运行进程需要的累积CPU时间
CMD 启动程序名称或命令

ps

命令 功能
-e 显示运行在系统上的所有进程
-f 扩展显示输出

strace

trace system calls and signals 跟踪进程内部的系统调用和信号

image.png
strace后面跟着启动一个进程,^^可以跟踪启动后进程的系统调用和信号^^
这个命令可以看到进程执行时候都调用了哪些系统调用,通过指定不同的选项可以输出系统调用发生的时间,精度可以精确到微秒,甚至还可以统计分析系统「调用的耗时」,^^这在排查进程假死问题的时候很有用,能帮你发现进程卡在哪个系统调用上^^。
已经在运行的进程也可以指定-p参数加pid像gdb attach那样附着上去跟踪
-

pstack

print a stack trace of a running process 打印出运行中程序的堆栈信息

image.png
执行命令pstack pid 你能看到当前线程运行中的堆栈信息,其中的pid可用之前的ps命令获得,pstack可以看到进程内启动的线程号,每个进程内线程的「堆栈」内容也能看到。
🔔LPW(Light-weight process)
1.Linux中没有真正的线程
2.Linux中没有的线程Thread是由进程来模拟实现的所以称作:轻量级进程
3.进程是「资源管理」的最小单元,线程是「资源调度」的最小单元(这里不考虑协程)

pstree

display a tree of processes pstree按树形结构打印运行中进程结构信息

image.png
可以直观的查看进程和它启动的线程的关系,并能显示进程标识

/proc/pid

具体内容在 ((621dea74-c48b-4b04-8572-d06cc99477ea))

reptyr

通过在tmux中使用reptyr抢占进程到当前终端

1
2
3
4
5
# 先启动一个tmux
# 获取进程号
ps aux | grep [进程]
# reptyr
sudo reptyr -T [进程ID]