Linux服务器查看进程每个线程的执行任务(2)
Linux服务器查看进程每个线程的执行任务
?表示该进程没有与任何终端关联。
在这个输出中,你可以看到各种系统进程,如init、kthreadd和rcu_gp。这些都是Linux内核和初始化系统的一部分,它们在系统启动时自动启动,并在系统运行时持续运行。
2. 使用top命令
top命令是一个实时显示系统中各个进程的资源占用状况的监控工具。你可以通过按H键来显示线程,而不是进程。
在top命令运行时,按H,然后按P(按CPU使用率排序)或M(按内存使用率排序)来查看线程的详细信息。
3. 使用htop命令
htop是top的一个增强版,它提供了一个彩色的界面,并支持鼠标操作。在htop中,你可以直接看到每个进程下的线程,并按需要排序和筛选。
首先,你需要安装htop:
sudo apt install htop # 对于Debian/Ubuntu系统 sudo yum install htop # 对于CentOS/RedHat系统
然后,运行htop并查看进程和线程信息。
$ htop

4. 使用gdb
gdb是一个强大的调试工具,你也可以使用它来查看进程中的线程和它们的堆栈跟踪。
gdb -p 进程ID (gdb) info threads
这将显示所有线程的列表。你可以使用thread 线程ID来切换到特定的线程,并使用bt命令来查看该线程的堆栈跟踪。
如何使用gdb调试一个多线程的程序:
multithread_example.c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h> // 用于sleep函数
void *print_message_function(void *ptr) {
long tid;
tid = (long)ptr;
printf("线程 #%ld 正在运行\n", tid);
sleep(100); // 每个线程等待100秒
pthread_exit(NULL);
}
int main() {
pthread_t thread1, thread2;
const long num_threads = 2;
int rc;
long t;
for(t = 0; t < num_threads; t++) {
printf("创建线程 %ld\n", t);
if (t == 0) {
rc = pthread_create(&thread1, NULL, print_message_function, (void *)t);
} else {
rc = pthread_create(&thread2, NULL, print_message_function, (void *)t);
}
if (rc) {
printf("Error:无法创建线程, %d\n", rc);
exit(-1);
}
}
// 等待线程1和线程2完成
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
// 所有线程已经结束,现在主线程可以退出
pthread_exit(NULL);
}
相关阅读
-
win10蓝牙开关不见了 联想笔记本win10蓝牙开关不见了
小编带来的是win10蓝牙开关不见了IT技巧方面的经验,关于win10蓝牙开关不见了 联想笔记本win10蓝牙开关不见了,具体内容如下: 在使用win10系统进行蓝牙连接的时候,突然发现蓝牙连接选项不
-
优麒麟好用吗 优麒麟操作系统详细评测
为网友们解答优麒麟操作系统详细评测方面的介绍,关于优麒麟好用吗 优麒麟操作系统详细评测,接下来IT袋带大家一起了解。 优麒麟是Ubuntu下的中文版操作系统,很多想要使用Linux系统的朋
-
lsass.exe应用程序错误0xc0000142 开机报错lsass.exe应用程序正常初始化失败
跟大家说一说开机报错lsass.exe应用程序正常初始化失败怎么解决IT技巧方面的经验,关于开机报错lsass.exe应用程序正常初始化失败怎么解决,接下来就是全面介绍。 我们在平时使用电脑的时候
-
windows10防火墙怎么关闭 解除防火墙对软件的限制的方法
小编为你讲解windows10防火墙怎么关闭和解除防火墙对软件的限制的方法方面的介绍,相关内容具体如下: 简介:防火墙是一种电脑安全的重要保护措施,可以防止恶意软件进入电脑系统。关闭


