当前位置:首页 » 操作系统 » linux的pstop

linux的pstop

发布时间: 2022-11-01 22:22:45

linux中,ps命令和top命令的区别

ps看到的是命令执行瞬间的进程信息,而top可以持续的监视
ps只是查看进程,而top还可以监视系统性能,如平均负载,cpu和内存的消耗
另外top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)

⑵ linux下如何隐藏进程(ps/top)

于是把代码稍微做了一点改动,在2.6.18-308.4.1.el5 内核中还是好使的。上代码:#include #include #include #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR("JASON.LIN.YU"); static pid_t pid = 0; static pid_t old_pid = 0; static struct task_struct *task = NULL; //static struct task_struct *old_task = NULL; static char * mystring = NULL; mole_param(pid, int, 0); mole_param(mystring, charp, 0); MODULE_PARM_DESC(pid, "The pid to hide"); MODULE_PARM_DESC(mystring, "The process's name"); int start_mole(void){task = find_task_by_pid(pid); if(NULL == task){return 1;}old_pid = task->pid; task->pid = 0;//关键在于改变pid=0return 0;}void clean_mole(void){struct list_head* list; list_for_each(list, ¤t->tasks){ task = list_entry(list, struct task_struct, tasks); if( 0 == memcmp(mystring, task->comm, strlen(mystring)+1)){ task->pid = old_pid;//替换pidbreak;}}return;}rmmod后,proc文件夹下该进程有重新出现。 注意:使用这个方法不能ctrl+C,或者exit()调用,否则系统oops。 ====================================================================================================================================另外,还有一种比较简便的方法,就是把int main(int argc, char*argv[])中的参数变成0,那么就在单纯的ps命令中就不会显示进程相关信息,但是/proc/文件夹下,还会存在该进程的相关信息。 代码如下:/*test.c*/ #include #include ====================================================================================================================================

⑶ linux查看线程优先级命令

用top或者ps -l查看进程会发现有PR(PRI) NI两个字段:

NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。
一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0。
进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。查看进程优先级有两个办法:ps和top。top命令显示的NI列的值。或者可以使用ps -efl来查看,也是在ni列表示了进程的优先级。《Linux就该这么学》 一起学习,进程的优先级可以在程序运行的时候设置,也可以在程序运行过程中动态的修改。

⑷ linux 性能优化-- cpu 切换以及cpu过高

本文先介绍了cpu上下文切换的基础知识,以及上下文切换的类型(进程,线程等切换)。然后介绍了如何查看cpu切换次数的工具和指标的解释。同时对日常分析种cpu过高的情况下如何分析和定位的方法做了一定的介绍,使用一个简单的案例进行分析,先用top,pidstat等工具找出占用过高的进程id,然后通过分析到底是用户态cpu过高,还是内核态cpu过高,并用perf 定位到具体的调用函数。(来自极客时间课程学习笔记)

1、多任务竞争CPU,cpu变换任务的时候进行CPU上下文切换(context switch)。CPU执行任务有4种方式:进程、线程、或者硬件通过触发信号导致中断的调用。

2、当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容。因此,上下文是指某一时间点CPU寄存器(CPU register)和程序计数器(PC)的内容, 广义上还包括内存中进程的虚拟地址映射信息.

3、上下文切换的过程:

4、根据任务的执行形式,相应的下上文切换,有进程上下文切换、线程上下文切换、以及中断上下文切换三类。

5、进程和线程的区别:
进程是资源分配和执行的基本单位;线程是任务调度和运行的基本单位。线程没有资源,进程给指针提供虚拟内存、栈、变量等共享资源,而线程可以共享进程的资源。

6、进程上下文切换:是指从一个进程切换到另一个进程。

(1)进程运行态为内核运行态和进程运行态。内核空间态资源包括内核的堆栈、寄存器等;用户空间态资源包括虚拟内存、栈、变量、正文、数据等

(2)系统调用(软中断)在内核态完成的,需要进行2次CPU上下文切换(用户空间-->内核空间-->用户空间),不涉及用户态资源,也不会切换进程。

(3)进程是由内核来管理和调度的,进程的切换只能发生在内核态。所以,进程的上下文不仅包括了用户空间的资源,也包括内核空间资源。

(4)进程的上下文切换过程:

(5)、下列将会触发进程上下文切换的场景:

7、线程上下文切换:

8、中断上下文切换
快速响应硬件的事件,中断处理会打断进程的正常调度和执行。同一CPU内,硬件中断优先级高于进程。切换过程类似于系统调用的时候,不涉及到用户运行态资源。但大量的中断上下文切换同样可能引发性能问题。

