今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。

一、Linux 文件基本属性: ls -l

Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以文件的权限归属就至关重要。

为了保障系统的安全性和文件的隐私性,一个文件针对不同权限的账户有着不同的权限,如下图
Linux常用命令 - 图1
如图所示,文件权限是由一个字符串所表示,其所代表的含义为
Linux常用命令 - 图2

  • 10个字符确定不同用户能对文件干什么
  • 第一个字符代表文件(-)、目录(d),链接(l)
  • 其余字符每3个一组(rwx),读(read)、写(write)、执行(excute)
  • 第一组rwx:文件所有者的权限是读、写和执行
  • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
  • 第三组r—:不与文件所有者同组的其他用户的权限是读不能写和执行
  • 也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7

    chmod 修改文件权限

    可以修改文件的权限 chmod 777 filename
    也可以单独对不同的用户进行权限修改
    a 所有用户 chmod a+rwx feixing.txt
    u 文件所属主 权限修改
    g 文件所属组 权限修改
    o 其他用户,权限修改

    其它权限相关:

    chown 修改文件所属主(修改文件的拥有者)
    chgrp 修改文件所属组(修改文件拥有组)

    二、Linux 文件与目录管理

    1. ls (英文全拼:list files): 列出目录及文件名

    选项与参数:
    -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来; (常用)
    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
    image.png

    2. cd(英文全拼:change directory):切换目录

    绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
    相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
    1. . 表示当前目录
    2. .. 表示上一级目录
    3. / 表示根目录
    4. ~ 表示用户的Home目录

    3. pwd(英文全拼:print work directory):显示当前的工作目录

    image.png

    4. mkdir(英文全拼:make directory):创建一个新的目录

    在用户home目录下的test_dir文件夹中,创建一个测试文件夹【test_yourname_date】
    image.png

    5. touch:创建一个新的文件

    在你自己的文件夹中【 ~/test_dir/你的文件夹】创建一个文件
    image.png

    6. rmdir(英文全拼:remove directory):删除一个空的目录

    image.png

7. cp(英文全拼:copy file): 复制文件或目录

image.png

8. rm(英文全拼:remove): 删除文件或目录

选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
删除dir2目录
image.png
删除file2文件
image.png

9. mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
image.png
剪切到目标目录中,-i参数示例
image.png

三、Linux 文件内容查看

1. cat 由第一行开始显示文件内容

image.png

2. more 一页一页的显示文件内容

在 more 这个程序的运行过程中,你有几个按键可以按的:

  1.   空白键 (space):代表向下翻一页;
  1.   Enter         :代表向下翻『一行』;
  1.   /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;如:/Exception
  1.   :f            :立刻显示出档名以及目前显示的行数;
  1.   q             :代表立刻离开 more ,不再显示该文件内容。
  1.   b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

3.less命令

less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
less运行时可以输入的命令有:

  1. 空白键    :向下翻动一页;
  1. [pagedown]:向下翻动一页;
  1. [pageup]  :向上翻动一页;
  1. /字串     :向下搜寻『字串』的功能;
  1. ?字串     :向上搜寻『字串』的功能;
  1. n         :重复前一个搜寻 (与 / 或 ? 有关!)
  1. N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  1. q         :离开 less 这个程序;

4. head 只看头几行

选项与参数:
-n :后面接数字,代表显示几行的意思— 默认的情况中,显示前面 10 行!
若要显示前 20 行,就得要这样:
head -n 20 filename

5.tail 只看尾巴几行(常用)

选项与参数:
-n :后面接数字,代表显示几行的意思— 默认的情况中,显示后面 10 行!
若要显示后 20 行,就得要这样:
tail -n 20 filename
-f : 表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
tail -f /filepath/filename

6.vi文本编辑命令

基本上 vi 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

1)命令模式:

i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。

2)输入模式:

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
ESC,退出输入模式,切换到命令模式

搜索
/word
向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入/vbird 即可! (常用)
?word
向光标之上寻找一个字符串名称为 word 的字符串。
n
这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N
这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。

3)文件保存与退出

:w    将编辑的数据写入硬盘档案中(常用)<br />    :w!    若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!<br />    :q    离开 vi (常用)<br />    :q!    若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。<br />    :wq    储存后离开,若为 :wq! 则为强制储存后离开 (常用)<br />底线命令模式:<br />q 退出程序<br />w 保存文件

7.grep 文本搜索命令

grep “Exception” 2021-11-07.0.log

  • -C<显示行数> 或 —context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -i 或 —ignore-case : 忽略字符大小写的差别。
  • -H 或 —with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -n 或 —line-number : 在显示符合样式的那一行之前,标示出该的行号。
  • -v 或 —invert-match : 显示不包含匹配文本的所有行。

image.png

8.输出重定向 >

输出重定向到一个文件或设备 覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件

cd /atest_10
echo “你好” > 123.txt

9.压缩文件 tar命令

压缩文件: tar -zcvf [压缩后的文件名] [要压缩的文件或目录]
解压文件:tar -zxvf [被压缩的文件名]

五、常见日志级别

记录消息的方法各不相同,按严重性顺序排列:

  1. ERROR

应用报错信息,表明出现了系统错误和异常,无法正常完成目标操作

  1. WARN

表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示

  1. INFO

