监视资源与管理进程

inux系统中时刻运行着许许多多的进程,若是可以合理的管理它们,绝对有益于系统的性能优化,系统进程总共有5种不一样的状态:php

R(运行):正在运行或在运行队列中等待。
S(中断):休眠中, 在等待某个条件的造成或接受到信号。
D(不可中断):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z:(僵死):进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
T:(中止):进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后中止运行。
ps命令用于查看系统中的进程状态,格式为:“ps [参数]”。
查看进程与状态:“ps -aux”
查找某个特定的进程信息:”ps -aux | grep 进程名”linux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的全部者 进程ID号 运算器占用率 内容占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数

参数         做用
-a              显示全部的进程(包括其余用户的)
-u              用户以及其余详细信息
-x              显示没有控制终端的进程缓存

top命令用于监视进程的活动与系统负载,格式为:“top”。性能优化

这个top命令可真的是太厉害了,彻底能够比喻成是“强化版的Windows任务管理器”,运行界面见右图:ssh

前面的五行为系统总体的统计信息,下面咱们来逐行的讲解:性能

1行:系统时间,运行时间,登录用户数,系统负载(分别为1分钟、5分钟、15分钟的平均值)。
2行:进程总数,运行中的,睡眠中的,中止的,僵尸的。
3行:用户占用资源,系统内核占用资源,改变过优先级的进程,空闲的资源,等待输入输出的时间。
此行数据均为CPU数据并以百分比格式显示,例如”99.2 id”意味着有99.2%的CPU资源正在空闲中。
4行:物理内存总量,使用量,空闲量,做为内核缓存的内存量。
5行:虚拟内存总量,使用量,空闲量,已被提早加载的内存数据。学习

进程的信息区中包含了各个进程的详细信息,含义以下:优化

PID:进程ID号
USER:进程的全部者
PR:优先级
NI:优先级(负值表示优先级更高)
VIRT:虚拟内存使用量
RES:物理内存使用量
SHR:共享内存大小
S:进程状态(上文中有提到)
%CPU:运算器的使用百分比
%MEM:内存的使用百分比
TIME+:使用CPU的时间(单位是1/100秒)
COMMAND:命令名称

 

pidof命令用于查询某个特定程序的进程PID值,格式为:“pidof [参数] [程序名称]”。spa

查询”sshd”进程的PID值:”pidof sshd”.net

kill命令用于终止某个特定PID号码的进程,格式为:“kill [参数] [进程PID号]”。

强制终止PID为4674的进程:”kill -9 4674″
✪其中的”-9″表明强制终止(SIGKILL),也是最经常使用的一种信号参数,查看所有请执行”kill -l”

killall命令用于终止某个特定名称的全部进程,格式为:“killall [参数] [进程名称]”。

终止名称为”sshd”的进程:”killall sshd”

在终端中运行一个命令后若是想当即的中止它,可使用组合键”Ctrl+c“,这样命令的进程将会完全的被终止。

但还有一种玩法是”Ctrl+z“,它是将命令的进程暂停(也叫挂载到后台扔到后台),先来看两条命令吧:

这条命令会每秒向家目录中的jobs.txt中追加一个字符串:

[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)

 

 

自动刷新查看文件内容的变化:

1
[root@linuxprobe ~]# tail -f ~/jobs.txt

模拟训练:试试”Ctrl+z”,学习jobs、bg和fg命令。

开始执行写入命令:

1
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)

确认一直在被写入字符:

1
[root@linuxprobe ~]# tail -f ~/jobs.txt

敲击”ctrl+z“后,这条命令的进程被暂停了(另外的终端中再也不被追加内容):

1
2
3
4
5
6
7
8
9
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)

^Z

[1]+ Stopped ( while true; do

echo -n " working " >> ~/jobs.txt; sleep 1;

done )

使用jobs命令能够查看到全部在后台运行着的进程:

1
2
3
4
5
6
7
[root@linuxprobe ~]# jobs

[1]+ Stopped ( while true; do

echo -n " working " >> ~/jobs.txt; sleep 1;

done )

运行bg命令让后台的程序继续执行,如今后台中只有一个进程,因此省略了编号,完整格式应为”bg 1“:

1
2
3
4
5
6
7
[root@linuxprobe ~]# bg

[1]+ ( while true; do

echo -n " working " >> ~/jobs.txt; sleep 1;

done )

运行fg命令将后台的进程再调回前台,程序依然在运行,此时你能够敲击组合键”ctrl+c“啦:

1
2
3
4
5
6
7
[root@linuxprobe ~]# fg

( while true; do

echo -n " working " >> ~/jobs.txt; sleep 1;

done )&

有些命令在执行时会不断的在终端上输出信息,影响到咱们继续输入命令了,此时即可以在这条命令后面添加个”&“符号,那么从一开始执行该命令就会是在后台执行(不是在后台暂停,而是在运行的)。

相关文章
相关标签/搜索