mysql查看线程完整执行命令_【原创】如何查看某进程下运行的线程

研究 Atlas 过程中,需要了解其进程模型(线程模型),那么如何查看其运行模式呢?

前提:Atlas 配置了 daemon 模式和 keepalive 功能。

[root@Betty conf]# vi modb.cnf

[mysql-proxy]

...

daemon = true

keepalive = true

...

查看方式:

1. ps 命令查看

从 man ps 中可以如下说明,可以显示进程关系,

To print a process tree:

ps -ejH

ps axjf

但 ps -ejH 显示出来的东东比较难看,所以采用第二种方式查看,

[root@Betty conf]# ps axjf|grep mysql-proxy|grep -v grep

1 3755 3754 3754 ? -1 S 0 0:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

3755 3756 3754 3754 ? -1 Sl 0 0:00 \_ mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

那么如何显示线程关系呢?有如下说明,

To get info about threads:

ps -eLf

ps axms

执行后输出(采用第一种方式查看,原因同上)

[root@Betty conf]# ps -eLf|grep mysql-proxy

UID PID PPID LWP C NLWP STIME TTY TIME CMD

root 3755 1 3755 0 1 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3756 0 5 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3757 0 5 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3758 0 5 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3759 0 5 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3760 0 5 15:14 ? 00:00:00 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 4154 18711 4154 0 1 16:32 pts/5 00:00:00 grep mysql-proxy

其中

LWP -- 轻量级进程,即线程,这里显示的是 thread id。

NLWP -- 线程数,即 number of threads in process。

如果还想要查看线程究竟运行在哪个 CPU 上,则执行如下命令,

[root@Betty conf]# ps -eo ruser,pid,ppid,lwp,psr,args -L|grep mysql-proxy

RUSER PID PPID LWP PSR COMMAND

root 3755 1 3755 2 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3756 1 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3757 0 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3758 3 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3759 1 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 3756 3755 3760 1 mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/modb.cnf

root 4162 18711 4162 2 grep mysql-proxy

[root@Betty conf]#

关键参数说明如下:

To see every process with a user-defined format:

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

...

-L Show threads, possibly with LWP and NLWP columns

...

psr PSR processor that process is currently assigned to.

...

2. pstree 命令查看

查看 mysql-proxy 对应的进程 id 。

[root@Betty conf]# ps -e |grep mysql-proxy

3755 ? 00:00:00 mysql-proxy

3756 ? 00:00:00 mysql-proxy

分别查看以上两个进程的树形关系。

[root@Betty conf]# pstree 3755

mysql-proxy---mysql-proxy---4*[{mysql-proxy}]

[root@Betty conf]# pstree -p 3756

mysql-proxy(3756)-+-{mysql-proxy}(3757)

|-{mysql-proxy}(3758)

|-{mysql-proxy}(3759)