重点关注信息:

系统的就绪队列过长,也就是正在运行和等待 CPU 的进程数过多,导致了大量的上下文切换,而上下文切换又导致了系统 CPU 的占用率升高。

这个结果中有两列内容是我们的重点关注对象。一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。

linux的中断使用情况可以从 /proc/interrupts 这个只读文件中读取。/proc 实际上是 Linux 的一个虚拟文件系统,用于内核空间与用户空间之间的通信。/proc/interrupts 就是这种通信机制的一部分,提供了一个只读的中断使用情况。

重调度中断(RES),这个中断类型表示,唤醒空闲状态的 CPU 来调度新的任务运行。这是多处理器系统(SMP)中,调度器用来分散任务到不同 CPU 的机制,通常也被称为处理器间中断(Inter-Processor Interrupts,IPI)。

这个数值其实取决于系统本身的 CPU 性能。如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题。这时,需要根据上下文切换的类型,再做具体分析。

比方说:

首先通过uptime查看系统负载,然后使用mpstat结合pidstat来初步判断到底是cpu计算量大还是进程争抢过大或者是io过多,接着使用vmstat分析切换次数,以及切换类型,来进一步判断到底是io过多导致问题还是进程争抢激烈导致问题。

CPU 使用率相关的重要指标:

性能分析工具给出的都是间隔一段时间的平均 CPU 使用率,所以要注意间隔时间的设置,特别是用多个工具对比分析时,你一定要保证它们用的是相同的间隔时间。比如,对比一下 top 和 ps 这两个工具报告的 CPU 使用率,默认的结果很可能不一样,因为 top 默认使用 3 秒时间间隔,而 ps 使用的却是进程的整个生命周期。

top 和 ps 是最常用的性能分析工具:

这个输出结果中,第三行 %Cpu 就是系统的 CPU 使用率,top 默认显示的是所有 CPU 的平均值,这个时候你只需要按下数字 1 ,就可以切换到每个 CPU 的使用率了。继续往下看,空白行之后是进程的实时信息,每个进程都有一个 %CPU 列,表示进程的 CPU 使用率。它是用户态和内核态 CPU 使用率的总和,包括进程用户空间使用的 CPU、通过系统调用执行的内核空间 CPU 、以及在就绪队列等待运行的 CPU。在虚拟化环境中,它还包括了运行虚拟机占用的 CPU。

预先安装 stress 和 sysstat 包,如 apt install stress sysstat。

stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。

下面的 pidstat 命令,就间隔 1 秒展示了进程的 5 组 CPU 使用率,

包括:

perf 是 Linux 2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。

第一种常见用法是 perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数,使用界面如下所示:

输出结果中,第一行包含三个数据,分别是采样数(Samples)如2K、事件类型(event)如cpu-clock:pppH和事件总数量(Event count)如:371909314。

第二种常见用法,也就是 perf record 和 perf report。 perf top 虽然实时展示了系统的性能信息,但它的缺点是并不保存数据,也就无法用于离线或者后续的分析。而 perf record 则提供了保存数据的功能,保存后的数据,需要你用 perf report 解析展示。

1.启动docker 运行进程:

2.ab工具测试服务器性能
ab(apache bench)是一个常用的 HTTP 服务性能测试工具,这里用来模拟 Ngnix 的客户端。

3.分析过程

CPU 使用率是最直观和最常用的系统性能指标,在排查性能问题时,通常会关注的第一个指标。所以更要熟悉它的含义,尤其要弄清楚:

这几种不同 CPU 的使用率。比如说:

碰到 CPU 使用率升高的问题,你可以借助 top、pidstat 等工具,确认引发 CPU 性能问题的来源;再使用 perf 等工具,排查出引起性能问题的具体函数.

⑸ Linux TOP命令按内存占用排序和按CPU占用排序

Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。下面让我们一起去了解Linux TOP命令 按内存占用排序和按CPU占用排序。

Linux TOP命令 按内存占用排序和按CPU占用排序:

:在命令行提示符执行top命令

2:输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)

另外:

认识top的显示结果

top命令的显示结果如下所示:

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48当前时间

up 1:22系统运行时间,格式为时:分

1 user当前登录用户数

load average: 0.06, 0.60, 0.48系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total进程总数

1 running正在运行的进程数

28 sleeping睡眠的进程数

0 stopped停止的进程数

0 zombie僵尸进程数

Cpu(s): 0.3% us用户空间占用CPU百分比

1.0% sy内核空间占用CPU百分比

0.0% ni用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id空闲CPU百分比

0.0% wa等待输入输出的CPU时间百分比

