1. 什么是进程:
进程是正在执行的一个程序或者命令,每一个进程都是一个运行的实体都有自己的地址空间,并且占用一定的系统资源。正在运行着的程序,只要运行就会产生至少一个进程。
至于具体解释,请参见我的另一篇文章:进程、线程和前台进程、后台进程。
2. 进程管理的作用
1.判断服务器的健康状态,(主要作用)
2.查看系统中所有进程
3.杀死进程
注意:1.非法进程不能直接杀死进程,因为病毒会自动重启,或者开机就启动,2.任何时候能用正常方式关闭,就正常关闭,比如:service或者绝对路径的方式。因为如果关闭出错,可能就会导致,自己远程的时候被踢出。3.如果非得用这种方式关闭进程,那么就需要去百度查查,这个进程是干什么的。
3. 查看系统中所有进程
3.1.第一种方式
ps aux
#查看系统中所有进程,使用BSD操作系统格式-Unix格式
#a:前台进程,x:后台进程 ,u:这个进程由那个用户产生的
执行之后出现的部分内容如下
解释一下:
USER: 该进程由那个用户产生
PID 进程的ID号
%CPU 该进程占用CPU资源的百分比,占用越高,越耗费资源
资源就是CPU,内存,打印机,键盘啊等
%MEM 该进程占用实际物理内存的百分比,占用越高,越耗费资源
cpu内存等占用越高,代表着使用的东西越多,所以资源耗费越严重
VSZ 该进程占用虚拟内存的大小,单位KB
RSS 该进程实际物理内存大下,单位KB
TTY 该进程是在那个终端中运行的。其中tty1~7代表本地控制终端
。tty1~6是本地的字符界面终端,tty7是代表的图形终端
pts/0-255代表虚拟终端,可以理解为远程登录终端,
STAT 进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态,s:包含子进程
+:位于后台
START 该进程的启动时间
TIME 该进程占用CPU的运算时间,注意不是系统时间
COMMAND 产生此进程的命令者
3.2.第二种方式
ps -le
#查看系统中的所有进程,使用Linux标准命令格式
#-l(long):显示详细信息 e:显示所有进程
和ps -aux类似
3.3.第三种方式
查看进程树
pstree[选项]
选项:
-p 显示进程pid;详细信息,列出一个树形
-u 显示进程的所属用户user
执行之后部分内容如下图:
4. 查看系统健康状态
top [选项]
选项:
-d 秒数:指定top命令每隔几秒更新:默认是3秒
在top命令的交互模式当中,可以执行的命令:(那几个都是大写字母)
?或者h: 显示交互模式帮助
P: 以CPU使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以PID排序
q: 退出top
执行此命令产生的部分内容如下:
解释一下,前五行的内容,因为下五行和ps aux是一样的,就不在解释了:
第一行信息内容为任务队列信息
12:26:46 系统当前运行时间
up 1day,13:32 系统的运行时间,本机已经运行了一天13小时32分钟
2 users 当前登陆了两个用户(可以查看有几个用户登录)
loadaverage:
0.00,0.00,0.00 系统在一分钟,五分钟,十五分钟的平均负载,这是判断一个系统健康
状态的重要指标。如果CPU核心数为1,那么大于1,系统就属于超负荷
如果是小于1,负载较小,如果CPU核心数为4,可以认为超过4才超负荷
第二行为进程信息:
Tasks:95 total 系统进程的总数
1running 正在运行的进程数
94sleeping 睡眠的进程
0stopped 正在停止的进程
0zombie 僵尸进程,如果不是0,需要手工检查僵尸进程
僵尸进程就是这个进程正在终止,但是还没有终止完全
如果很长时间数字都是1,那么就证明这个进程卡死了
第三行为CPU信息
Cpu(s): 0.1%us 用户模式占用的CPU百分比
0.1%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程占用的CPU百分比
99.7%id 空闲CPU的CPU百分比(主要是这一行)
0.0%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比,就是当有虚拟机时
虚拟CPU等待实际CPU的时间百分比
第四行为物理内存的信息:
Mem:625344k total 物理内存总量,单位是KB
571504kused 已经使用的物理内存数量
53840k free 空闲的物理内存数量(主要看)
65800kbuffers 作为缓冲的内存数量
第五行是SWAP信息
Swap:51480k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交换分区大小
524280kfree 交换分区空闲大小
409280k cached 作为缓存的交互分区大小
5. 终止进程
5.1.kill命令
kill -l(英文小写L)
#查看当前可用的进程信号
进程的ID号,可以通过ps命令或者pstree查看
常用的信号
kill -1(数字1) pid(进程的ID号) 重启进程,其实service也是默认调用这个命令
kill -9 pid 强制杀死进程
kiil -15 pid 正常结束进程
5.2.killall命令
.killall[选项][信号] 进程名
#按照进程名杀死进程,这会杀死所有同名进程,比如多个Word进程全部被杀死,关闭
选项:
-i: 交互式,查询是否要杀死某个进程
-I(大写i): 忽略进程名
5.3.pkill命令
pkill [选项][信号] 进程名
#按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户(常用)
#pkill命令和killall很像,但是它可以按照终端号,踢出进程
6. 工作管理:
6.1. 把进程放入后台:
6.1.1.第一种方式
命令 &
#在命令后面添加&符号,就可以将工作放入后台运行
比如:
tar -zcvf etc.tar.gz /etc &
6.1.2.第二种方式:
执行命令的时候,按下执行ctrl+z快捷键,将进程放入后台,但是不执行,处于通知状态。也就是说处于等待状态,没有运行。
6.2. 查看后台工作:
jobs [-l]
选项:-l: 显示工作的pid
注意:“+”号代表,最近一个放入后台的工作,也是工作恢复的时候,默认恢复的工作。
“-”号,代表倒数第二个放入后台的工作,其他没有符号表示
查看后台工作有一个格式是
[1]- Stopped top
[2]+ Stopped tar -zxf etc.tar.gz /etc
说明:第一个方括号是表示工作号,表示第几个放入后台的
第二个上面说了就不说了,第三个是后台进程状态,可以是
停止,运行,杀死,完成等。第四个是后台的进程或者命令
6.3. 将后台暂停的工作恢复到前台执行:
fg %工作号
参数
%工作号 %可以省略,但是要注意区分工作号和pid的区别
6.4. 将后台暂停的工作恢复到后台执行
bg %工作号
注意:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到
前台执行。比如vim,vi fdisk top等需要与用户有交互,放到后台你怎么进行交互。
7. 系统资源查看:
7.1.查询概况
vmstat [刷新延时刷新次数]
例如:
vmstat 1 3
#刷新三次,每次间隔1秒钟
相当于top命令的简洁版
7.2. 开机时内核检测
dmesg #可以来判断硬件信息,开机的时候,系统会检测硬件信息,并且会写到/var/log/dmesg日志下,这个命令就是读取这个日志的。
比如:
demesg| grep CPU
#查看CPU信息
7.3查看内存使用状态
free[-b|-k|-m|-g]
选项:
分别是:字节,kb,MB,GB的意思
7.4. 查看CPU信息
cat /proc/cpuinfo
#这个目录是内存信息的保存地方,每次启动之后会把cpu信息写到这里
#然后就可以查看了
7.5显示系统的启动时间和平均负载
uptime命令
uptime
#显示系统的启动时间和平均负载,也就是top命令的第一行
#w命令也可以查看这个数据。
7.6.查看系统内核相关信息
uname [选项]
#查看系统与内核相关信息
选项:
-a: 查看系统所有的相关信息
-r: 查看内核版本
-s: 查看内核名称
比如我的是:
7.7.列出查看操作系统位数
file命令是查看文件信息命令
file/bin/ls 必须是一个外部命令,就可以顺带查看操作系统位数
7.8. 列出进程打开或使用的文件信息
lsof[选项]
#列出进程调用或者打开的文件的信息
选项:
-c字符串:只列出以字符串开头的进程打开的文件
-u 用户名 只列出某个用户的进程打开的文件
-p pid 只列出某个pid进程打开的文件
8. 系统的定时任务:
8.1.crond服务管理与访问控制
先启动这个服务
servicecrond restart #启动这个服务
chkconfigcrond on #设置这个服务自启动
#以d结尾的进程是守护进程的意思
8.2. 用户的crontab设置
crontab[选项]
选项:
-e: 编辑crontab定时任务--打开文件编辑文件
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
打开这个文件的编辑的格式:
* * * * * commond
第一个* 一个小时中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月中的第几个天 1-31
第四个* 一年当中的几个月 1-12
第五个* 一个周中的星期几 0-7(0和7都代表周日)
如果有的位置是*号,那么是每个
比如:
45 22 * * * 命令 表示在每天的22点45分执行命令
0 17 * * 1 命令
特殊符号的意思:
* 代表任何时间,比如第一个*就代表一个小时中每一个分钟都执行一次,第二个*代表一天中的每个小时,第三个*代表,一年中的每一天.....
, 代表不连续的时间。比如:“08,12,16 * * * ,命令,代表每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续时间范围。比如0 5 * * 1-6 命令“,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久就执行一次,比如“*/10 * * * * 命令“,代表每隔10分钟执行一次命令
最好不要将星期和天都有,因为会把你搞晕,如果放在一起,那么就是和的关系,
比如
0 5 1,15 * 1 命令
表示的意思是:在每个月的1号,15号和每周的星期一都执行
8.3.删除指定的定时任务
就是crond -e 进去这个编辑的文件,删除某一行就可以了