linux 进程和线程调度top查看的是进程还是线程

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-!
3D打印将会融入我们的身体 服务领域从生到死
健康还是时尚? 残酷竞争促 智能手环分化
虚拟现实还只是电影中遥不可及的愿景
百度机器人商业首秀 人工智能在肯德基点鸡块薯条
4月28日消息,一年一度的GMIC大会于今日开幕,在下午的全球智能机器人大会上,地平线机器人技术创始人兼CEO余凯发表了开场演讲,认为人工智...
恰逢人工智能诞生60周年,由人工智能学会发起的2016全球人工智能技术大会暨人工智能60周年纪念活动启动仪式,在北京国家会议中心召开。老中...
据美国科技媒体网站The Verge4月30日报道,法国喷气滑雪冠军和世界摩托赛艇冠军佛朗基 萨帕塔(Franky Zapata)操控喷气动力 悬浮滑板 Flyboa...
斯坦福大学人工智能与伦理学教授杰瑞卡普兰认为,不久的将来,人类再也不用劳动。因为人工智能在自动化作业、自动驾驶,合成智能、执行能力...38243人阅读
linux系统&应用(61)
1. top 命令
top命令查看系统的资源状况
  load average表示在过去的一段时间内有多少个进程企图独占CPU
  zombie 进程 :不是异常情况。一个进程从创建到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的stop模式:与sleep进程应区别,sleep会主动放弃cpu,而stop是被动放弃cpu ,例单步跟踪,stop(暂停)的进程是无法自己回到运行状态的。
  cpu states:
  nice:让出百分比irq:中断处理占用
  idle:空间占用百分比 iowait:输入输出等待(如果它很大说明外存有瓶颈,需要升级硬盘(SCSI))
  Mem:内存情况
  设计思想:把资源省下来不用便是浪费,如添加内存后free值会不变,buff值会增大。 判断物理内存够不够,看交换分区的使用状态。
  交互命令:
  [Space]立即刷新显示
  [h]显示帮助屏幕
  [k] 杀死某进程。你会被提示输入进程 ID 以及要发送给它的信号。 一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
  [n] 改变显示的进程数量。你会被提示输入数量。
  [u] 按用户排序。
  [M] 按内存用量排序。
  [o][O] 改变显示项目的顺序。
  [P] 根据CPU使用百分比大小进行排序。
  [T] 根据时间/累计时间进行排序。
  [Ctrl+L] 擦除并且重写屏幕。
  [q] 退出程序。
  [r] 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
  [S] 切换到累计模式。
  [s] 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
  缩写含义:
  PID每个进程的ID
  USER进程所有者的用户名
  PRI每个进程的优先级别
  NI每个优先级的值
  SIZE 进程的代码大小加上数据大小再加上堆栈空间大小的总数,单位是KB RSS 进程占用的物理内存的总数量,单位是KB
  SHARE进程使用共享内存的数量
  STAT 进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态
  %CPU进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
  %MEM进程占用的物理内存占总内存的百分比
  TIME进程自启动以来所占用的总CPU时间
  CPU CPU标识
  COMMAND进程的命令名称
ps查看当前用户的活动进程,如果加上参数可以显示更多的信息,如-a,显示所有用户的进程
  ps ax :tty值为“?”是守护进程,叫deamon 无终端,大多系统服务是此进程,内核态进程是看不到的
&&&&& ps axf :看进程树,以树形方式现实进程列表敲 ,init是1号进程,系统所有进程都是它派生的,杀不掉
&&&&& ps axm :会把线程列出来。在linux下进程和线程是统一的,是轻量级进程的两种方式。
  ps axu :显示进程的详细状态。
  vsz:说此进程一共占用了多大物理内存。
  rss:请求常驻内存多少
