进程管理:查看与终止
- 进程查看
1. 进程是正在执行的程序或命令。
2. 进程管理的作用:
判断服务器健康状态,
查看系统中所有进程
杀死进程
3. 查看系统中所有进程
ps aux # 查看系统中所有进程,使用BSD操作系统格式
ps le # 查看系统中所有进程,使用Linux标准命令格式
USER:该进程由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-256代表虚拟终端。?代表由内核产生;
STAT:进程状态。常见的状态有(R:运行、S:睡眠、T:停止、s:包含子进程、+:位于后台);
START:该进程的启动时间;
TIME:该进程占用CPU的运算时间,注意不是系统时间;
COMMAND:产生此进程的命令名;
4. 查看系统健康状态
top [选项]
-d 秒数 : 指定top命令每隔几秒更新,默认是3秒;
在top命令的交互模式当中可以执行的命令:
? 或 h : 显示交互模式的帮助;
P : 以CPU使用率排序,默认;
M : 以内存的使用率排序;
N : 以PID排序;
q : 退出top;
第一行是任务队列信息
12:26:46 # 系统当前时间(不一定准确)
up 1 day, 13:32 #系统的运行时间,本机已运行1天 13小时32分钟
2 users # 当前登录了两个用户
load average:0.06, 0.11, 0.12 # 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时(1核CPU),负载较小。如果大于1,系统已经超出负荷。
第二行是进程信息
Tasks:95 total # 系统中的进程总数
1 running # 正在运行的进程数
94 sleeping # 睡眠的进程
0 stopped # 正在停止的进程
0 zombie # 僵尸进程。如果不是0,需要手工检查僵尸进程
第三行是CPU信息
Cpu(s):0.1%us # 用户模式占用的CPU百分比
0.1%sy # 系统模式占用的CPU百分比
0.0%ni # 改变过优先级的用户进程占用的CPU百分比
99.7%id # 空闲CPU的百分比
0.1%wa # 等待输入/输出的进程的占用CPU百分比
0.0%hi # 硬中断请求服务占用的CPUb百分比
0.1%si # 软中断请求服务占用的CPU百分比
0.0%st # st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。
第四行是物理内存信息
Mem:1870784k total # 物理内存的总量,单位KB
1795092k used # 已经使用的物理内存数量
85028k free # 空闲的物理内存数量,如果是虚拟机就是虚拟机中所剩可用内存,(85028/1024=83M)
0 buffers # 作为缓冲的内存数量
第五行是交换分区(swap)信息
Swap:2097148 total # 交换分区(虚拟内存)的总大小
736812k used # 已经使用的交换分区的大小
1360336 free # 空闲交换分区的大小
300712 cached Mem # 作为缓存的交换分区的大小
( 以上几个重要指标是:平均负载,CPU空闲率,内存空闲大小 )
( top命名本身也是耗资源的,没有必要一直开着,用完就退出 )
5. 查看进程树
pstree [选项]
-p : 显示进程的PID
-u : 显示进程的所属用户
- 终止进程
kill -l # 查看可用的进程信号。
kill -1 进程ID # 该信号让进程立即关闭,然后重新读取配置文件之后重启。
kill -9 进程ID # 立即结束程序的运行,本信号不能被阻塞、处理和忽略。一般用于强制终止进程。
kill -15 进程ID # 正常结束进程的信号,kill的默认信号。
killall [选项][信号] 进程名 # 按照进程名杀死进程
选项
-i : 交互式,询问是否要杀死某个进程
-I : 忽略进程名的大小写
pkill [选项][信号] 进程名 # 按照进程名终止进程(与killall完全一样,除了选项)
选项
-t 终端号 : 按照终端号提出用户
( w # 使用w命令查询本机已经登录的用户 )
( pkill -t -9 pts/1 # 强制杀死从pts/1虚拟终端登录的进程 )
工作管理
- 把进程放入后台
1. 命令结尾加 & 符号,在后台继续执行;
2. 命令执行过程中按 ctrl+z ,把任务放入后台暂停运行。
一个典型场景是,vim 编辑某些文件时,使用 ctrl+z 可以保留工作现场退回到终端,之后通过 fg 回到编辑界面。
- 查看后台的工作
jobs [-l]
参数: -l 显示工作的 pid
“+” 代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。
“ - ” 代表倒数第二个放入后台的工作。
- 将后台暂停的工作恢复到前台执行
fg %工作号
参数:%工作号 注意工作号是 jobs 列出的在行首的数字,不是PID
- 把后台暂停的工作恢复到后台执行
bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行,比如 top、vim.
系统资源查看
- vmstat 命令监控系统资源使用情况
vmstat [刷新延时 刷新次数]
vmstat 2 3 # 共输出三次,每次间隔2秒,主要是看内存和CPU的使用,比 top 的输出内容简洁
- dmesg 开机时内核检测信息
dmesg
dmesg | grep CPU
- cat /proc/cpuinfo 查看CPU信息
- free 命令专门查看内存使用状态
free [-b|-k|-m|-g|-h]
缓存(cache)和缓冲(buffer)的区别:
缓存是用来加速数据从硬盘中“读取”的,而缓冲是用来加速数据“写入”硬盘的。
- uptime 命令
显示系统的启动时间和平均负载,也就是 top 命令的第一行,w 命令也可以看到这个数据。
- 查看系统与内核相关信息
uname [选项]
-a 查看系统所有相关信息
-r 查看内核版本,主要用途
-s 查看内核名称
- 判断当前系统的位数
file /bin/ls # /bin/ls: ELF 64-bit ......
- 查询当前 Linux 系统的发行版本
lsb_release -a
- 列出进程打开或使用的文件信息
lsof [选项]
-c 字符串 只列出以字符串开头的进程打开的文件
-u 用户名 只列出某个用户的进程打开的文件
-p pid 列出某个PID进程打开的文件
系统定时任务
- cron 服务管理与访问控制
systemctl restart cron.service # 重启cron服务
systemctl enable cron.service # 设置开机自启动
systemctl list-unit-files # 查看是否开机自启动
systemctl list-units --type=service # 查看所有已启动的服务
- 用户的 crontab 设置
crontab [选项],格式:分-时-日-月-周 命令
-e 编辑 crontab 定时任务
-l 显示用户的 crontab 任务
-r 删除当前用户所有的 crontab 任务