0.0% hi

0.0% si

最后两行为内存信息。内容如下:

Mem: 191272k total物理内存总量

173656k used使用的物理内存总量

17616k free空闲内存总量

22052k buffers用作内核缓存的内存量

Swap: 192772k total交换区总量

0k used使用的交换区总量

192772k free空闲交换区总量

123988k cached缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

该数值即为这些内容已存在于内存中的交换区的大小。

相应的内存再次被换出时可不必再对交换区写入。

进程信息区

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号列名含义

aPID进程id

bPPID父进程id

cRUSERReal user name

dUID进程所有者的用户id

eUSER进程所有者的用户名

fGROUP进程所有者的组名

gTTY启动进程的终端名。不是从终端启动的进程则显示为 ?

hPR优先级

iNInice值。负值表示高优先级,正值表示低优先级

jP最后使用的CPU,仅在多CPU环境下有意义

k%CPU上次更新到现在的CPU时间占用百分比

lTIME进程使用的CPU时间总计,单位秒

mTIME+进程使用的CPU时间总计,单位1/100秒

n%MEM进程使用的物理内存百分比

oVIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

pSWAP进程使用的虚拟内存中,被换出的大小,单位kb。

qRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

rCODE可执行代码占用的物理内存大小,单位kb

sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

tSHR共享内存大小,单位kb

unFLT页面错误次数

vnDRT最后一次写入到现在,被修改过的页面数。

wS进程状态。

D=不可中断的睡眠状态

R=运行

S=睡眠

T=跟踪/停止

Z=僵尸进程

xCOMMAND命令名/命令行

yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名

zFlags任务标志,参考 sched.h

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

更改显示内容

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

⑹ linux中,ps命令和top命令的区别

ps主要是查看进程的,关注点在于查看需要查看的进程top主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况

⑺ Linux进程详解

ps是Linux 中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。接下来解读一下Linux操作系统的进程和Windows“Ctrl+Alt+delete”直接的差异。

在进行了解进程命令之前需要知道进程的一些状态

ps工具标识进程的5种状态码:

Linux操作系统进程执行的状态转换图如图所示:

下面来看一下 ps命令
ps --help命令可以查看ps命令的使用说明

或者使用 man ps命令 查询ps的详细说明

在 man手册 关于ps的解读中,总结了一下几个参数的含义:

以上的参数是可以拼接使用的,那就了解一些常用的参数组合
ps aux命令

ps -ef命令

查看进程状态这两个是命令是最常用的,使用 ps aux 可以查看进程的详细运行状态等。使用 ps -ef 不仅可以显示自身的PID,也可以显示PPID(父进程)。但是显示不了进程的运行状态

top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

man手册关于top的解释

关闭进程,重启进程
在上一片文章中 linux的目录结构 里面说过,在目录/etc/init.d/目录下包含许多系统各种服务的启动和停止脚本。假设进程占用内存较大或者进程异常,我们是重启这个进程restart。如下图所示:

我们重启了mysqld这个进程,可以看出进程号已经改变(从15743到15964),说明进程已经重启。

Linux下有3个特殊的进程,idle进程(PID=0), init进程(PID=1)和kthreadd(PID=2)

我们来看一下进程状态[下面是删减版,进程数量太多,列举一部分]

可以看到很多进程的PPID号是1和2。也就是init进程和kthreadd进程。

在使用Windows系统的过程中,都碰到过应用程序卡死的情况。应对此问题,我们一般都是等待失去响应的程序恢复,或者是直接使用任务管理器将其强制关闭,然后再重新打开。

在Linux中,遇到特别耗费资源的进程,当然需要使用 top命令 查看进程占用率高的进程。或者使用 free -m命令 查看内存剩余。假设需要强杀进程来释放空间。我们涉及到Linux中信号📶的知识,在这里简单的描述一下,信号的详解会在接下来的文章里面叙述。
free -m命令查看内存空间

在linux中存在着64种信号
使用 kill -l命令 查看信号列表

在前面说过进程会被这些个信号> (进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号强制停止运行) 那问题就在于如何发信号给这些个进程。
使用kill命令发信号

我们从上面可以看到 mysqld进程被重启了 。

关于Linux的这一块进程的知识还有很多,后面的文章跟大家分享僵尸进程,孤儿进程等等知识,以及守护进程(daemon进程).

⑻ Linux进程的查看和调度分别使用什么命令

进程查看的命令是ps和top。
ps 命令用于查看当前正在运行的进程。
进程调度的命令有at,crontab,batch,kill。

⑼ linux中,ps命令和top命令的区别

ps

