
top命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器。
一、系统整体当下的统计信息
top命令显示的前五行是系统整体的统计信息。
第一行是任务队列信息,同uptime命令的执行结果。egtop - 15:09:51 up 17 days , 3:38 , 4 users , load average : 109 , 339 , 476
15:09:51 当前时间
up 17 days , 3:38 系统运行时间,格式为时:分
4 users 当前登录用户数
load average : 109 , 339 , 476 系统负载,即任务队列的平均长度。
三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。eg
Tasks : 115 total , 1 running , 114 sleeping , 0stopped , 0zombie
Cpu(s) : 161% us , 20% sy , 00% ni , 795% id , 14% wa , 00% hi , 10% si
Tasks : 115 total 进程总数
1 running 正在运行进程数
114 sleeping 睡眠进程数
0 stopped 停止进程数
0 zombie 僵尸进程数
Cpu(s) : 161% us 用户空间占用CPU百分比
20% sy 内核空间占用CPU百分比
00% ni 用户进程空间内改变过优先级的进程占用CPU百分比
795% id 空闲CPU百分比
14% wa 等待输入输出的CPU时间百分比
00% hi
00% si
最后两行为内存信息。eg
Mem : 8169876 k total , 7686472 k used , 483404 k free , 35272 k buffers
Swap : 4096532 k total , 160 k used , 4096372 k free , 2477532 k cached
Mem : 8169876 ktotal 物理内存总量
7686472 k used 使用的物理内存总量
483404 k free 空闲内存总量
35272 k buffers 用作内核缓存的内存量
Swap : 4096532 k total 交换分区总量
160 k used 使用的交换区总量
4096372 k free 空闲交换区总量
2477532 k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
二、进程信息
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
序号列名含义
PID 进程id
PPID 父进程id
RUSER Realusername
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为
PR 优先级
NInice 值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
D= 不可中断的睡眠状态
R= 运行
S= 睡眠
T= 跟踪/停止
Z= 僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考schedh
获取系统进程要使用CreateToolhelp32Snapshot()函数得到快照,然后进行遍历,取出自己想要的信息就可以了。下面是我自己写的一个由进程名称得到进程ID的函数,要得到所有的进程,你只要把循环进行完就行。上代码:
DWORD CXXXDlg::GetProeccIDByName(CString& csProName){
//AddOutPut()是我自己封装的调试函数,可以不用理会
//使用CreateToolhelp32Snapshot()等函数要包含头文件
//#include <TlHelp32h>
AddOutPut(_T("->由进程名字得到进程ID开始"));
if (csProNameIsEmpty())
{
AddOutPut(_T("!!由进程名字得到进程ID失败,进程ID名字为空!"));
return 0;
}
HANDLE hSnapShot = NULL;
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapShot)
{
AddOutPut(_T("!!由进程名字得到进程ID失败,创建快照失败!"));
return 0;
}
int nPos = csProNameReverseFind('\\');
csProName = csProNameRight(csProNameGetLength() - nPos);
PROCESSENTRY32 proEntry32 = {0};
bool bRetval = false;
bool bFind = false;
proEntry32dwSize = sizeof(PROCESSENTRY32);
bRetval = Process32First(hSnapShot, &proEntry32) true : false;
while (bRetval)
{
if (0 == StrCmpI(proEntry32szExeFile, csProName))
{
bFind = true;
break;
}
bRetval = Process32Next(hSnapShot, &proEntry32) true : false;
proEntry32dwSize = sizeof(PROCESSENTRY32);
}
if (!bFind)
{
AddOutPut(_T("!!由进程名字得到进程ID失败,未找到该进程!"));
return 0;
}
if (hSnapShot != NULL)
{
CloseHandle(hSnapShot);
}
AddOutPut(_T("->由进程名字得到进程ID成功"));
return proEntry32th32ProcessID;
}
查看Linux中所有正在运行的进程 ,可以参考如下方法:
1、通过ps命令的-A或者-e参数来获取系统中所有的进程,这两个参数的作用一样的。
2、通过top命令来获取系统中所有的进程任务 。执行top命令后,在tasks一栏会看到总的任务数。
你可以获取到进程的EXE路径吧。你所画的那个描述列实际上只是文件属性的一部分。
获取文件描述可以看这里。>
dim src,i,info,sum
set src=getobject( "winmgmts:root/cimv2" )execquery("select from win32_service" )
set fso=createobject("scriptingfilesystemobject")
for each i in src
sum=clng(30-len(iname)+len(istate))
info=info&iname&string(sum,chr(32))&istate&chr(13)
next
if right(info,1)=chr(13) then info=left(info,len(info)-1)
fsocreatetextfile("save_Servicesinfotxt")write info
1、首先打开xshell软件,连接上linux服务器,使用指令ps查看系统进程,参数a表示全部,u表示以用户格式显示,x表示进程参数。
2、接着通过符号|加上grep查找具体的某个进程,如下图所示。
3、然后输入ps -ef用于查看进程的父进程id,如下图所示。
4、最后使用pstree指令查看进程树结构,如下图所示就完成了。
itjob老师教过用命令的方式也是很方便将结果存到变量里呀,用一个复制或者重定向就行了。
c代码:
#include <pthreadh>
#include <stdioh>
void print_xs (void unused)
{
while (1)
fputc (‘x’, stderr);
return NULL;
}
/ The main program /
int main ()
{
int i=0;
while(1){
pthread_t thread_id;
if( NULL != pthread_create (&thread_id, NULL, &print_xs, NULL)){
break;
}
i++;
}
printf("创建线程个数:%d\n",i);
return 0;
}
以上就是关于怎么查找LINUX的用户进程和后台进程的详细信息!谢谢了全部的内容,包括:怎么查找LINUX的用户进程和后台进程的详细信息!谢谢了、mfc 获取系统进程的过程、如何在Linux中查看所有正在运行的进程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)