========================================================================================
其实linux没有线程,都是用进程模仿的
1. ps -ef f
用树形显示进程和线程,比如说我想找到proftp现在有多少个进程/线程,可以用
$ ps -ef f | grep proftpd
Dec23 ? S 0:00 proftpd:&& (accepting&& connections)& &
0 Dec23 ? S 7:57 \_ proftpd: jack - ftpsrv:&& IDLE
0 Dec23 ? S 4:56 \_ proftpd: jack - ftpsrv:&& IDLE
这样就可以看到proftpd这个进程下面挂了两个线程。
在Linux下面好像因为没有真正的线程,是用进程模拟的,有一个是辅助线程,所以真正程序开的线程应该只有一个。
2. pstree -c也可以达到相同的效果
$ pstree -c | grep proftpd
|-proftpd-+-proftpd
| `-proftpd
3. cat /proc/${pid}/status
可以查看大致的情况
4.& pstack
有些系统可以用这个东东,可以查看所有线程的堆栈
如何查看进程中各线程的内存占用情况?
用ps aux只能查看到进程,如果进程里面使用了pthread编程,用什么命令才能查询到进程里的线程资源占用?
ps aux | grep不就是了
参考 /tech/16/167005.html
&&&&&& /willor/blog/item/fd58e6c5ea840ca38326ac6a.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1385848次
积分:12059
积分:12059
排名:第913名
原创:177篇
转载:217篇
评论:88条
(1)(2)(3)(1)(2)(1)(1)(1)(1)(4)(1)(1)(2)(1)(3)(3)(5)(3)(3)(4)(4)(2)(2)(1)(2)(5)(5)(1)(2)(4)(6)(5)(7)(11)(15)(2)(10)(4)(34)(16)(21)(2)(1)(7)(13)(2)(5)(10)(8)(5)(3)(5)(3)(10)(24)(2)(7)(4)(6)(8)(3)(2)(1)(2)(4)(9)(7)(2)(2)(9)(4)(6)(2)(1)(5)(5)(2)(1)首页 & Linux/unix/maclinux下多线程查看方法 linux 在分析问题时,经常要查看进程的相关信息,但要进一步深入剖析时,就需要查看进程下的各线程的情况。先说下,如何了解一个进程到底开启了多少线程? 一、proc查看 该方法是个人最为推荐,也最喜欢的一种方法。进程文件下,有几种方式可以获取目前进程开启的进程数。 查看status文件:# cat /proc/5877/status
S (sleeping)
……………………省略
……………………省略 上面的threads 就是mysqld进程(这里pid是5877)开启的线程数,为107个。 查看sched文件:# cat /proc/5877/sched
mysqld (5877, #threads: 107)
---------------------------------------------------------
se.exec_start
se.vruntime
se.sum_exec_runtime
se.statistics.wait_start
………………省略 第一行就指出了mysqld的pid和总线程数。 查看线程的具体情况:# ls /proc/5877/task
9318 task下是以线程id 值命名的目录,可以使用ls |wc 统计出的值和上面两种方式查出的结果一样。进入各线程id的目录,可以查看具体线程的资源信息。 注:上面查看文件的方法,主要是对单进程的线程统计。如像统计apache、nginx、zabbix这类程序会同时开启N个进程。如果要统计这类程序的线程数,就是所有进程下的线程数的之和。 二、pstree查看法 该方法也属于相对比较简单的方法,如下:# pstree
init─┬─acpid
├─apache2───15*[apache2]
├─cf-execd
├─cf-serverd
├─dbus-daemon
├─dhclient3
├─6*[getty]
├─java───13*[{java}]
├─mysqld───106*[{mysqld}]
├─rsyslogd───3*[{rsyslogd}]
├─snmptt───snmptt
├─sshd───sshd───sshd───bash───sudo───su───bash───pstree
├─udevd───2*[udevd]
├─upstart-socket-
├─upstart-udev-br
├─vsftpd
├─whoopsie───{whoopsie}
├─zabbix_agentd───4*[zabbix_agentd]
└─zabbix_server─┬─105*[zabbix_server]
└─zabbix_server───sh───fping 如上面,apache共有16个线程(15+1),mysqld有107个线程(106+1)。如果想查看某个进程的详细线程情况,可以使用pstree -p &pid&的方法:#
mysqld(5877)─┬─{mysqld}(5889)
├─{mysqld}(5890)
├─{mysqld}(5891)
├─{mysqld}(5892)
├─{mysqld}(5893)
……………………省略
# pstree -p 5877 |wc -l
106 三、ps命令查看法 ps命令中与线程相关的参数比较多,具体可以使用man ps|grep threads 查看H
Show threads as if they were processes.
Show threads, possibly with LWP and NLWP columns.
Show threads after processes.
Show threads after processes.
Show threads, possibly with SPID column. 这里主要以-L参数为例:#
ps -eLf | grep mysql
00:03:13 /usr/sbin/mysqld
00:00:00 /usr/sbin/mysqld
00:00:39 /usr/sbin/mysqld
00:01:07 /usr/sbin/mysqld
00:01:24 /usr/sbin/mysqld
00:01:24 /usr/sbin/mysqld
00:01:22 /usr/sbin/mysqld
00:21:38 /usr/sbin/mysqld
………………省略 -L参数显示进程,并尽量显示其LWP(线程ID)和NLWP(线程的个数)。上面命令查询结果的第二列为PID,第三列为PPID,第四列为LWP,第六列为NLWP。 ps 属于linux下相对比较全能且强大的命令,其还可以查看具体某个线程运行在哪个CPU上,如下:# ps -eo ruser,pid,ppid,lwp,psr,args -L | grep mysql
0 /usr/sbin/mysqld
1 /usr/sbin/mysqld
1 /usr/sbin/mysqld
0 /usr/sbin/mysqld
0 /usr/sbin/mysqld
0 /usr/sbin/mysqld
0 /usr/sbin/mysqld
2 /usr/sbin/mysqld
3 /usr/sbin/mysqld
0 /usr/sbin/mysqld
3 /usr/sbin/mysqld 其中,每一列依次为:用户ID,进程ID,父进程ID,线程ID,运行该线程的CPU的序号,命令行参数(包括命令本身)。 四、top命令查看 同样top也属于全能型命令(也是相对的),在top命令后,按H键;或者top -H 可以显示各个线程的情况。在top中也可以查看进程(或线程)在哪个CPU上执行的,执行top后,按f,按j(选中* J: P = Last used cpu (SMP)),然后按空格或回车退出设置,在top的显示中会多出P这一列是最近一次运行该线程(或进程)的CPU。 五、pstack查看 pstack命令一般情况下用不到,其是一个栈跟踪的命令 。一般和 core dump和程序分析相关,也可以获取线程的详细信息。如:# pstack 2178
Thread 4 (Thread 0xb7fd7b90 (LWP 2179)):
0x in __kernel_vsyscall ()
0x in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i686/nosegneg/libpthread.so.0
0x00163f4f in ?? () from /usr/lib/libisc.so.15
0x in start_thread () from /lib/i686/nosegneg/libpthread.so.0
0x005d4d7e in clone () from /lib/i686/nosegneg/libc.so.6
Thread 3 (Thread 0xb75d6b90 (LWP 2180)):
0x in __kernel_vsyscall ()
0x00941c02 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/i686/nosegneg/libpthread.so.0
0x in isc_condition_waituntil () from /usr/lib/libisc.so.15
0x in ?? () from /usr/lib/libisc.so.15
0x in start_thread () from /lib/i686/nosegneg/libpthread.so.0
0x005d4d7e in clone () from /lib/i686/nosegneg/libc.so.6
Thread 2 (Thread 0xb6bd5b90 (LWP 2181)):
0x in __kernel_vsyscall ()
0x005d5496 in epoll_wait () from /lib/i686/nosegneg/libc.so.6
0x in ?? () from /usr/lib/libisc.so.15
0x in start_thread () from /lib/i686/nosegneg/libpthread.so.0
0x005d4d7e in clone () from /lib/i686/nosegneg/libc.so.6
Thread 1 (Thread 0xb7fd86d0 (LWP 2178)):
0x in __kernel_vsyscall ()
0x in sigsuspend () from /lib/i686/nosegneg/libc.so.6
0x in isc_app_run () from /usr/lib/libisc.so.15
0x002e9623 in main () 以上是对named进程进行的一个分析。可以看出一分有四个线程,对每个线程的程序调用程序print 出来了。
本站的发展离不开您的资助,金额随意,欢迎来赏!
分类: Linux/unix/mac linux, threads您可能也喜欢Linux目录对文件权限的意义 系统安全服务守护进程SSSD time的结果输入到文件 linux下查看wwn号 (1)USM管理ATAE刀片 捐助本站
如您感觉本博客有用,可扫码向本博客捐赠近期文章 syslog-ng+loganalyzer搭建日志集中监控平台 syslog-ng日志应用详解 inotify与Auditd实现文件操作记录和审计 python异步 I/O模块gevent 使用Atlas配置MySQL读写分离文章归档 文章归档 选择月份 2017年一月 &(3) 2016年十二月 &(4) 2016年十一月 &(6) 2016年十月 &(3) 2016年九月 &(1) 2016年八月 &(6) 2016年七月 &(3) 2016年六月 &(10) 2016年五月 &(18) 2016年四月 &(5) 2016年三月 &(2) 2016年二月 &(3) 2016年一月 &(7) 2015年十二月 &(8) 2015年十一月 &(9) 2015年十月 &(7) 2015年九月 &(8) 2015年八月 &(23) 2015年七月 &(11) 2015年六月 &(15) 2015年五月 &(23) 2015年四月 &(14) 2015年三月 &(22) 2015年二月 &(15) 2015年一月 &(24) 2014年十二月 &(12) 2014年十一月 &(16) 2014年十月 &(19) 2014年九月 &(18) 2014年八月 &(18) 2014年七月 &(20) 2014年六月 &(21) 2014年五月 &(24) 2014年四月 &(16) 2014年三月 &(29) 2014年二月 &(22) 2014年一月 &(22) 2013年十二月 &(24) 2013年十一月 &(20) 2013年十月 &(18) 2013年九月 &(16) 2013年八月 &(16) 2013年七月 &(20) 2013年六月 &(21) 2013年五月 &(19) 2013年四月 &(18) 2013年三月 &(21) 2013年二月 &(17) 2013年一月 &(18) 2012年十二月 &(24) 2012年十一月 &(18) 2012年十月 &(17) 2012年九月 &(17) 2012年八月 &(18) 2012年七月 &(26) 2012年六月 &(36) 2012年五月 &(36) 2012年四月 &(28) 2012年三月 &(46) 2012年二月 &(23) 2012年一月 &(15) 2011年十二月 &(27) 2011年十一月 &(59) 2011年十月 &(19) 2011年九月 &(16) 2011年八月 &(46)

我要回帖

更多关于 linux top 查看线程 的文章

 

随机推荐