`-{mysql-proxy}(3760)

[root@Betty conf]#

3. top 命令查看

查看 id 为 3756 的进程包含的线程。

[root@Betty conf]# top -Hp 3756

top - 17:32:19 up  8:26,  6 users,  load average: 0.00, 0.00, 0.00

Tasks:   5 total,   0 running,   5 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.1%ni, 99.7%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   3941948k total,   897296k used,  3044652k free,   116232k buffers

Swap:  5996536k total,        0k used,  5996536k free,   516676k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

3756 root      15   0  195m 3752 1804 S  0.0  0.1   0:00.00 mysql-proxy

3757 root      15   0  195m 3752 1804 S  0.0  0.1   0:00.00 mysql-proxy

3758 root      15   0  195m 3752 1804 S  0.0  0.1   0:00.00 mysql-proxy

3759 root      15   0  195m 3752 1804 S  0.0  0.1   0:00.00 mysql-proxy

3760 root      15   0  195m 3752 1804 S  0.0  0.1   0:00.00 mysql-proxy

按 f 后显示

Current Fields: AEHIOQTWKNMbcdfgjplrsuvyzX for window 1:Def

Toggle fields via field letter, type any other key to return

* A: PID = Process Id

* E: USER = User Name

* H: PR = Priority

* I: NI = Nice value

* O: VIRT = Virtual Image (kb)

* Q: RES = Resident size (kb)

* T: SHR = Shared Mem size (kb)

* W: S = Process Status

* K: %CPU = CPU usage

* N: %MEM = Memory usage (RES)

* M: TIME+ = CPU Time, hundredths

b: PPID = Parent Process Pid

c: RUSER = Real user name

d: UID = User Id

f: GROUP = Group Name

g: TTY = Controlling Tty

j: P = Last used cpu (SMP)

p: SWAP = Swapped size (kb)

l: TIME = CPU Time

r: CODE = Code size (kb)

s: DATA = Data+Stack size (kb)

u: nFLT = Page Fault count

v: nDRT = Dirty Pages count

y: WCHAN = Sleeping in Function

z: Flags = Task Flags

* X: COMMAND = Command name/line

Flags field:

0x00000001 PF_ALIGNWARN

0x00000002 PF_STARTING

0x00000004 PF_EXITING

0x00000040 PF_FORKNOEXEC

0x00000100 PF_SUPERPRIV

0x00000200 PF_DUMPCORE

0x00000400 PF_SIGNALED

0x00000800 PF_MEMALLOC

0x00002000 PF_FREE_PAGES (2.5)

0x00008000 debug flag (2.5)

0x00024000 special threads (2.5)

0x001D0000 special states (2.5)

0x00100000 PF_USEDFPU (thru 2.4)

按 j 后变化的项为

* J: P = Last used cpu (SMP)

按回车或空格保存,退回到 top 界面,显示如下

top - 17:34:07 up 8:27, 6 users, load average: 0.00, 0.00, 0.00

Tasks: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3941948k total, 897172k used, 3044776k free, 116264k buffers

Swap: 5996536k total, 0k used, 5996536k free, 516676k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ P COMMAND

3756 root 15 0 195m 3752 1804 S 0.0 0.1 0:00.00 1 mysql-proxy

3757 root 15 0 195m 3752 1804 S 0.0 0.1 0:00.00 0 mysql-proxy

3758 root 15 0 195m 3752 1804 S 0.0 0.1 0:00.00 1 mysql-proxy

3759 root 15 0 195m 3752 1804 S 0.0 0.1 0:00.00 1 mysql-proxy

3760 root 15 0 195m 3752 1804 S 0.0 0.1 0:00.00 1 mysql-proxy

在 top 的显示中会多出 P 这一列是最近一次运行该线程(进程)的CPU 。

4. 到进程对应的目录下查看

[root@Betty conf]# cat /proc/3756/status

Name: mysql-proxy

State: S (sleeping)

SleepAVG: 98%

Tgid: 3756

Pid: 3756

PPid: 3755

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 64

Groups: 0 1 2 3 4 6 10

VmPeak: 252512 kB

VmSize: 200244 kB

VmLck: 0 kB

VmHWM: 3752 kB

VmRSS: 3752 kB

VmData: 118404 kB

VmStk: 88 kB

VmExe: 16 kB

VmLib: 10888 kB

VmPTE: 288 kB

StaBrk: 0df5c000 kB

Brk: 0e087000 kB

StaStk: 7fffb0fea000 kB

Threads: 5

SigQ: 1/38784

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000381000

SigCgt: 0000000180004a03

CapInh: 0000000000000000

CapPrm: 00000000fffffeff

CapEff: 00000000fffffeff

Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000ffff

Mems_allowed: 00000000,00000001

[root@Betty conf]#

其中

Threads: 5

表示该进程下包含 5 个线程(3756 进程对应的线程 + 由其创建的工作线程)。

参考:

http://smilejay.com/2012/06/linux_view_threads/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值