Linux下查看进程和线程
关于linux的进程中的各个线程cpu占用情况的分析和查看
关于linux的进程中的各个线程cpu占⽤情况的分析和查看我们常常会在新开的服搭建⼀个游戏的server,有时候要进⾏压⼒測试,那么怎样来看呢,⼀般我们会通过top命令查看各个进程的cpu和内存占⽤情况,获得到了我们的进程id,然后我们或许会通过pstack命令查看⾥边的各个线程id以及相应的线程如今正在做什么事情,分析多组数据就能够获得哪些线程⾥有慢操作影响了server的性能,从⽽得到解决⽅式。
⽐⽅这种以组数据:[root@AY130816144542124256Z bin]# pstack 30222Thread 9 (Thread 0x7f729adc1700 (LWP 30251)):#0 0x00007f72a429b720 in sem_wait () from /lib64/libpthread.so.0#1 0x0000000000ac5eb6 in Semaphore::down() ()#2 0x0000000000ac5cac in Queue::get() ()#3 0x00000000009a583f in DBManager::processUpdate(Queue*) ()#4 0x00000000009a4bfb in dbUpdateThread(void*) ()#5 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#6 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 8 (Thread 0x7f727c579700 (LWP 30252)):#0 0x00007f72a429b720 in sem_wait () from /lib64/libpthread.so.0#1 0x0000000000ac5eb6 in Semaphore::down() ()#2 0x0000000000ac5cac in Queue::get() ()#3 0x00000000009a5799 in DBManager::processQuery(Queue*) ()#4 0x00000000009a4c3a in dbQueryThread(void*) ()#5 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#6 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 7 (Thread 0x7f7257fff700 (LWP 30253)):#0 0x00007f72a42997bb in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0#1 0x00007f72a549ee08 in utils::thread::condition_impl::timed_wait(int) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#2 0x00007f72a549ebd3 in utils::thread::Condition::timed_wait(int) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#3 0x00000000009d5f57 in utils::MessageQueue<FightInfo*>::pop() ()#4 0x00000000009d5557 in FightReport::svc() ()#5 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#6 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#7 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 6 (Thread 0x7f72397b7700 (LWP 30254)):#0 0x00007f72a4588fc3 in poll () from /lib64/libc.so.6#1 0x00007f72a0fbded4 in __libc_res_nsend () from /lib64/libresolv.so.2#2 0x00007f72a0fba76a in __libc_res_nquery () from /lib64/libresolv.so.2#3 0x00007f72a0fbad29 in __libc_res_nquerydomain () from /lib64/libresolv.so.2#4 0x00007f72a0fbb9cf in __libc_res_nsearch () from /lib64/libresolv.so.2#5 0x00007f729adc37a7 in _nss_dns_gethostbyname4_r () from /lib64/libnss_dns.so.2#6 0x00007f72a457a4c3 in gaih_inet () from /lib64/libc.so.6#7 0x00007f72a457cb20 in getaddrinfo () from /lib64/libc.so.6#8 0x00007f72a56fc782 in Curl_getaddrinfo_ex () from /usr/lib64/libcurl.so.4#9 0x00007f72a56f1d42 in Curl_getaddrinfo () from /usr/lib64/libcurl.so.4#10 0x00007f72a56c9e77 in Curl_resolv () from /usr/lib64/libcurl.so.4#11 0x00007f72a56ca138 in Curl_resolv_timeout () from /usr/lib64/libcurl.so.4#12 0x00007f72a56d8d88 in ?() from /usr/lib64/libcurl.so.4#13 0x00007f72a56ddb79 in ?() from /usr/lib64/libcurl.so.4#14 0x00007f72a56de76e in Curl_connect () from /usr/lib64/libcurl.so.4#15 0x00007f72a56e69b0 in Curl_perform () from /usr/lib64/libcurl.so.4#16 0x0000000000ae6e3d in HttpClient::svc() ()#17 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#18 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#19 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 5 (Thread 0x7f721af6f700 (LWP 30255)):#0 0x00007f72a455691d in nanosleep () from /lib64/libc.so.6#1 0x000000000098cb8a in Sleep(unsigned long) ()#2 0x000000000098b87d in DynResource::svc() ()#3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#5 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 4 (Thread 0x7f71fc727700 (LWP 30256)):#0 0x00007f72a455691d in nanosleep () from /lib64/libc.so.6#1 0x000000000098cb8a in Sleep(unsigned long) ()#2 0x0000000000a61516 in PlayerOpLogThread::svc() ()#3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#5 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 3 (Thread 0x7f71ddedf700 (LWP 30257)):#0 0x00007f72a4592c73 in epoll_wait () from /lib64/libc.so.6#1 0x00007f72a51f334f in Epoll_Reactor::run_reactor_event_loop() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2#2 0x00007f72a51f2523 in Net_Thread::svc() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2#3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#5 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 2 (Thread 0x7f71bf697700 (LWP 30258)):#0 0x00007f72a4592c73 in epoll_wait () from /lib64/libc.so.6#1 0x00007f72a51f334f in Epoll_Reactor::run_reactor_event_loop() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2#2 0x00007f72a51f2523 in Net_Thread::svc() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2#3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1#4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0#5 0x00007f72a459267d in clone () from /lib64/libc.so.6Thread 1 (Thread 0x7f72a60ae7e0 (LWP 30222)):#0 0x00007f72a4584c95 in _xstat () from /lib64/libc.so.6#1 0x00007f72a45483e0 in __tzfile_read () from /lib64/libc.so.6#2 0x00007f72a4547864 in tzset_internal () from /lib64/libc.so.6#3 0x00007f72a4547b20 in tzset () from /lib64/libc.so.6#4 0x00007f72a4546699 in timelocal () from /lib64/libc.so.6#5 0x0000000000b0b08d in Achieve::GetRemainTime(AchieveTemplate*) ()#6 0x0000000000b115ca in Achieve::update() ()#7 0x0000000000a197ce in Player::update() ()#8 0x0000000000b1b272 in PlayerMng::Tick() ()#9 0x0000000000a73105 in GameServer::FrameTick(unsigned int) ()#10 0x0000000000a6ff80 in GameServer::run() ()#11 0x0000000000a773a1 in main ()[root@AY130816144542124256Z gameserver]# ps -eLo pid,lwp,pcpu | grep 3022230222 30222 31.430222 30251 0.030222 30252 0.030222 30253 0.030222 30254 0.030222 30255 0.030222 30256 1.230222 30257 1.230222 30258 1.0多组数据显⽰表明我们的主逻辑线程的确占⽤的cpu⾮常⾼,发现事实上在Achieve::update() 的时候做了太多没实⽤的推断,⽽且能够降低循环进⼊的次数的。
Linux系统如何查看进程的线程数
Linux系统如何查看进程的线程数Linux系统如何查看进程的线程数Linux系统的进程是由线程组成的,当然Linux进程下的线程数是不固定的,可以是一个进程,也可以是多个进程。
本文就来教大家Linux系统如何查看进程的线程数?一、使用命令查看Linux进程的线程数1、使用top命令,具体用法是 top -H加上这个选项,top的每一行就不是显示一个进程,而是一个线程。
2、使用ps命令,具体用法是 ps -xH这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。
3、使用ps命令,具体用法是 ps -mq PID这样可以看到指定的进程产生的线程数目。
二、Linux系统工具查看Linux进程看看这个目录吧,/proc/5000/ 这里面有你所有想要的。
其实stat代表着当前的一些信息。
使用ps命令来查看进程的时候,进程状态分别对应的含义如下:D 不可中断睡眠(通常是在IO操作)收到信号不唤醒和不可运行,进程必须等待直到有中断发生R 正在运行或可运行(在运行队列排队中)S 可中断睡眠(休眠中,受阻,在等待某个条件的形成或接受到信号)T 已停止的` 进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信号后停止运行W 正在换页(2.6.内核之前有效)X 死进程(未开启)Z 僵尸进程进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放BSD风格的《高优先级(not nice to other users)N 低优先级(nice to other users)L 页面锁定在内存(实时和定制的IO)s 一个信息头l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)+ 在前台进程组以上就是Linux查看进程的线程数的方法了,Linux进程的线程数是进程的一个重要参数,也是管理Linux进程应该要知道的信息。
【Linux系统如何查看进程的线程数】。
Linux命令行中的进程状态查看技巧
Linux命令行中的进程状态查看技巧进程(Process)是指计算机中正在运行的程序的实例。
在Linux命令行中,我们可以使用不同的命令来查看和管理系统中运行的进程。
本文将介绍一些常用的Linux命令行中的进程状态查看技巧。
一、查看当前运行的进程1. ps命令ps命令是Linux系统中最常用的查看进程的命令之一。
它的基本用法是:```shellps aux```该命令将显示当前运行的所有进程的详细信息,包括进程ID (PID)、父进程ID(PPID)、用户ID(UID)、CPU占用率、内存占用等等。
这些信息可以帮助我们了解系统资源的使用情况,并且可以根据需要对进程进行管理。
2. top命令top命令提供了一个实时的进程监视器,可以动态地显示系统中运行的进程和它们的资源使用情况。
运行top命令后,可以按需查看各个进程的CPU占用率、内存占用、进程ID等信息,并可以通过快捷键进行排序和过滤。
使用top命令的基本方法是在命令行中输入:```shelltop```二、查看特定进程1. pgrep命令pgrep命令允许通过进程名称或其它属性查找进程的进程ID。
例如,要查找名为"apache"的进程,可以使用以下命令:```shellpgrep apache```该命令将显示满足条件的进程的PID。
2. pstree命令pstree命令以树状图的形式显示进程的层次结构关系。
可以通过以下方式使用pstree命令:```shellpstree```该命令将显示系统中所有进程的层次结构关系,使我们更清晰地了解进程之间的关系。
三、查看进程状态1. ps命令在ps命令中,我们可以使用不同的参数来查看进程的状态。
例如,要查看指定进程ID的状态,可以使用以下命令:```shellps -p <pid> -o state```其中,<pid>是进程ID。
2. top命令在top命令中,我们可以使用不同的快捷键来查看进程的状态。
linux一些常用的查看资源使用命令
linux一些常用的查看资源使用命令
在Linux系统中,可以使用以下命令来查看资源的使用情况:
1. top:实时查看系统的整体运行情况,包括CPU、内存、进程等的使用情况。
2. free:查看系统内存的使用情况,包括空闲内存、已使用内存、缓存和缓冲区的使用情况。
3. df:查看文件系统的磁盘空间使用情况,包括总容量、已用空间、剩余空间和挂载点。
4. du:查看目录或文件的磁盘使用情况,可以查看目录下所有文件的大小。
5. ps:查看系统当前运行的进程,可以查看进程的PID、占用CPU和内存等信息。
6. iostat:查看系统磁盘和设备的IO使用情况,包括读写速度、IOPS等。
7. netstat:查看网络连接和网络统计信息,包括监听端口、已建立的连接等。
8. sar:查看系统性能统计数据,包括CPU使用率、内存使用率、磁盘IO等。
9. vmstat:查看系统的虚拟内存使用情况,包括交换空间、页缓存、进程等。
10. lsof:查看系统打开的文件和网络连接,可以查看进程打开的文件和端口。
以上只是常用的几个命令,实际上Linux还有很多其他命令可以查看系统资源的使用情况,可以根据具体需求选择适合的命令来使用。
Linux命令高级技巧使用ps命令查看系统进程和资源占用情况
Linux命令高级技巧使用ps命令查看系统进程和资源占用情况在Linux系统中,ps命令是一个非常常用的命令,用于查看系统的进程和资源占用情况。
它可以显示正在运行的进程的详细信息,包括进程的PID(进程ID)、CPU占用率、内存占用率等。
本文将介绍一些ps命令的高级技巧,帮助您更好地使用ps命令查看系统进程和资源占用情况。
1. 使用ps命令查看所有进程要查看系统中所有的进程,可以使用以下命令:```ps -ef```该命令将显示所有正在运行的进程的详细信息,包括进程的PID、父进程的PID、进程的状态、CPU占用率、内存占用率等。
2. 使用ps命令按照进程ID排序有时候,我们需要按照进程ID的顺序查看进程信息。
可以使用以下命令:```ps -ef --sort=pid```该命令将按照进程ID的顺序显示进程信息。
3. 使用ps命令查看指定用户的进程如果您只想查看特定用户的进程信息,可以使用以下命令:```ps -u username```将`username`替换为您要查看的用户名。
该命令将只显示该用户运行的进程信息。
4. 使用ps命令查看特定进程的详细信息要查看特定进程的详细信息,可以使用以下命令:```ps -p pid -o pid,ppid,cmd,%cpu,%mem```将`pid`替换为您要查看的进程的PID。
该命令将显示该进程的PID、父进程的PID、命令行、CPU占用率和内存占用率等信息。
5. 使用ps命令显示进程树有时候,我们希望以树状结构显示进程信息,可以使用以下命令:```ps -ef --forest```该命令将以树状结构显示进程信息,方便我们查看进程之间的关系。
6. 使用ps命令查看进程的线程信息有些进程是多线程的,如果您想查看特定进程的线程信息,可以使用以下命令:```ps -T -p pid```将`pid`替换为您要查看的进程的PID。
该命令将显示该进程的线程信息,包括线程的ID、状态、CPU占用率和内存占用率等。
linux下查看进程(ps命令)
linux下查看进程(ps命令) Linux中的ps命令是Process Status的缩写。
ps命令⽤来列出系统中当前运⾏的那些进程。
ps命令列出的是当前那些进程的快照,就是执⾏ps命令的那个时刻的那些进程,如果想要动态的显⽰进程信息,就可以使⽤top命令。
要对进程进⾏监测和控制,⾸先必须要了解当前进程的情况,也就是需要查看当前进程,⽽ ps 命令就是最基本同时也是⾮常强⼤的进程查看命令。
使⽤该命令可以确定有哪些进程正在运⾏和运⾏的状态、进程是否结束、进程有没有僵死、哪些进程占⽤了过多的资源等等。
总之⼤部分信息都是可以通过执⾏该命令得到的。
ps 为我们提供了进程的⼀次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该⽤ top ⼯具。
kill 命令⽤于杀死进程。
linux上进程有5种状态:1. 运⾏(正在运⾏或在运⾏队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中断(收到信号不唤醒和不可运⾏, 进程必须等待直到有中断发⽣)4. 僵死(进程已终⽌, 但进程描述符存在, 直到⽗进程调⽤wait4()系统调⽤后释放)5. 停⽌(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停⽌运⾏运⾏)ps⼯具标识进程的5种状态码:D 不可中断 uninterruptible sleep (usually IO)R 运⾏ runnable (on run queue)S 中断 sleepingT 停⽌ traced or stoppedZ 僵死 a defunct (”zombie”) process1.命令格式:ps[参数]2.命令功能:⽤来显⽰当前进程的状态3.命令参数:a 显⽰所有进程-a 显⽰同⼀终端下的所有程序-A 显⽰所有进程c 显⽰进程的真实名称-N 反向选择-e 等于“-A”e 显⽰环境变量f 显⽰程序间的关系-H 显⽰树状结构r 显⽰当前终端的进程T 显⽰当前终端的所有程序u 指定⽤户的所有进程-au 显⽰较详细的资讯-aux 显⽰所有包含其他使⽤者的⾏程-C<命令> 列出指定命令的状况--lines<⾏数> 每页显⽰的⾏数--width<字符数> 每页显⽰的字符数--help 显⽰帮助信息--version 显⽰版本显⽰4.使⽤实例:实例1:显⽰所有进程信息命令:ps -A输出:代码如下:[root@localhost test6]# ps -APID TTY TIME CMD1 ? 00:00:00 init2 ? 00:00:01 migration/03 ? 00:00:00 ksoftirqd/04 ? 00:00:01 migration/15 ? 00:00:00 ksoftirqd/16 ? 00:29:57 events/07 ? 00:00:00 events/18 ? 00:00:00 khelper49 ? 00:00:00 kthread54 ? 00:00:00 kblockd/055 ? 00:00:00 kblockd/156 ? 00:00:00 kacpid217 ? 00:00:00 cqueue/0说明:实例2:显⽰指定⽤户信息命令:ps -u root输出:代码如下:[root@localhost test6]# ps -u rootPID TTY TIME CMD1 ? 00:00:00 init2 ? 00:00:01 migration/03 ? 00:00:00 ksoftirqd/04 ? 00:00:01 migration/15 ? 00:00:00 ksoftirqd/16 ? 00:29:57 events/07 ? 00:00:00 events/18 ? 00:00:00 khelper49 ? 00:00:00 kthread54 ? 00:00:00 kblockd/055 ? 00:00:00 kblockd/156 ? 00:00:00 kacpid说明:实例3:显⽰所有进程信息,连同命令⾏命令:ps -ef输出:代码如下:[root@localhost test6]# ps -efUID PID PPID C STIME TTY TIME CMD root 1 0 0 Nov02 ? 00:00:00 init [3]root 2 1 0 Nov02 ? 00:00:01 [migration/0] root 3 1 0 Nov02 ? 00:00:00 [ksoftirqd/0] root 4 1 0 Nov02 ? 00:00:01 [migration/1] root 5 1 0 Nov02 ? 00:00:00 [ksoftirqd/1] root 6 1 0 Nov02 ? 00:29:57 [events/0] root 7 1 0 Nov02 ? 00:00:00 [events/1]root 8 1 0 Nov02 ? 00:00:00 [khelper]root 49 1 0 Nov02 ? 00:00:00 [kthread]root 54 49 0 Nov02 ? 00:00:00 [kblockd/0]root 55 49 0 Nov02 ? 00:00:00 [kblockd/1]root 56 49 0 Nov02 ? 00:00:00 [kacpid]说明:实例4: ps 与grep 常⽤组合⽤法,查找特定进程命令:ps -ef|grep ssh输出:代码如下:[root@localhost test6]# ps -ef|grep sshroot 2720 1 0 Nov02 ? 00:00:00 /usr/sbin/sshdroot 17394 2720 0 14:58 ? 00:00:00 sshd: <a href="mailto:root@pts/0">root@pts/0</a>root 17465 17398 0 15:57 pts/0 00:00:00 grep ssh说明:实例5:将⽬前属于您⾃⼰这次登⼊的 PID 与相关信息列⽰出来命令:ps -l输出:代码如下:[root@localhost test6]# ps -lF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps说明:各相关信息的意义:F 代表这个程序的旗标 (flag), 4 代表使⽤者为 super userS 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内⽂介绍UID 程序被该 UID 所拥有PID 就是这个程序的 ID !PPID 则是其上级⽗程序的IDC CPU 使⽤的资源百分⽐PRI 这个是 Priority (优先执⾏序) 的缩写,详细后⾯介绍NI 这个是 Nice 值,在下⼀⼩节我们会持续介绍ADDR 这个是 kernel function,指出该程序在内存的那个部分。
linux查看线程名称的方法
linux查看线程名称的方法在Linux环境下,要查看线程名称,可以使用以下方法:1.通过ps命令查看线程名称:在Linux中,可以使用ps命令(process status)来查看进程的状态信息,包括进程的名称、PID(进程ID)、线程数量等。
使用如下命令来查看所有线程的信息:```ps -eLf```输出结果中,第一个列是线程的ID(LWP),第四列是进程ID (PID),第七列是线程的名称(COMM)。
通过查看该列的内容,就可以获取线程的名称。
除了使用-eLf选项,还可以使用其他选项,如-a(显示终端上的所有进程)、-A(显示所有进程)、u(显示用户相关的进程)等。
2.通过top命令查看线程名称:top命令是一个实时的动态监视工具,可以显示系统的整体状态和各个进程的资源使用情况。
默认情况下,top命令会按照CPU使用率降序排序,展示前几个消耗CPU资源最多的进程信息。
我们可以使用以下命令来查看所有线程的信息:```top -H```在top命令的输出结果中,PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND等列,可以查看到线程的ID(PID)、进程的名称(COMMAND)等信息。
top命令支持交互式操作,可以通过按键进行排序和筛选操作,如按下P键按照CPU使用率排序。
3.通过pstree命令查看线程名称:pstree命令可以以树状结构显示进程和子进程之间的关系。
可以使用如下命令来查看指定进程及其所有子进程的信息:pstree -p <PID>```这个命令输出了树状结构的进程和子进程,通过查看输出结果,可以获取线程的名称信息。
-p选项可以显示进程的PID。
4.通过/proc文件系统查看线程名称:在Linux系统中,每个进程都可以在/proc目录下找到一个以其PID为名称的目录,例如/proc/1234。
这个目录中包含了与该进程相关的各种信息。
Linux下查看线程数的几种方法汇总
Linux下查看线程数的⼏种⽅法汇总 Linux下查看线程数的⼏种⽅法汇总 作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。
⼀.Linux下查看某个进程的线程数量 pstree命令以树状图显⽰进程间的关系(display a tree of processes)。
ps命令可以显⽰当前正在运⾏的那些进程的信息,但是对于它们之间的关系却显⽰得不够清晰。
在Linux系统中,系统调⽤fork可以创建⼦进程,通过⼦shell也可以创建⼦进程,Linux系统中进程之间的关系天⽣就是⼀棵树,树的根就是进程PID为1的init进程。
1>.安装pstree命令⾏⼯具,包名为:“psmisc”[root@yinzhengjie bin]# yum -y install psmiscLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfileResolving Dependencies--> Running transaction check---> Package psmisc.x86_64 0:22.20-15.el7 will be installed--> Finished Dependency ResolutionDependencies Resolved==================================================================================================================================================================== Package Arch Version Repository Size==================================================================================================================================================================== Installing:psmisc x86_64 22.20-15.el7 base 141 kTransaction Summary==================================================================================================================================================================== Install 1 PackageTotal download size: 141 kInstalled size: 475 kDownloading packages:psmisc-22.20-15.el7.x86_64.rpm | 141 kB 00:00:00Running transaction checkRunning transaction testTransaction test succeededRunning transactionInstalling : psmisc-22.20-15.el7.x86_64 1/1Verifying : psmisc-22.20-15.el7.x86_64 1/1Installed:psmisc.x86_64 0:22.20-15.el7Complete![root@yinzhengjie bin]#[root@yinzhengjie bin]# yum -y install psmisc2>.相关参数介绍Usage: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -g ] [ -u ][ -A | -G | -U ] [ PID | USER ]pstree -VDisplay a tree of processes.-a, --arguments 显⽰命令时候,并显⽰其参数的完整内容-A, --ascii 各进程树之间的连接以ASCII码字符来连接-c, --compact 取消同名兄弟进程的合并(默认会将同名的兄弟进程合并)-h, --highlight-all 突出当前进程及其祖先-H PID,--highlight-pid=PID 突出这个过程和它的祖先-g, --show-pgids 显⽰进程组ID;-G, --vt100 使⽤VT100线绘制字符-l, --long 不要截断长线。
Linux-如何查看系统中的线程
做这件事情是有初衷的,我有一台CentOS5的Server上跑OpenVz虚拟机,其中有一台虚拟机工作不正常,最终查到的原因是线程数被限制的太低了,导致里面的服务起不来,在OpenVz的主机上可以通过下面的命令查看到虚拟机(ID 101)的状态# vzctl exec 101 cat /proc/user_beancounters|grep numproc# 或者直接在101这台虚拟机上执行 cat /proc/user_beancounters|grep numproc,结果一样# resource held maxheld barrier limit failcntnumproc 123 600 600 600 55注意到第一行123,实际就是当前虚拟机的线程总数。
然而这个user_beancounters文件是vz独有的,对于一般的CentOS主机,并没有这种文件可以查看,下面就是几种查看普通机器线程总数的方式,很简单,仅仅为了做下笔记。
# ps 提供了 -eLf 查看线程状态root@localhost[0]~15:55:11# ps -eLfUID PID PPID LWP C NLWP STIME TTY TIME CMDroot 1 0 1 0 1 08:45 ? 00:00:01 init [3]root 2 1 2 0 1 08:45 ? 00:00:00 [migration/0]root 3 1 3 0 1 08:45 ? 00:00:00 [ksoftirqd/0]root 4 1 4 0 1 08:45 ? 00:00:00 [watchdog/0]root 5 1 5 0 1 08:45 ? 00:00:00 [events/0]root 6 1 6 0 1 08:45 ? 00:00:00 [khelper]root 7 1 7 0 1 08:45 ? 00:00:00 [kthread]root 3329 2652 3329 0 1 08:52 ? 00:00:00 sshd: root@pts/0root 3331 3329 3331 0 1 08:52 pts/0 00:00:00 -bashroot 15898 3331 15898 0 1 15:55 pts/0 00:00:00 ps -eLf所以下面这个命令我们可以获得当前系统的线程总数# 这里解释一下tail -n +2,这表示从第二行tail到结尾,目的是过滤掉第一行的titleroot@localhost[0]~15:55:14# ps -eLf|tail -n +2|wc -l123毫无疑问这是一个非常干净的做法,切中我们的要求# 注意中括号前面的那个数字,对应的线程数就从这里体现,注意这个数字并非只可能是线程,子进程也有可能# 如果你加上-a参数,那么这些数字会展开成线程,也就是一个线程一行root@localhost[0]~15:43:36# pstreeinit─┬─acpid├─atd├─auditd─┬─audispd───{audispd}│ └─{auditd}├─automount───4*[{automount}]├─avahi-daemon───avahi-daemon├─crond├─cupsd├─dbus-daemon───{dbus-daemon}├─events/0├─gam_server├─gpm├─hald───hald-runner─┬─hald-addon-acpi │ ├─hald-addon-keyb│ └─hald-addon-stor├─hcid├─hidd├─httpd───8*[httpd]├─khelper├─klogd├─krfcommd├─ksoftirqd/0├─kthread─┬─aio/0│ ├─ata/0│ ├─ata_aux│ ├─cqueue/0│ ├─kacpid│ ├─kauditd│ ├─kblockd/0│ ├─khubd│ ├─kjournald│ ├─kmpath_handlerd│ ├─kmpathd/0│ ├─kpsmoused│ ├─kseriod│ ├─kstriped│ ├─kswapd0│ ├─mpt_poll_0│ ├─2*[pdflush]│ ├─rpciod/0│ └─scsi_eh_0├─mcstransd├─migr ation/0├─6*[mingetty]├─miniserv.pl├─mysqld_safe───mysqld───10*[{mysqld}]├─ntop───9*[{ntop}]├─pcscd───{pcscd}├─8*[perl]├─portmap├─restorecond├─rpc.idmapd├─rpc.statd├─sdpd├─2*[sendmail]├─smartd├─sshd───sshd───bash───pstree├─syslogd├─udevd├─watchdog/0├─xfs├─xinetd└─yum-updatesd这样我们就获得了一个读取系统当前的线程总数的方法root@localhost[0]~15:51:42# pstree -a|wc -l122别忘了我们还有很cute的htop命令,里面也能看到线程信息,而且很容易操作。
LINUX查看进程的4种方法(小结)
LINUX查看进程的4种⽅法(⼩结)进程是在 CPU 及内存中运⾏的程序代码,⽽每个进程可以创建⼀个或多个进程(⽗⼦进程)。
**查看进程⽅法:**第⼀种:ps auxps命令⽤于报告当前系统的进程状态。
可以搭配kill指令随时中断、删除不必要的程序。
ps命令是最基本同时也是⾮常强⼤的进程查看命令,使⽤该命令可以确定有哪些进程正在运⾏和运⾏的状态、进程是否结束、进程有没有僵死、哪些进程占⽤了过多的资源等等,总之⼤部分信息都是可以通过执⾏该命令得到的。
a:显⽰当前终端下的所有进程信息,包括其他⽤户的进程。
u:使⽤以⽤户为主的格式输出进程信息。
x:显⽰当前⽤户在所有终端下的进程。
⽰例:**上图中各字段解释:**USER:启动该进程的⽤户账号名称PID:该进程的ID号,在当前系统中是唯⼀的%CPU:CPU占⽤的百分⽐%MEM:内存占⽤的百分⽐VSZ:占⽤虚拟内存(swap空间)的⼤⼩RSS:占⽤常驻内存(物理内存)的⼤⼩TTY:该进程在哪个终端上运⾏。
“?”表未知或不需要终端STAT:显⽰了进程当前的状态,如S(休眠)、R(运⾏)、Z(僵死)、<(⾼优先级)、N(低优先级)、s(⽗进程)、+(前台进程)。
对处于僵死状态的进程应予以⼿动终⽌。
START:启动该进程的时间TIME:该进程占⽤CPU时间COMMAND:启动该进程的命令的名称**总结:ps aux 是以简单列表的形式显⽰出进程信息。
**第⼆种:ps -elf-e:显⽰系统内的所有进程信息。
-l:使⽤长(long)格式显⽰进程信息。
-f:使⽤完整的(full)格式显⽰进程信息。
上图字段解释:⼤部分跟第⼀种⼀样,PPID为⽗进程的PID。
第三种:top以全屏交互式的界⾯显⽰进程排名,及时跟踪包括CPU、内存等系统资源占⽤情况,默认情况下每三秒刷新⼀次,其作⽤基本类似于Windows系统中的任务管理器。
上图解释:Tasks(系统任务)信息:total,总进程数;running,正在运⾏的进程数;sleeping,休眠的进程数;stopped,中⽌的进程数;zombie,僵死⽆响应的进程数。
如何在Linux系统中查看正在运行的进程
如何在Linux系统中查看正在运行的进程Linux系统是一种强大的操作系统,它提供了各种工具和命令来管理和监控运行在系统上的进程。
在Linux系统中,我们可以通过不同的方式来查看正在运行的进程,以便更好地了解系统的状态和性能。
本文将介绍几种常用的方法来查看正在运行的进程。
一、使用ps命令ps命令是Linux系统中最常用的查看进程的命令之一。
通过ps命令,我们可以获取当前系统中正在运行的进程的相关信息,如进程ID (PID)、CPU占用率、内存占用等。
使用ps命令的基本语法如下:ps [ options ]其中,options是用来指定ps命令的选项。
下面是一些常用的选项:-ef:显示所有进程,包括其它用户的进程。
-u username:显示指定用户的进程。
-a:显示终端上的所有进程,包括其他用户的进程。
ps命令的输出结果包括进程ID(PID)、父进程ID(PPID)、CPU占用率、内存占用等信息,可以根据需要选择合适的选项来进行查看。
二、使用top命令top命令可以动态地查看系统中正在运行的进程,并实时显示它们的CPU占用率、内存占用等信息。
使用top命令的基本语法如下:top在top界面中,会显示当前系统中运行的进程的详细信息,包括进程ID(PID)、CPU占用率、内存占用等。
同时,top界面还会实时更新这些信息,以便我们及时了解系统的运行情况。
可以使用按键来进行不同的操作,如按下键盘上的“q”键退出top命令。
三、使用htop命令htop命令是一个类似于top命令的工具,它提供了更加友好的界面和功能。
使用htop命令的基本语法如下:htop与top命令相比,htop命令在界面和功能上更加强大和直观。
在htop界面中,可以通过按键进行不同的操作,如按下键盘上的“F2”键可以展开或收起某个进程的详细信息。
htop还提供了一些其他功能,如进程筛选、进程排序等,可以根据需要进行设置。
四、使用pgrep命令pgrep命令可以根据进程的名称或其它属性来查找进程的PID。
Linux命令高级技巧使用ps命令查看进程信息
Linux命令高级技巧使用ps命令查看进程信息在Linux系统中,ps命令是一种非常有用的命令,它可以用于查看当前系统中正在运行的进程信息。
本文将介绍一些ps命令的高级技巧,帮助读者更好地利用ps命令来管理进程。
1. 查看所有进程信息首先,可以使用“ps -ef”命令来查看当前系统中所有进程的详细信息。
该命令会列出每个进程的PID(进程ID)、PPID(父进程ID)、C (CPU使用率)、STIME(进程启动时间)、TTY(所属终端)、CMD(进程命令)等信息。
2. 按照进程组进行过滤如果只想查看属于某个特定进程组的进程信息,可以使用“ps -grp进程组ID”命令,例如“ps -grp 100”会列出进程组ID为100的进程信息。
3. 查看指定进程的详细信息有时候,我们想要查看某个特定进程的详细信息,可以使用“ps -p进程ID”命令,例如“ps -p 1234”会列出进程ID为1234的进程信息。
如果想查看多个进程的信息,可以使用逗号分隔进程ID,例如“ps -p 1234,5678”。
4. 查看进程树ps命令还可以以树状结构的形式来显示进程间的关系。
使用“ps -ejH”命令可以列出整个进程树,其中包括每个进程的PID、PPID、CMD等信息。
5. 自定义显示格式ps命令默认显示一些基本信息,但我们也可以根据需要自定义显示格式。
使用“ps -eo”命令可以指定要显示的字段,例如“ps -eopid,user,cmd”会只显示进程ID、用户和命令信息,我们还可以使用“ps -e --sort=-rss -o pid,uname,pmem,pcpu,comm”命令以内存占用的降序方式列出PID、用户名、内存占用率、CPU使用率和进程命令信息等。
6. 查看进程的线程数有时候,我们需要查看进程的线程数。
使用“ps -eLf”命令可以列出系统中所有进程的线程数,该命令会显示每个进程的PID、LWP(轻量级进程,即线程ID)、PRI(线程优先级)、LWP(线程绑定的CPU核心)等信息。
Linux命令高级技巧使用ps和top查看系统进程和资源
Linux命令高级技巧使用ps和top查看系统进程和资源在Linux系统中,我们经常需要查看系统的进程和资源情况,以便及时监控和管理系统运行状态。
在这篇文章中,我将介绍如何使用ps 和top命令来查看系统进程和资源的高级技巧。
一、ps命令ps命令用于查看当前系统中的进程信息,我们可以使用不同的选项来过滤和显示所需的进程信息。
1. 查看所有进程ps aux使用ps aux命令可以查看所有进程的详细信息。
输出结果包括进程ID(PID)、用户、CPU占用率、内存占用率、启动时间等。
2. 根据进程名过滤进程ps -ef | grep 进程名如果我们只想查看某个特定进程的信息,可以使用ps命令和grep 命令结合起来。
将ps命令的输出通过管道传递给grep命令,并指定需要过滤的进程名。
3. 查看进程树ps -e --forestps命令支持--forest选项,可以以树状结构的形式显示进程和它们之间的关系。
这有助于更清晰地理解进程之间的继承关系。
4. 显示进程线程ps -eLf使用ps命令的-L选项可以显示进程的线程信息。
每个线程将被单独列出,并显示线程ID(LWP)和线程所属的进程ID。
二、top命令top命令是一个动态的系统监视器,它能够实时显示系统的进程和资源使用情况。
下面介绍一些常用的top命令的使用技巧。
1. 实时显示进程信息top直接输入top命令后,我们可以实时查看系统的进程和资源使用情况。
在默认的显示模式下,top命令按照CPU使用率降序排列进程,并显示进程ID、用户、CPU占用率、内存占用率等信息。
2. 刷新频率控制按下数字键1在top命令中,可以按下数字键1来改变刷新频率。
默认情况下,top命令每隔3秒刷新一次,但我们可以通过按下数字键1并输入新的刷新频率来改变它。
3. 以指定方式排序按下大写字母键SHIFT+Otop命令支持按不同的属性进行进程排序。
按下大写字母键SHIFT+O后,我们可以选择以进程ID、CPU使用率、内存占用率等方式进行排序。
Linux命令高级技巧使用ps命令进行进程查看与管理的高级用法
Linux命令高级技巧使用ps命令进行进程查看与管理的高级用法Linux命令高级技巧:使用ps命令进行进程查看与管理的高级用法在Linux系统中,ps(process status的缩写)命令是一个非常强大的工具,用于查看当前系统中运行的进程信息。
除了基本的用法外,ps命令还提供了一些高级的选项和参数,使得我们可以更加灵活地进行进程的查看和管理。
本文将介绍ps命令的高级用法,帮助读者更好地利用ps命令完成进程管理的任务。
1. 查看所有进程的信息要查看系统中所有进程的详细信息,可以直接使用如下命令:```ps -ef```该命令会列出所有进程的PID(进程ID)、PPID(父进程ID)、UID(用户ID)、CMD(命令行)等信息。
通过这些信息,我们可以了解到当前系统中正在运行的所有进程。
2. 根据进程名查找进程有时候,我们只关心某个特定进程的信息,可以使用如下命令来查找某个进程的详细信息:```ps -C 进程名```其中,进程名可以是进程的可执行文件名,比如apache、nginx等。
该命令会列出与给定进程名匹配的所有进程的信息。
3. 查看进程树ps命令提供了选项`-f`,可以查看进程树。
进程树展示了进程之间的关系,包括父进程和子进程。
使用如下命令可以查看进程树:```ps -ejH```该命令会按照进程树的形式展示出系统中所有进程的关系。
4. 查看指定用户的进程如果想要查看某个特定用户的进程信息,可以使用选项`-u`,如下所示:```ps -u 用户名```该命令会列出指定用户名下的所有进程的详细信息。
通过指定不同的用户名,我们可以查看不同用户所拥有的进程信息。
5. 查看指定进程的详细信息使用选项`-p`可以查看指定进程的详细信息,如下所示:```ps -p 进程ID```通过将进程ID替换为实际的进程ID,我们可以查看到该进程的详细信息,包括进程的状态、CPU使用率、内存占用等。
6. 查看进程的线程信息在Linux中,一个进程可以包含多个线程。
Linux命令高级技巧使用top命令进行系统资源监控
Linux命令高级技巧使用top命令进行系统资源监控在Linux系统中,top命令是一款非常常用且强大的系统资源监控工具。
使用top命令可以实时查看系统的进程、CPU、内存等系统资源使用情况,帮助用户了解系统的性能状况并调优。
本文将介绍top命令的高级技巧,帮助读者更好地利用top命令进行系统资源监控。
一、top命令简介top命令是Linux系统上的一个命令行实用工具,用于实时监控系统的运行情况。
通过top命令,用户可以查看当前系统中运行的进程列表、各个进程的资源占用情况以及系统整体的资源使用情况。
top命令提供了丰富的功能和选项,可以根据需求进行配置和调整。
二、基本使用方法1. 打开终端,输入top命令后回车,即可进入top命令的交互界面。
2. top命令的交互界面主要分为三个部分:第一部分是关于系统整体资源使用情况的摘要信息,包括CPU使用率、内存使用率等;第二部分是关于各个进程的详细信息,包括进程ID、CPU占用、内存占用等;第三部分是top命令的菜单栏,显示了可用的功能和选项。
3. 默认情况下,top命令按照CPU占用率进行排序,显示CPU占用率最高的进程在最上面。
可以使用键盘上的方向键上下移动光标,在进程列表中查看其他进程的信息。
三、高级技巧1. 修改排序方式:默认情况下,top命令按照CPU占用率进行排序,但用户可以根据需要选择其他排序方式。
按下键盘上的"Shift"+"F"键,然后选择新的排序字段,比如内存占用、进程ID等。
按下对应的键后,进程列表将按照新的排序方式重新排列。
2. 隐藏或显示特定进程:在top命令交互界面中,按下键盘上的"Shift"+"H"键,可以隐藏或显示特定用户的进程。
这对于排除一些系统内部的进程或者只显示自己的进程非常有用。
3. 打开和关闭某个进程:在top命令交互界面中,按下键盘上的"k"键,然后输入要关闭的进程的进程ID,即可关闭该进程。
在Linux中查看所有正在运行的进程的方法
在Linux中查看所有正在运⾏的进程的⽅法可以使⽤ps命令。
它能显⽰当前运⾏中进程的相关信息,包括进程的PID。
Linux和UNIX都⽀持ps命令,显⽰所有运⾏中进程的相关信息。
ps命令能提供⼀份当前进程的快照。
如果想状态可以⾃动刷新,可以使⽤top命令。
ps命令输⼊下⾯的ps命令,显⽰所有运⾏中的进程:# ps aux | less其中,-A:显⽰所有进程a:显⽰终端中包括其它⽤户的所有进程x:显⽰⽆控制终端的进程任务:查看系统中的每个进程。
# ps -A# ps -e任务:查看⾮root运⾏的进程# ps -U root -u root -N任务:查看⽤户vivek运⾏的进程ps -u vivek任务:top命令top命令提供了运⾏中系统的动态实时视图。
在命令提⽰⾏中输⼊top:# top输出:按q退出,按h进⼊帮助。
任务:显⽰进程的树状图。
pstree以树状显⽰正在运⾏的进程。
树的根节点为pid或init。
如果指定了⽤户名,进程树将以⽤户所拥有的进程作为根节点。
$ pstree输出⽰例:任务:使⽤ps列印进程树# ps -ejH# ps axjf任务:获得线程信息输⼊下列命令:# ps -eLf# ps axms任务:获得安全信息输⼊下列命令:# ps -eo euser,ruser,suser,fuser,f,comm,label# ps axZ# ps -eM任务:将进程快照储存到⽂件中输⼊下列命令:# top -b -n1 > /tmp/process.log你也可以将结果通过邮件发给⾃⼰:# top -b -n1 | mail -s 'Process snapshot' you@使⽤pgrep命令。
pgrep能查找当前正在运⾏的进程并列出符合条件的进程ID。
例如显⽰firefox的进程ID:任务:查找进程$ pgrep firefox下⾯命令将显⽰进程名为sshd、所有者为root的进程。
linux中top常用的几个参数
linux中top常用的几个参数Linux中top命令是一个非常有用的系统性能监控工具,可以实时查看系统的运行状态。
下面将介绍几个常用的top命令参数。
一、实时监控CPU使用情况使用top命令时,我们可以通过参数“%CPU”来查看各个进程的CPU使用率。
这个参数表示进程在一段时间内使用的CPU时间占总时间的百分比。
通过观察CPU使用率,我们可以了解到系统中哪些进程消耗了较多的CPU资源,以便进行相应的优化。
二、查看内存使用情况top命令中的“VIRT”、“RES”和“SHR”参数可以用来查看进程的内存使用情况。
“VIRT”表示进程使用的虚拟内存大小,“RES”表示进程使用的物理内存大小,“SHR”表示进程共享的内存大小。
通过观察这些参数的数值,我们可以了解到系统的内存使用情况,从而判断是否需要进行内存优化。
三、查看系统负载情况top命令中的“load average”参数可以用来查看系统的负载情况。
负载是指单位时间内的平均活动进程数,也可以理解为系统处于可运行状态和不可中断状态的平均进程数。
通常情况下,负载值应该小于系统的CPU核心数。
如果负载值过高,说明系统的资源已经不足,需要进行相应的优化。
四、查看进程的IO使用情况top命令中的“%MEM”和“%CPU”参数可以用来查看进程的IO使用情况。
“%MEM”表示进程使用的物理内存占总内存的百分比,“%CPU”表示进程使用的CPU时间占总时间的百分比。
通过观察这些参数,可以了解到系统中哪些进程在进行IO操作,以及它们的资源消耗情况。
五、查看进程的线程数top命令中的“Tasks”参数可以用来查看系统中进程的线程数。
线程是进程中执行的最小单位,一个进程可以包含多个线程。
通过观察线程数的变化,我们可以了解到系统的负载情况,以及是否存在线程过多的问题。
六、查看进程的状态top命令中的“STAT”参数可以用来查看进程的状态。
常见的进程状态包括R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)等。
Linux命令进阶使用top和htop进行系统资源监控
Linux命令进阶使用top和htop进行系统资源监控Linux系统是一种广泛使用的操作系统,其强大的命令行工具使得管理和监控系统变得相对容易。
其中,top和htop是两款常用的命令行工具,它们能够提供实时的系统资源监控和进程管理功能。
本文将详细介绍top和htop的使用方法以及如何进行系统资源监控。
一、top命令的使用top命令是Linux系统中最常用的命令之一,它能够实时显示系统资源使用情况和进程信息。
下面是top命令的使用方法:1. 打开终端并输入top命令。
2. top命令会实时显示系统资源使用情况和进程列表。
在顶部的概览部分可以看到CPU使用率、内存使用情况等信息。
在进程列表中,可以看到每个进程的PID、占用CPU和内存的比例等信息。
3. 可以使用方向键上下移动光标,查看更多进程信息。
4. 想要结束top命令,可以按下Ctrl+C。
二、htop命令的使用htop命令是top命令的一个增强版,它提供了更为直观和交互式的系统资源监控界面。
下面是htop命令的使用方法:1. 打开终端并输入htop命令。
2. htop命令会显示一个交互式的系统资源监控界面。
顶部的概览部分显示系统的整体资源使用情况,包括CPU使用率、内存使用情况等。
在进程列表中,可以看到每个进程的PID、占用CPU和内存的比例等信息。
3. 可以使用方向键上下移动光标,查看更多进程信息。
也可以使用Tab键在不同的信息视图(如树状图、CPU使用图等)之间切换。
4. 可以使用F键来筛选特定的进程,使用K键来终止选中的进程。
5. 想要结束htop命令,可以按下Ctrl+C。
三、系统资源监控实例下面以一个例子来演示如何使用top和htop进行系统资源监控。
假设我们想要监控系统中最消耗CPU资源的进程,可以按照以下步骤进行:1. 打开终端并输入top命令或者htop命令。
2. 在进程列表中,按下Shift+P按键,可以按照CPU使用率对进程进行排序,将CPU资源消耗最高的进程排在前面。
linux中查看进程中的线程
linux中 查 看 进 程 中 的 线 程
ps、top等命令可以查看进程的情况,加上指定参数也可以查看进程的线程
方法一:PS 在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。
ps -T -p <pid>
方法二: Top top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行 时,你也可以通过按“H”键将线程查看模式切换为开或关。
查看某个特定进程<pid>并检查该进程内运行的线程状况: top -H -p <pid>
Hale Waihona Puke
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Linux中查看线程数的三种方法
1、top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。
否则,它一行显示一个进程。
2、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
3、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
查看进程
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进程的命令名称
2. ps命令
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
nobody 23117 1 0 Dec23 ? S 0:00 proftpd: (accepting connections)
jack 23121 23117 0 Dec23 ? S 7:57 \_ proftpd: jack - ftpsrv: IDLE
jack 28944 23117 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不就是了。