文章目录
- 一、进程管理相关命令
- top命令
- pgrep命令
- pstree命令进程树
- lsof
- vmstat 监控系统资源
- free 查看内存
- iostat
- iftop
- 图形化管理界面
- 总结
- 二、进程管理
- 启动
- 结束进程
- 三、计划任务
- at
- crontab周期
一、进程管理相关命令
top命令
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。
为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
选项:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
- -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
- -p 进程PID:仅查看指定 ID 的进程;
- -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
- -u 用户名:只监听某个用户的进程;
在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:
- ? 或 h:显示交互模式的帮助;
- c:按照 CPU 的使用率排序,默认就是此选项;
- M:按照内存的使用率排序;
- N:按照 PID 排序;
- T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
- k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
- r:按照 PID 给某个进程重设优先级(Nice)值;
- q:退出 top 命令;
注意是在top命令的显示窗口
top命令输出的内容是动态的,默认3秒刷新。
第一部分,显示整个系统的资源使用状况,我们通过这些输出来判断服务器资源使用状态。
第二部分是显示系统中进程的信息。主要参数可以参考ps命令
第一部分第一行为任务信息,从左到右分别为系统当前时间;系统运行时间;当前登录了几个用户。
**load average: 0.00,0.00,0.00:系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)**这是来判断服务器是否过载的重要因素
第二行为进程信息,从左到右是,系统中的进程总数,正在运行的进程数,睡眠的进程数,正在停止的进程数,僵尸进程数。
第三行为CPU信息
内 容 | 说 明 |
---|---|
Cpu(s): 0.0 %us | 用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率 |
0.3%sy | 系统模式占用的 CPU 百分比 |
0.0%ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.5%id | 空闲 CPU 占用的 CPU 百分比 |
0.1%wa | 等待输入/输出的进程占用的 CPU 百分比 1 |
0.0%hi | 硬中断请求服务占用的 CPU 百分比 |
0.2%si | 软中断请求服务占用的 CPU 百分比 |
0.0%st | st(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
第四行为物理信息
内 容 | 说 明 |
---|---|
Mem : 1867048 total | 物理内存的总量,单位为KB |
1097052 used | 己经使用的物理内存数量 |
77580 free | 空闲的物理内存数量。 |
692416 buff/cache | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
内 容 | 说 明 |
---|---|
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
Ok used | 已经使用的交换分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交换分区的大小 |
缓冲(buffer)和缓存(cache)的区别:
- 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
- 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
top 命令的第二部分输出,主要是系统进程信息,各个字段的含义如下:
- PID:进程的 ID。
- USER:该进程所属的用户。
- PR:优先级,数值越小优先级越高。
- NI:优先级,数值越小、优先级越高。
- VIRT:该进程使用的虚拟内存的大小,单位为 KB。
- RES:该进程使用的物理内存的大小,单位为 KB。
- SHR:共享内存大小,单位为 KB。
- S:进程状态。
- %CPU:该进程占用 CPU 的百分比。
- %MEM:该进程占用内存的百分比。
- TIME+:该进程共占用的 CPU 时间。
- COMMAND:进程的命令名。
htop(增强版的top)有交互界面,用yum安装
pgrep命令
查看指定点的进程
- -U 指定用户
- -l: 显示进程名
- -a: 显示完整格式的进程名
- -P pid: 显示指定进程的子进程
除此以外已知程序名不知道pid号还可以用
pidof 程序名 查找pid号
pstree命令进程树
选项:
- -a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
- -p 显示PID
- -T 不显示线程thread,默认显示线程
- -u 显示用户切换
- -H pid 高亮显示指定进程及其前辈进程
lsof
lsof 命令(list opened files),就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
选项 | 功能 |
---|---|
-c 字符串 | 只列出以字符串开头的进程打开的文件。 |
+d 目录名 | 列出某个目录中所有被进程调用的文件。 |
-u 用户名 | 只列出某个用户的进程打开的文件。 |
-p pid | 列出某个 PID 进程打开的文件。 |
lsof | more #查询系统中所有进程调用的文件
应用,当你误删一个文件时,恰巧这时候有用户在使用这个软件,我们可以找回这个文件
1.模拟破坏
vmstat 监控系统资源
vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
选项 | 含义 |
---|---|
-f | -f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。 |
-S 单位 | 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。 |
-d | 列出硬盘有关读写总量的统计表。 |
-p 分区设备文件名 | 查看硬盘分区的读写情况。 |
-s | 将从启动到目前为止,由一些事件导致的内存变化情况列表说明。 |
字段 | 含义 |
---|---|
procs | 进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。 |
memory | 内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。 |
swap | 交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。 |
io | 磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。 |
system | 系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙。 |
cpu | CPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比 |
free 查看内存
free -h查看内存
如何清除缓存
echo 3 > /proc/sys/vm/drop_caches
iostat
iostat 可以提供更丰富的IO性能状态数据
常用选项:
-c 只显示CPU行
-d 显示设备〈磁盘)使用状态
-k 以千字节为为单位显示输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标
动态输出
iftop
实时流量监控工具
图形化管理界面
webmin,开源软件,yum安装即可,可以图形化展示硬件性能。
dstat系统资源统计
需要yum安装
总结
五大要素
性能 | 命令 |
---|---|
内存使用率 | free |
CPU使用率 | top,w,iostat,uptime,ps |
硬盘使用 | df |
硬盘读写性能 | iostat |
网络带宽 | iftop |
二、进程管理
启动
前台启动:通过终端启动,且启动后一直占据终端
后台启动:通过终端启动,但启动后转入后台运行(释放终端)
命令运行于后台
运行中的作业:ctrl+z 放在后台,但是会停止作业
尚未启动的作业:命令 &
把命令放入后台的方法是在命令后面加入 空格 &
。使用这种方法放入后台的命令,在后台处于执行状态。注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。
并行执行任务
用&来连接
结束进程
1.kill
kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 “Ctrl+C” 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
2.killall
killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。
- -i:交互式,询问是否要杀死某个进程;
- -I:忽略进程名的大小写;
3.pkill
pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,可以参照kill命令。
pkill [命令] 进程名
选项
选项 | 含义 |
---|---|
-u | uid: effective user,生效者 |
-U | uid: real user,真正发起运行命令者 |
-t | terminal: 与指定终端相关的进程 |
-l | 显示进程名(pgrep可用) |
-a | 显示完整格式的进程名(pgrep可用) |
-P | pid: 显示指定进程的子进程 |
三、计划任务
at
一次性的工具,用完即失效。
at [option] TIME
at [选项] [时间]
[HH:MM] [yyyy-mm-dd]
HH:MM 在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
02:00
HH:MM YYYY-MM-DD 规定在某年某月的某一天的特殊时刻进行该项任务
打完命令之后,按ctrl+d提交。
crontab周期
周期性执行任务
选项 | 功能 |
---|---|
-u user | 用来设定某个用户的 crontab 服务,例如 “-u demo” 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时当中的第几分钟(minute) | 0~59 |
第二个"*" | 一天当中的第几小时(hour) | 0~23 |
第三个"*" | 一个月当中的第几天(day) | 1~31 |
第四个"*" | 一年当中的第几个月(month) | 1~12 |
第五个"*" | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
分时日月周
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。 |
*/2 * * * * /usr/bin/cp /etc/passwd /opt/
注意:
1.选项不能为空,必须填写,如果不确定,则使用“*”代替。
2.定时任务的最小有效时间为分钟,最大有效为月。
3.在定义时间时,日期和星期不要在同一条定时任务中出现,容易让管理员混淆。
4.在定时任务中,用绝对路径去写,避免报错。