古老的ps命令永不过时 我们可以利用 ps 命令来查看进程的运行状态和 WCHAN(waiting channel)。 WCHAN 是什么意思呢?...最终在“STANDARD FORMAT SPECIFIERS”这一部分中找到了 WCHAN 的含义,是这样写的: ? 这里清楚的写着 WCHAN 指的是当前进程正阻塞在哪个内核函数上。...幸运的是 WCHAN 这一列可以告诉你答案。 进程阻塞在哪个内核函数上 上面的ps命令 WCHAN 这一列显示的是 rpc_wa,嗯。。rpc_wa 什么呢?...,我们可以使用最简单的 cat 命令,使用 proc 后跟进程ID以及wchan: ?...真相大白 首先我们来看调用栈的栈顶,栈顶正是 ps 命令 WCHAN 那一列打印出来的,进程在内核中正是因为调用这个函数被卡死的。 ?
我们以一个例子来演示这个过程,在 Linux 中执行: ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)' 该命令生成如下输出...: PID PPID USER %CPU VSZ WCHAN COMMAND 5638 1 root 0.0 45116 rt_sig nginx: master...信号给 nginx 主进程 kill -s HUP 6538 执行 ps 命令,可看到 worker 进程的 PID 改变了,输出改变为: PID PPID USER %CPU VSZ WCHAN...PID PPID USER %CPU VSZ WCHAN COMMAND 33126 1 root 0.0 1164 pause nginx: master process...如果升级成功完成,应发送 QUIT 信号关闭旧主进程,只留下新主进程: PID PPID USER %CPU VSZ WCHAN COMMAND 36264 1 root
() error { ctx, cancle := context.WithTimeout(context.Background(), time.Second*5) defer cancle() wchan...select { case <-tick.C: // 1min 探测一次,防止假死 fmt.Println("watch tick") case resp := wchan...watch result: {{0 0 0 0 {} [] 0} [] 0 false false } 当时etcd底层正在压缩或者发生网络问题,watch方法产生的信道resp := wchan... ctx, cancle := context.WithTimeout(context.Background(), time.Second*5) defer cancle() wchan...for { select { case <-tick.C: fmt.Println("watch tick") case resp, ok := wchan
客户端程序是否产生了过大的压力,比如磁盘的读写性能只有10MB/s,每个线程的读写 速度为5MB/s,那么如果读写线程数为20的话,无疑会造成IOWait过高 6、查看进程状态 ps -eo pid,user,wchan...=WIDE-WCHAN-COLUMN -o s,cmd|awk ' $4 ~ /D/ {print $0}' lsof -p $pid 7、使用block_dump /etc/init.d/syslog
-f做一个更完整的输出 示例: 查看当前用户的进程 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN...ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel funcition,指出该程序在内存的哪个部分,如果是 running的程序,一般会显示-。...SZ代表此程序用掉多少内存,WCHAN表示目前程序是否运作中,若为-表示正 在运行。 TTY:登入者的终端机位置,若为远程终端登入则使用动态终端界面(pts/n)。...查看所有用户执行的进程的详细信息 [root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY...进程占用CPU的总时间 COMMAND: 进程文件,进程名 [root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN
PRI 内核调度优先级 NI 用户设置优先级 ADDR 加载到内存的位置,如果是运行的会用-表示 SZ 用掉的内存页的大小,1个内存页=4096Bytes 也就是6994x4=27976K内存 WCHAN.../zero > /dev/null & [1] 102245 [root@zutuanxue ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN...一起来看下如何调整进程的优先级 [root@zutuanxue ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME...# nice -n 10 vim 2& [2] 109328 [root@zutuanxue ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN...nice -n -20 vim 3 & [3] 109470 [root@zutuanxue ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN
-l 长格式(有F,wchan,C 等字段) -j 作业格式 -o 用户自定义格式。...如果是个 running的程序,一般就是 "-" SZ: 使用掉的内存大小 WCHAN: 目前这个程序是否正在运作当中,若为 - 表示正在运作 TTY: 登入者的终端机位置 TIME: 使用掉的 CPU...CLONE_THREAD, 类似 NPTL pthreads) +: 位于后台的进程组 START: 进程启动时间和日期 NI: 优先级(Nice) PRI: 进程优先级编号(Priority) WCHAN
bitmap of ignored signals (obsolete) sigcatch bitmap of catched signals (obsolete) wchan...stat task cgroup coredump_filter environ fdinfo loginuid mounts oom_score schedstat statm wchan...root smaps status auxv cmdline environ fdinfo maps oom_adj sched stat wchan
0 9:27下午 ttys000 0:00.08 -bash $ ps -l UID PID PPID F CPU PRI NI SZ RSS WCHAN...利用率 TTY 运行在哪个终端 TIME 进程已用CPU时间 CMD 进程的命令 F 内核分配给进程的标记 PRI 进程的优先级 NI 谦让度值用来参与决定优先级 SZ 如果进程被换出,所需要的空间大小 WCHAN
wchan /proc/1751/wchan显示当进程休眠时,内核当前运行的函数 > cat /proc/1751/wchan futex_wait_queue_me 其它目录 /proc/[pid]
)为该程序正在睡眠中,( T )正在侦测或者是停止了,( Z )僵尸程序 x: COMMAND = Command name/line //进程启动命令行参数 y: WCHAN...Thus, the TTY & WCHAN fields will violate strict ASCII collating sequence. ...(shame on you if WCHAN is chosen) Current Fields: AEHIOQTWKNMbcdfgjplrsuvyzX for window 1:Def...Data+Stack size (kb) u: nFLT = Page Fault count v: nDRT = Dirty Pages count y: WCHAN
Linux ps命令的aux选项组合输出PID、%CPU、%MEM、RSS、TIME等数据项,ps命令的-el选项组合输出PID、PPID、WCHAN、TIME、CMD等数据项。...Linux ps命令的字段中有个wchan字段(wchan相关含义参考8.8小节)。默认情况下ps命令会输出wchan的符号信息,如果希望输出wchan的原始数值信息,可以使用n选项。...除了wchan之外,选项n还可以将原本输出user name的地方转换为user id输出。 ?...8.8、WCHAN字段 WCHAN类字段一共3个nwchan、wchan和wname。WCHAN就是waiting channel的意思,进程正在休眠的内核函数的函数符号名称。...字段wchan和wname都显示的是内核函数的函数符号名称信息,默认只显示6个字节。如果希望显示完整的函数名称,可以通过在字段名称后加冒号再加宽度数值的方式显示更丰富信息,即wchan:25。
ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 0 24524 28730 0
还有一些常用的信息可以搜集——进程的status字段和WCHAN字段,这些使用古老的ps就能查看(或许最开始就应该用ps看看这个进程是不是已经成僵尸进程了): [root@oel6 ~]# ps -flp...27288 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 D root 27288...而WCHAN字段(表示导致程序处于休眠/等待状态的函数调用)则有点儿被切掉了。...直接从它的源头读一下看看(再次说明一下,多试几次看看,毕竟我们还不知道这个进程到底是不是完全卡死了呢): [root@oel6 ~]# cat /proc/27288/wchan rpc_wait_bit_killable...sys_newfstatat+0x24/0x50 [] system_call_fastpath+0x16/0x1b [] 0xffffffffffffffff 可以看到最顶部的函数就是我们现在卡在的地方,正是上面WCHAN
lvtest1/file.img bs=1M count=1024 $ echo w > /proc/sysrq-trigger $ ps -eo ppid,pid,user,stat,pcpu,comm,wchan...:32 |grep D PPID PID USER STAT %CPU COMMAND WCHAN 2099 2178 root D+ 0.0
显示真实的命令名称(用以启动进程的程序名称) e 显示命令使用的环境变量 f 用分层格式来显示进程(显示父子进程关系) h 不显示头信息 k spec 指定用以将输出排序的列,同 --sort n 用数值显示 WCHAN...内核调度优先级 举例 按照 PID 逆序输出所有进程信息: ps -AFl O-p 本人终端结果如下: F S UID PID PPID C PRI NI ADDR SZ WCHAN...进程换出需要的交换空间大致大小 sz SZ 进程所占物理页大小 vsz/vsize VSZ 进程所占虚拟内存大小(KB) rss/rssize/rsz RSS/RSZ 进程驻留内存占用空间大小(kB) wchan...WCHAN 进程休眠的内核函数名称(- 表示进程正在运行,* 表示为多线程进程) … … 举例 按照自定义格式 pid,ppid,pgrp,comm 显示指定字段的进程信息: ps -o pid,
proc/[pid]/root /proc/[pid]/stack /proc/[pid]/statm /proc/[pid]/status /proc/[pid]/syscall /proc/[pid]/wchan...wchan /proc/[pid]/wchan显示当进程 sleep时, kernel当前运行的函数。...举例如下: [root@VM_0_13_centos ~]# cat /proc/28858/wchan poll_schedule_timeout 参考:http://man7.org/linux
服务器: [root@VM_0_6_centos ~]# ps -la F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME...[root@VM_0_6_centos ~]# ps -la F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD...hi there 此时在服务器终端查看服务器进程状态, [root@VM_0_6_centos ~]# ps -la F S UID PID PPID C PRI NI ADDR SZ WCHAN...观察进程状态, [root@VM_0_6_centos ~]# ps -la F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME...[root@VM_0_6_centos ~]# ps -la F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
[root@web ~]# ps -l //第一个 bash 的 PID 是 1363 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY... //第二个 bash 的 PID 是 1487 , 它的 PPID 就是第一个 bash 的 PID 1363 F S UID PID PPID C PRI NI ADDR SZ WCHAN...[root@web ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0...# nice -n 19 vim /tmp/a.txt & [1] 7720 [root@web ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN...WCHAN 进程所在的内核函数的名称,如果进程是多线程则显示* TTY controlling tty (terminal) 登录者的终端机位置,若为远程则使用动态端口接口(pts/n) TIME TIME
如果以 pid 递减输出,可以指定 k -pid 或 --sort -pid n 以数字表示 USER 和 WCHAN 列,包括 UID 和 GID -n namelist N namelist 设置查找内核函数名称的文件...,用于正确地显示 WCHAN 列。...默认搜索路径为: $PS_SYSMAP $PS_SYSTEM_MAP /proc/*/wchan /boot/System.map-$(uname -r) /boot/System.map