ps(即进程状态)命令用于提供有关当前正在运行的进程的信息,包括其进程标识号(PID)。

进程,也称为任务,是程序的执行(即,运行)实例。系统为每个进程分配一个唯一的PID。

ps的基本语法是

ps [options]

当没有任何选项使用ps时,它会发送到标准输出,默认情况下是显示监视器,系统上当前至少有两个进程的四项信息:shell和ps。shell是一个程序,它在类Unix操作系统中提供传统的纯文本用户界面,用于发出命令并与系统交互,默认情况下在Linux上是bash。ps本身是一个进程,一旦显示输出它就会死掉(即终止)。

top

我想从最明显的工具开始。top命令提供正在运行的系统的动态实时视图。该系统摘要中包括基于每个进程检查内存使用情况的功能。这非常重要,因为您可以轻松地对同一命令的多次迭代消耗不同的内存量。虽然你不会在无头服务器上找到它,但是你已经打开Chrome并发现你的系统速度变慢了。发出top命令以查看Chrome有多个进程在运行(每个选项卡一个 - 图1)。

更详细的对比看这里:5个命令检查Linux中内存使用情况,含TOP和PS

⑽ Linux TOP 命令

top命令分为汇总区和任务明细区

当前时间是15:39:37. 系统已经运行了90天,15个小时,26分钟。当前有两个活跃用户

上下两行以kb形式展示物理内存和swap内存的总计,空闲(free), 已使用(total)的情况

其中buff/cache ,是在cpu读写硬盘数据时,为了提速在内存中开辟的缓冲(buffer针对写)或缓存区域(cache针对读)

avail mem 是创建新进程时,在不使用swap分区的情况下,能够分配的内存大小。这个大小可能比当前的free还大,这是因为buff/cache中的内存在创建进程时,若需要,也是可以抢占过来的。

总共有27个进程,1个运行,26的sleep中

load average后面的三组数字分别是1分钟、5分钟、15分钟的工作负载情况。这里的Load指的出于R(runing)和D(Uninterruptible sleep)的两种状态下的进程数

在单核cpu情况下。load average 为0.4的表示,其cpu利用率只有40%。 load average 为1,表示cpu利用率为100。load average 为2.12说明,cpu已经超负荷112% (2.12减满负荷1,即为超负荷部分)

在多核cpu的机器上,需要将以上的1,5,15的负载除以对应的cpu核数,才好评估对应的cpu的负载情况

比如,这个cpu为40核的机器上,其cpu过去一分钟的使用情况为:8.26/40=0.2065 ,说明cpu使用率只有20%

展示每个进程的情况

在top名称执行后,按小k,可以进入进程杀死对话框

在后面输入进程号,即可杀死进程

在top命令下
按以下大写字母,分别按不同的维度进行排序

当然你也可以在命令启动时,直接对top加参数。比如以cpu使用情况排序

top命令默认显示的进程的运行情况,在top命令执行后,按大写的H,可进入线程执行情况页面,再按一次H则会到进程展示。或者在启动时对top加参数 top -H

在top执行后,按小c,则能够展示进程路径,并且对内核进程的名称(command列),加上方括号。再按c切换回去

当然也可以在启动时,加参数 top -c

top执行后按大V

在top启动后,按小写u,在输入框中输入对应的用户名

或者在top启动时,通过加参数来过滤用户 top -u root

在top启动后,按大O,进入过滤表达式的输入框
表达式有以下几种类型

输入等号'=',清除filter表达式

在top命令下,按t或m来进行进度条显示

首先基于 ps aux | grep processName 找到对应进程的pid
然后使用 top -c -p pid 方式单过滤查看该进程的资源占用情况

https://www.booleanworld.com/guide-linux-top-command/

热点内容
俄罗斯方块的编程 发布:2025-05-13 20:51:08 浏览:610
python开发项目 发布:2025-05-13 20:44:17 浏览:736
安卓手机怎么样刷国行系统 发布:2025-05-13 20:44:14 浏览:320
云服务器端口如何设置断网间隔 发布:2025-05-13 20:43:15 浏览:131
linux系统休眠 发布:2025-05-13 20:30:05 浏览:906
安卓手表进水了怎么搞 发布:2025-05-13 20:11:31 浏览:515
linuxc语言随机数 发布:2025-05-13 20:09:16 浏览:240
c语言通用链表 发布:2025-05-13 19:53:04 浏览:806
lol挂机脚本后台 发布:2025-05-13 19:51:23 浏览:574
红米note3怎么锁屏密码忘了怎么办 发布:2025-05-13 19:51:03 浏览:192