
Tasks: 112 total, 3 running, 108 sleeping, 0 stopped, 1 zombie
Cpu(s): 12.0%us, 1.0%sy, 0.0%ni, 87.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1295272k total, 774012k used, 521260k free,44508k buffers
Swap: 3229024k total,0k used, 3229024k free, 426160k cached
PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND
6196 kiyo 20 0 265m 112m 29m R 8.3 8.9 3:41.96 firefox
5525 root 20 0 50432 38m 9108 S 3.3 3.1 0:54.68 Xorg
6691 kiyo 20 0 63604 15m 10m R 2.0 1.2 0:00.58 gnome-terminal
6711 kiyo 20 0 2308 1108 852 R 0.7 0.1 0:00.06 top
1 root 20 0 2844 1692 544 S 0.0 0.1 0:01.08 init
2 root 15 -5 000 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 000 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 000 S 0.0 0.0 0:00.00 ksoftirqd/0
5 root RT -5 000 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 000 S 0.0 0.0 0:00.06 events/0
7 root 15 -5 000 S 0.0 0.0 0:00.00 khelper
41 root 15 -5 000 S 0.0 0.0 0:00.06 kblockd/0
44 root 15 -5 000 S 0.0 0.0 0:00.00 kacpid
45 root 15 -5 000 S 0.0 0.0 0:00.00 kacpi_notify
139 root 15 -5 000 S 0.0 0.0 0:00.00 kseriod
177 root 20 0 000 S 0.0 0.0 0:00.00 pdflush
178 root 20 0 000 S 0.0 0.0 0:00.14 pdflush
米有pid0
主要参考 :Linux manual page - sched
自从linux内核2.6.23以来,默认的进程调度器就被设置为完全公平调度器(CFS,complete fair scheduler),取代了之前的O(1)调度器。
每个线程都有一个静态调度优先级,即 sched_priority 字段。
一个线程的调度策略决定了线程会被插入到同级静态优先级的线程队列的位置,以及它在队列中会怎样移动。
所有的调度都是可插入的,如果一个更高静态优先级的线程准备好了,现在运行中的线程就会被插入。而调度策略则仅仅影响了同样静态优先级的线程。
进程(线程)可以通过系统调用设置自身或者其他进程(线程)的调度策略。
其中 pid 为0时,设置自身的调度策略和参数。结构体 sched_attr 包含以下字段: size 、 sched_policy (即调度策略,具体会在下一节介绍)、 sched_flags 、 sched_nice 、 sched_runtime 、 sched_deadline 、 sched_period (最后三个为 SCHED_DEADLINE 相关的参数)。当设置成功,系统调用返回0;否则返回-1,并会设置 errno 。
普通进程: SCHED_OTHER / SCHED_BATCH / SCHED_IDLE
实时进程: SCHED_FIFO / SCHED_RR
特殊实时进程: SCHED_DEADLINE
静态优先级:Static_priority:对于普通进程,静态优先级为0;对于实时进程,静态优先级为1-99,99为最高优先级。
动态优先级:Dynamic_priority:仅对普通进程有用,取决于nice和一个动态调整的量(比如进程ready却没被调度,则增加)。
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中信号
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)