以下为Linux开发中常用的命令。
筛选文本并查看指定上下行数
常用于筛选日志,并查看上下文
grep [选项] ‘模式’ [文件]
选项:
-A 后几行
-B 前几行
-C 前后几行
模式:
待筛选文本
文件:
待筛选源文件
举例1
2
3grep -A 20 'cat' info.log # 显示info.log及后20行
grep -B 20 'cat' info.log # 显示info.log及前20行
grep -C 20 'cat' info.log # 显示info.log文件里匹配cat字串行以及上下20行
zcat
用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。
1 | zcat log.gz |grep '000' |
查看linux内存使用情况
命令1
free -m
结果1
2
3 total used free shared buff/cache available
Mem: 64083 42542 6321 210 15219 20451
Swap: 0 0 0
- Mem:内存的使用情况总览表
- totel:机器总的物理内存 单位为:M
- used:用掉的内存
- free:空闲的物理内存
- shared:多个进程共享的内存总和,当前废弃不用
- buffers:缓存内存数
- cached:缓存内存数
注: - 物理内存(totel)=系统看到的用掉的内存(used)+系统看到空闲的内存(free)
- 程序预留的内存=buffers+cached
- buffer是即将要写入磁盘的,而cache是被从磁盘中读出来的
进程查看器
htop1
yum install htop
界面划分成了四个区域,其中:
- 上左区:显示了CPU、物理内存和交换分区的信息;
- 上右区:显示了任务数量、平均负载和连接运行时间等信息;平均负载表示的是过去的5分钟、10分钟和15分钟系统的平均负载;
进程区域:显示出当前系统中的所有进程;
1
2
3
4
5
6
7
8
9
10
11
12PID:进程标志号,是非零正整数
USER:进程所有者的用户名
PR:进程的优先级别
NI:进程的优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程使用的共享内存值
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称操作提示区:显示了当前界面中F1-F10功能键中定义的快捷功能。
压缩解压
.gz
1
2
3解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
tar 压缩多个包为1个1
tar czvf xx.tar xx-2019-10-1*.log.gz
查看系统负载
CPU的负载情况(load average),uptime、w和top等命令都可以看到load average指标,从左至右三个数字分别表示1分钟、5分钟、15分钟的load average。
Load Average指的是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
Load Average反映了CPU的使用情况和申请情况.
系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load数量。
load average计算:1
2
3
4static unsigned long count_active_tasks(void)
{
return (nr_running() + nr_uninterruptible()) * FIXED_1;
}
count_active_tasks()返回当前的活跃进程数,其中活跃进程包括:1)当前正在运行的进程(nr_running);2)不可中断的sleeping进程(如正在执行IO操作的被挂起进程)。
uptime1
16:36 up 3 days, 8:08, 4 users, load averages: 2.56 2.50 2.36
单核满载是 1,有 n 核满载是 n。两个相同的系统,一个负载是 3,一个负载是 6,如果只看 CPU 占用率,大家都是 100% ,能看出哪个系统当前的压力大吗?高负载时一般 CPU 都是 100%,要了解系统的压力,负载指标就比 CPU百分比更有意义。
Load Average所包含的信息不是CPU的使用率状况。多任务环境下,系统分配时间片以后,是否使用完全使用时间片取决于进程,因此完全可能出现低CPU利用率而高Load Average的情况
load是从/proc/loadavg中读取的。1
2cat /proc/loadavg
2.18 2.49 2.50 3/3491 15317
每个值的含义依次为:
lavg_1 (2.18) 1-分钟平均负载
lavg_5 (2.49) 5-分钟平均负载
lavg_15(2.50) 15-分钟平均负载
nr_running (3) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
nr_threads (3491) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
last_pid(15317) 最大的pid值,包括轻量级进程,即线程。
假设当前有2个CPU,则每个CPU的当前任务数为2.18/2=1.09
所以“Load值<=CPU核数”,这是最理想的状态,没有任何竞争,一个任务分配一个核。一般认为负载为0.7是警戒线。
top
1 | top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 |
1 | 统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下: |
1 | 第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下: |
1 | 最后两行为内存信息。内容如下: |
1 | 进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。 |