一、基础知识
1.1 Linux系统的文件结构
1 | /bin 二进制文件,系统常规命令 |
1.2 Linux系统命令行的含义
1 | 示例:root@app00:~# |
1.3 命令的组成
1 | 示例:命令 参数名 参数值 |
二、基础操作
2.1 关闭系统
1 | (1)立刻关机 |
2.2 重启系统
1 | (1)立刻重启 |
2.3 帮助命令(help)
1 | ifconfig --help //查看 ifconfig 命令的用法 |
2.4 命令说明书(man)
1 | man shutdown //打开命令说明后,可按"q"键退出 |
2.5 切换用户(su)
1 | su yao //切换为用户"yao",输入后回车需要输入该用户的密码 |
三、目录操作
3.1 切换目录(cd)
1 | cd / //切换到根目录 |
3.2 查看目录(ls)
1 | ls //查看当前目录下的所有目录和文件 |
3.3 删除目录与文件(rm)
1 | rm 文件名 //删除当前目录下的文件 |
3.4 修改目录(mv)
1 | mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作 |
3.5 拷贝目录(cp)
1 | cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面 |
3.6 搜索目录(find)
1 | find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录 |
3.7 查看当前目录(pwd)
1 | pwd //显示当前位置路径 |
四、文件操作
4.1 新增文件(touch)
1 | touch a.txt //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间 |
4.2 删除文件(rm)
1 | rm 文件名 //删除当前目录下的文件 |
4.3 编辑文件(vi、vim)
1 | vi 文件名 //打开需要编辑的文件 |
4.4 查看文件
1 | cat a.txt //查看文件最后一屏内容 |
4.5 给文件替换字符串(sed)
1 | # 在输出或打印中,替换字符串。并不改变原文件内容 |
例,sed ‘s/cat/dog/g’ pet.txt
在全局范围(s前的作用范围无内容)查找cat并替换为dog,作用范围内每一行出现的不仅第一个目标,而是所有目标都会被替换(g)。
1 | # 作用范围在全文 |
指定行,写上行号;指定某行到某行,用逗号连接行号
1 | # 作用范围在第1行 |
五、文件权限
5.1 权限说明
1 | 文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),括号内代表"8421法" |
5.2 文件权限
who | 用户类型 | 说明 |
---|---|---|
u |
user | 文件所有者 |
g |
group | 文件所有者所在组 |
o |
others | 所有其他用户 |
a |
all | 所有用户, 相当于 ugo |
+ |
为指定的用户类型增加权限 |
---|---|
- |
去除指定用户类型的权限 |
= |
设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
1 | 普通授权 chmod +x a.txt |
八进制语法:
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
六、打包与解压
6.1 说明
1 | .zip、.rar //windows系统中压缩文件的扩展名 |
6.2 打包文件
1 | tar -zcvf 打包压缩后的文件名 要打包的文件 |
七、其他常用命令
7.1 find
1 | find . -name "*.c" //将目前目录及其子目录下所有延伸档名是 c 的文件列出来 |
7.2 whereis
这个命令可以用来查找二进制(命令)、源文件、man文件。与which
不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which
要广
1 | whereis ls //将和ls文件相关的文件都查找出来 |
7.3 which
1 | 说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 |
7.4 sudo
1 | 说明:sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。需要输入自己账户密码。 |
7.5 grep
1 | grep -i "the" demo_file //在文件中查找字符串(不区分大小写) |
7.6 service
1 | 说明:service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径 |
7.7 free
1 | 说明:这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况 |
total:表示物理,内存总量
used:总计分配给缓存(包含Buffer和cache)使用的数量,但其中可能部分缓存并未实际使用
free:未被分配的内存。是真正尚未被使用的物理内存数量。
shared:共享内存,一般系统不会用到,这里也不讨论
buff:系统分配但未被使用的buffers数量
cache:系统分配但未被使用的cache数量
(cache是cpu和内存之间的,buffer是内存和磁盘之间的,都是为了解决速度不对等的问题。
缓存(cache)是把读取过来的数据保存起来,重新读取时若命中,就不去硬盘了,若没有命中就去读硬盘,其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读取的内容不断往后排,直至从中删除。
缓冲(buffer)时根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的的反复寻道,从而提高系统性能,linux有一个守护进程定期清空缓冲内容(即写入磁盘)。
buffer是即将要写入磁盘的,而cache是被从磁盘中读出来的。)
available:和free是有区别的,是实际可以用的最大空间。是应用程序认为可用内存数量,available = free + buff/cache (注:只是大概的计算方法)Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。
7.8 top
1 | top //显示当前系统中占用资源最多的一些进程, shift+m 按照内存大小查看 |
各行参数信息:
第一行:
12:18:39 系统当前时间
392 days, 17:32 系统从开机到现在的时间
1 user 当前用户数
load average: 5.44, 6.00, 6.10 系统1分钟、5分钟、15分钟的CPU负载信息
第二行:
532 total:当前有532个任务,也就是532个进程。
2 running:2个进程正在运行
529 sleeping:529个进程睡眠
0 stopped:停止的进程数
1 zombie:僵死的进程数
第三行:
Cpu(s):表示这一行显示CPU总体信息
8.1us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
2.4sy:内核占用CPU时间百分比
0.0ni:改变过优先级的进程占用CPU的百分比
89.0 id:空闲CPU时间百分比
0.2wa:等待I/O的CPU时间百分比
0.0hi:CPU硬中断时间百分比
0.3si:CPU软中断时间百分比
注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
第四行:
Men:内存的意思
65281768k total:物理内存总量
30484308k used:使用的物理内存量
3235388k free:空闲的物理内存量
31562072k buff/cache:用作内核缓存的物理内存量
第五行:
Swap:交换空间
total:交换区总量
used:使用的交换区量
free:空闲的交换区量
avail Men:实际最大可用交换区总量
进程信息:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
然后按特定按键 就能很清楚的查看到cpu和内存的使用情况
① 键入大写P,结果按CPU占用降序排序, %CPU
② 键入大写M,结果按内存占用降序排序, %MEN
7.9 df
1 | 说明:显示文件系统的磁盘使用情况 |
7.10 mount
1 | mount /dev/sdb1 /u01 //挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上 |
7.11 uname
1 | 说明:uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息 |
7.12 yum
1 | 说明:安装插件命令 |
7.13 rpm
1 | 说明:插件安装命令 |
7.14 date
1 | date -s "01/31/2010 23:59:53" ///设置系统时间 |
7.15 wget
1 | 说明:使用wget从网上下载软件、音乐、视频 |
7.16 ftp
1 | ftp IP/hostname //访问ftp服务器 |
7.17 scp
1 | scp /opt/data.txt 192.168.1.101:/opt/ //将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下 |
7.18 cpu信息
1 | 看cpu信息 |
7.19 网络负载
1.查看服务器网络端口
2.ethtool命令查看宽带大小
三、nload命令实时统计网卡带宽使用率
没有nload命令的需要下载;
yum -y install nload
#等待下载完
#直接使用命令查看
nload
四、dstat -n命令实时监测网络的状态
下载yum install dstat
dstat -n
7.20 vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控,是对系统的整体情况进行统计。
1 | $ vmstat |
我们只关注cpu列:
us:用户进程执行时间百分比
sy:系统进程执行时间百分比
id:空闲时间百分比
wa:等待IO时间百分比
st:被虚拟机偷走的cpu时间百分比
7.21 iostat命令
iostat是I/O statistics(输入/输出统计)的缩写,iostat将对系统的磁盘操作活动进行监视。iostat命令主要是用来查看IO使用状况,也可以查看cpu使用情况。
1 | Linux 3.10.0-862.3.2.el7.x86_64 (instance-34rgafwb) 01/03/2020 _x86_64_ (8 CPU) |
avg-cpu 行是CPU平均使用率,与前述命令类似:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
7.22 sar命令
sar(System Activity Reporter,系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。我们现在只关注CPU使用率和系统负载。
- 输出CPU使用率的统计信息:
1 | sar 10 3 //每10秒采样一次,连续采样3次 |
输出如下:
1 | # sar -u 10 3 |
CPU列的 “all” 说明统计信息是所有cpu使用率的平均值,数字 “x” 说明此统计信息是CPU核心x的使用率。各列数据的意义与前述几个命令一样,不再赘述。
- 系统平均负载
监控进程队列长度和平均负载,每10秒采样一次,连续采样3次:
1 | # sar -q 1 3 |
输出项说明:
runq-sz:运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
plist-sz:进程列表中的进程(processes)和线程数(threads)的数量
ldavg-1:最近1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,以下类似
ldavg-5:最近5分钟的CPU平均负载
ldavg-15:最近15分钟的CPU平均负载
7.23 mpstat命令
mpstat是MultiProcessor Statistics的缩写,是一个实时系统监控工具,输出CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均统计信息,而且能够查看特定CPU的信息。
- 显示所有CPU整体(平均)使用状况
1 | # mpstat //不带参数时,输出为从系统启动以来的平均值 |
- 显示所有CPU的使用状况
1 | # mpstat -P ALL 10 20 //每10秒收集一次数据,共20次 |
输出项说明:
%usr:表示处理用户进程所使用CPU的百分比
%nice:表示使用nice命令对进程进行降级时CPU的百分比
%sys:表示内核进程使用的CPU百分比
%iowait:表示等待进行I/O所使用的CPU时间百分比
%irq:表示用于处理系统中断的CPU百分比
%soft:表示用于软件中断的CPU百分比
%steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest:显示运行虚拟处理器时CPU花费时间的百分比
%idle:显示CPU的空闲时间百分比
7.24 uptime命令
uptime命令是一个简单的获取系统总共运行时长,以及最近1分钟、5分钟、15分钟的平均负载的工具。uptime命令输出内容与top命令输出首行内容一样,不再赘述。
1 | # uptime |
7.25 pidstat命令
pidstat命令主要用于监控全部或指定进程占用系统资源的情况。
1 | # pidstat |
八、系统管理
8.1 防火墙操作
1 | service iptables status //查看iptables服务的状态 |
8.2 修改主机名(CentOS 7)
1 | hostnamectl set-hostname 主机名 |
8.3 查看网络
1 | ifconfig |
ifconfig和ip addr这两个命令返回的都是机器的网卡信息,其中包含了网卡的 MAC 地址和 IP 地址,有了这两个地址才能进行网络通信,其中ifconfig命令默认显示当前已启动的网卡信息,而ip addr 会显示当前所有网卡信息,包括已启动和未启动的网卡信息,如果需要显示全部网卡信息需要输入命令ifconfig -a命令。
8.4 修改IP
1 | 修改网络配置文件,文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0 |
8.5 配置映射
1 | 修改文件: vi /etc/hosts |
8.6 查看进程
1 | ps -ef //查看所有正在运行的进程 |
8.7 结束进程
1 | kill pid //杀死该pid的进程 |
8.8 查看链接
1 | 命令 说明 |
1 | ping IP //查看与此IP地址的连接情况 |
8.9 快速清屏
1 | ctrl+l //清屏,往上翻可以查看历史操作 |
8.10 远程主机
1 | ssh IP //远程主机,需要输入用户名和密码 |
8.11 软硬链接(ln)
1 | ln [参数][源文件或目录][目标文件或目录] |
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
1 | ln -s log2013.log link2013 |
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
1 | ln log2013.log ln2013 |
8.12 进程优先级(nice)
Linux nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
使用权限:所有使用者。
设置程序运行时的优先级
1 | # vi & //后台运行 |
将 ls 的优先序加 1 并执行
1 | nice -n 1 ls |
将 ls 的优先序加 10 并执行
1 | nice ls |