常规信息打印:用来反馈系统的当前状态给最终用户的

  1. DEBUG

    主要用来打印调试信息,在系统实际运行过程中,一般都是不输出的,生产上关闭这个级别的信息

    六、Linux常用监控服务器性能命令

    影响Linux服务器性能的主要因素:

  • CPU
  • 内存
  • 磁盘I/O
  • 网络I/O

    1. 查看cpu使用情况 —— top命令

    执行命令:[root@localhost ~]# top ``` top

-d # 指定动态变化时间 -p # 查看指定pid的进程 -u # 查看指定用户的进程 -b # 输出完整的内容 top -d1 -b -n2 >top.txt -n # 指定次数

top的快捷键

h # 查看帮助 z # 高亮显示 1 # 显示所有cpu s # 设置刷新时间 b # 高亮显示处于R状态的进程 M # 按内存百分比排序输出 P # 按CPU使用百分比排序输出 R # 对排序进行反转 f # 自定义显示字段 k # kill掉指定的pid进程 W # 保存top环境设置 ~/.toprc B # 加粗 q # 退出

使用命令如下图:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22479997/1636343803051-5ffa82a8-60da-4505-911a-32f308204d7c.png#clientId=u2cb60614-9149-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=326&id=ub09b87d8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=652&originWidth=1113&originalType=binary&ratio=1&rotation=0&showTitle=false&size=92546&status=done&style=none&taskId=u195a4d76-e2e7-46b8-b26a-a5d5d99bd5d&title=&width=556.5)<br />注:top动态实时监控 ,退出 按:q 或ctl+c<br />**上半部分显示了整体系统负载情况**<br />**top一行**:从左到右依次为当前系统时间,系统运行的时间,系统在之前1min、5min和15min内cpu的平均负载值

查看CPU的总核心数 grep -c ‘model name’ /proc/cpuinfo

**Tasks一行**:该行给出进程整体的统计信息,包括统计周期内进程总数、运行状态进程数、休眠状态进程数、停止状态进程数和僵死状态进程数<br />**Cpu(s)一行**:cpu整体统计信息,包括用户态下进程、系统态下进程占用cpu时间比,nice值大于0的进程在用户态下占用cpu时间比,cpu处于idle状态、wait状态的时间比,以及处理硬中断、软中断的时间比
    0.3% us — 用户空间占用CPU的百分比。
0.0% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
99.7% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比

``` Mem一行:该行提供了内存统计信息,包括物理内存总量、已用内存、空闲内存以及用作缓冲区的内存量
Swap一行:虚拟内存统计信息,包括交换空间总量、已用交换区大小、空闲交换区大小以及用作缓存的交换空间大小
下半部分显示了各个进程的运行情况
PID: 进程pid
USER: 拉起进程的用户
PR: 该列值加100为进程优先级,若优先级小于100,则该进程为实时(real-time)进程,否则为普通(normal)进程,实时进程的优先级更高,更容易获得cpu调度,以上输出结果中,java进程优先级为120,是普通进程,had进程优先级为2,为实时进程,migration 进程的优先级RT对应于0,为最高优先级
NI: 进程的nice优先级值,该列中,实时进程的nice值为0,普通进程的nice值范围为-20~19
VIRT: 进程所占虚拟内存大小(默认单位kB)
RES: 进程所占物理内存大小(默认单位kB)
SHR: 进程所占共享内存大小(默认单位kB)
S: 进程的运行状态
%CPU: 采样周期内进程所占cpu百分比
%MEM: 采样周期内进程所占内存百分比
TIME+: 进程使用的cpu时间总计
COMMAND: 拉起进程的命令

2.查看内存使用 —— free命令

执行命令:
[root@localhost ~]# free
image.png
— 如果加上 -h 选项,输出的结果会友好很多
[root@localhost ~]# free -h
image.png
第一部分Mem行解释:
total 系统总的可用物理内存大小
used 已被使用的物理内存大小
free 还有多少物理内存可用
shared 被共享使用的物理内存大小
buff/cache 被 buffer 和 cache 使用的物理内存大小
available 还可以被 应用程序 使用的物理内存大小

image.png
第二部分Swap行解释:
swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
Swap:total(总量)= 2G
used(使用)= 0B
free(空闲)= 2.0G
由于系统当前内存还比较充足,并未使用到交换分区。

3.查看磁盘使用量 —— iostat 命令

iostat 主要用于输出磁盘IO 和 CPU的统计信息。
iostat 安装
# iostat属于sysstat软件包。可以直接安装。
yum -y install sysstat
image.png
结果分析:
KB_read/s表示每秒读取的数据块数。
KB_wrtn/s表示每秒写入的数据块数。
KB_read表示读取的所有块数。
KB_wrtn表示写入的所有块数。
可以通过KB_read/s和KB_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果KB_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果KB_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。
对于这两个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

4.查看某个端口是否被占用 —— netstat 命令

netstat 命令安装
安装:yum -y install net-tools
[root@localhost ~]# netstat -anp | grep 端口号
如:
image.png
查询当前所有已使用的端口:
netstat -nultp
image.png

5.查找指定进程 —— ps 命令

ps -ef | grep 进程关键字
image.png
常见面试问题:
1.linux的常用命令有哪些?
2.查看日志的命令有哪些?
3.vi命令的基本操作
(明白各个命令在测试场景中的实际应用场景)