加载中...

Linux学习笔记


Linux学习

1 路径和特殊IP

1.1 基本路径

  • 绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
  • 相对路径:以当前目录为起点,描述路径的一种写法,路径不需要以/开头

1.2 特殊路径符

  • .:表示当前目录,比如cd ./Desktop表示切换到当前目录下的Desktop目录内,与cd Desktop效果一致
  • ..:表示上一级目录,比如cd ..即可切换到上一级目录,cd ../..切换到上二级的目录
  • ~:表示home目录,比如cd ~即可切换到home目录,cd ~/Desktop,切换到home内的Desktop目录

练习:
当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,描述文件的相对路径:
test/hello.txt
在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,描述文件的相对路径:
…/test/hello.txt
在home目录内有一个test文件夹,文件夹内有一个文件hello.txt,描述文件的相对路径:
~/test/hello.txt

1.3 特殊IP地选

  • 127.0.0.1:指代本机
  • 0.0.0.0
    • 可以用于指代本机
    • 可以在端口绑定中来确定绑定关系
    • 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问

1.4 主机名

hostname:查看主机名
hostnamectl set-hostname 新名字:修改主机名[更改主机名字,需要root]

2 Linux命令基础

2.1 ls(展示内容)

  • ls:展示当前工作目录(默认是home目录)下的内容(文件/文件夹)
  • 用法:ls [-a -l -h] [Linux路径]
    -a:可以展示出隐藏的内容(以.开头的文件或文件夹默认被隐藏,需要-a才能显示出来)
    -l:以列表的形式展开内容,展示更多细节(存在缩写:ls -l<=>ll)
    -h:需要和-l选项搭配使用,以展示更加人性化的文件大小单位
    没有路径参数:显示当前工作目录下的内容
  • 组合使用:命令的选项是可以组合使用的,比如ls -lah,等同于ls -a -l -h

图例: Alt

2.2 cd(切换目录)

  • cd:可以切换当前目录
  • 用法:cd [Linux路径]
    使用路径参数:切换到指定路径
    没有路径参数:切换工作目录到当前用户的home

2.3 pwd(显示路径)

  • pwd:输出当前所在的工作目录
  • 用法:pwd(没有选项和参数)
    图例: Alt

2.4 mkdir(创建目录)

  • mkdir:可以创建新的目录(文件夹)
  • 用法:mkdir [-p] Linux路径
    -p:表示自动创建不存在的父目录,适用于创建连续多级的目录
    Linux路径:即要创建的文件夹的路径
  • 注意:普通用户下只有在自己的home目录下创建新目录的权限
    图例:Alt

2.5 touch(创建文件)

  • touch:可以创建新的文件
  • 用法:touch Linux路径
    Linux路径:要创建的文件的路径

2.6 cat/more(查看文件)

2.6.1 cat
  • cat:可以查看文件里面的内容
  • 用法:cat Linux路径
2.6.2 more
  • more:可以查看文件里面的内容
  • 用法:more Linux路径
  • 快捷键:
    • Space(空格键):下一页
    • b:上一页
    • \n(回车键):下一行
    • q:退出

区别:

  • cat是直接将内容全部显示出来
  • more支持翻页,如果文件内容过多,可以一页页的展示

2.7 cp(复制文件/文件夹)

  • cp:可以用于复制文件/文件夹
  • 用法:cp [-r] 参数1 参数2
    -r:用于复制文件夹,表示递归
    参数1:Linux路径,表示被复制的文件/文件夹
    参数2:Linux路径,表示要复制去的地方

2.8 mv(移动文件/文件夹)

  • mv:可以用于移动文件/文件夹
  • 用法:mv 参数1 参数2
    参数1:Linux路径,表示被移动的文件或文件夹
    参数2:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

2.9 rm(删除文件/文件夹)

  • rm:可以用于删除文件/文件夹

  • 用法:rm [-r -f] 参数1 参数2 …… 参数n
    -r:删除文件夹
    -f:强制删除(不会弹出提示确认信息)

    • 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
    • 所以一般普通用户用不到-f选项

    参数1 参数2 …… 参数n:表示要删除的文件/文件夹路径,按照空格隔开

  • 支持通配符*:用来做模糊匹配
    *:通配符,即匹配任意内容(包含空)

    • test* 表示匹配任何以test开头的内容
    • *test 表示匹配任何以test结尾的内容
    • *test*表示匹配任何含有test的内容

图例:Alt

2.10 which(查找命令的程序文件)

  • which:查看所使用的一系列命令的程序文件存放在哪里
  • 用法:which 要查找的命令(cd,cp,pwd……)

2.11 find(查找文件)

  • find:可以搜索指定的文件
  • 用法:
    ①按文件名查找:find 起始路径 -name "被查找文件名"[文件名支持通配符]
    ②按文件大小查找:find 起始路径 -size +/- n[kMG]
    • +,-:表示大于和小于
    • n:表示大小数字
    • kMG:表示单位大小,k(小写字母)表示kb,M表示MB,G表示GB

注意:
find命令存在权限问题,普通用户使用find命令时可能受到权限限制,无法搜索到部分目录或文件。

2.12 grep(过滤文件行)

  • grep:从文件中通过关键字过滤文件行
  • 用法:grep [-n] "关键字" 文件路径
    -n:表示在结果中显示匹配的行的行号
    "关键字":表示要过滤的关键词,带有空格或其他特殊符号,建议使用" "将关键词包围起来
    文件路径:表示过滤内容的文件路径,可作为内容输入端口

2.13 wc(数量统计)

  • wc:可以统计文件的行数、单词数量等
  • 用法:wc [-c -m -l -w] 文件路径
    -c:统计bytes数量
    -m:统计字符数量
    -l:统计行数
    -w:统计单词数量
    没有输入选项:默认输出行数单词数字节数
    文件路径:可以作为内容输入的端口

2.14 | (管道符)

  • |:将管道符左边命令的结果,作为右边命令的输入
  • 用法:可以和grepwc……结合使用。

注意:
|可以多次嵌套使用。
下图例子:cat hello.txt | grep "lusy" | grep love
先通过cat hello.txt | grep "lusy"筛选出
lusy love you
lusy qq lus
wwsa lusy
再进行| grep love筛选出
lusy love

图例:Alt

2.15 echo(输出内容)

  • echo:输出指定的内容[类似于C中的printf语句]
  • 用法:echo "输出的内容" [带有空格或其他特殊符号,建议使用" "将关键词包围起来]

2.16 ` (反引号)

  • 用法:被`包围的内容将会被当成命令执行,可以和echo搭配使用

2.17 >和>>(重定项符)

  • >/>>:修改文件内容
  • 用法:
    • >:将左侧命令的结果,覆盖写到符号右侧指定的文件中
    • >>:将左侧命令的结果,追加写入符号右侧指定的文件中

2.18 tail(查看文件尾部)

  • tail:可以查看文件尾部内容,跟踪文件的最新更改
  • 用法:tail [-f -n] Linux路径
    -f:表示持续跟踪,会实时更新[要退出持续跟踪,可以按Ctrl + C]
    -n:n是具体数字,表示要查看尾部多少行,不填默认10

图例:Alt

2.19 vi/vim(编辑文件)

  • vi/vim:编辑器,可以编辑文件内容[vim是vi的pro版本]
  • 用法:vi/vim 文件路径
    • 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
    • 如果文件路径表示的文件存在,那么此命令会用于编辑已有文件
  • 注意:通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口是命令模式窗口,命令模式是vi/vim编辑器的入口和出口,如右图
    • 进入vi/vim编辑器会进入命令模式
    • 通过命令模式输入键盘指令i、a、o[任选一个即可],可以进入输入模式
    • 输入模式需要退回到命令模式,如何通过命令才可以进入底线命令模式
模式 命令 描述 模式 命令 描述
命令模式 i 在当前光标位置进入 输入模式 命令模式 yy 复制当前行
命令模式 a 在当前光标位置 之后 进入 输入模式 命令模式 nyy n是数字,复制当前行和下面的n行
命令模式 o 在当前光标下一行进入输入模式 命令模式 p 粘贴复制的内容
命令模式 I 在当前行的开头,进入输入模式 命令模式 u 撤销修改
命令模式 A 在当前行的结尾,进入输入模式 命令模式 ctrl + r 反向撤销修改
命令模式 O 在当前光标上一行进入输入模式 命令模式 gg 跳到首行
输入模式 esc 任何情况下输入esc都能回到命令模式 命令模式 G 跳到行尾
命令模式 键盘上、键盘k 向上移动光标 命令模式 dd 删除光标所在行的内容
命令模式 键盘下、键盘j 向下移动光标 命令模式 ndd n是数字,表示删除当前光标向下n行
命令模式 键盘左、键盘h 向左移动光标 命令模式 dG 从当前行开始,向下全部删除
命令模式 键盘右、键盘1 向后移动光标 命令模式 dgg 从当前行开始,向上全部删除
命令模式 0 移动光标到当前行的开头 命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 $ 移动光标到当前行的结尾 命令模式 de 从当前光标开始,删除到本行的开头
命令模式 pageup(PgUp) 向上翻页 底线命令模式 :wq 保存并退出
命令模式 pangdown(PgDn) 向下翻页 底线命令模式 :q! 强制退出
命令模式 / 进入搜索模式 底线命令模式 :w 仅保存
命令模式 n 向下继续搜索 底线命令模式 :set nu 显示行号
命令模式 N 向上继续搜索 底线命令模式 :set paste 设置粘贴模式

3 root用户

3.1 root用户和普通用户

  • root用户(超级管理员):拥有最大的系统操作权限[而普通用户在许多地方的权限是受限的]
  • 普通用户:一般在其home目录内是不受限的,而一旦出了home目录,大多数地方普通用户仅有只读和执行权限,无修改权限

3.2 su和exit(切换用户)

3.2.1 su
  • su:用于账户的切换
  • 用法:su [-] [用户名]
    -:表示是否在切换用户后加载环境变量,建议带上
    用户名:表示要切换的用户,如果没有填写,默认切换到root用户
3.2.2 exit
  • exit:退回上一个用户
  • 用法:切换用户后,可以通过exit命令返回上一个用户,也可以使用快捷键Ctrl + d

注意:

  • 使用普通用户,切换到其他用户需要输入密码,如切换到root用户(输入的密码要与切换到的用户的密码对应)
  • 使用root用户切换到其他用户,无需密码,可以直接切换

3.3 sudo(获得权限)

  • sudo:可以为普通用户的命令授权,临时以root身份执行
  • 用法:sudo 其它命令

注意:

  • 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
  • 但并不是所有的用户都有权利使用sudo,我们需要在此之前为普通用户配置sudo认证
  • 配置sudo认证:
    • 切换root用户
    • 执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
    • 在文件的最后添加相关指令[如下]
    • 通过wq保存
参数 含义
username 表示将授权信息添加到指定用户的权限列表中
otheruser 指定其他用户的身份。
%groupname 指定要授权的用户组。
ALL 表示将授权信息添加到所有用户或者组的权限列表中
(ALL) 表示可以以任何用户的身份执行命令。
NOPASSWD 表示授权用户在执行该命令时无需输入密码
PASSWD 表示授权用户在执行该命令时需要输入密码
/path/ 表示授权用户可以执行的命令路径,必须使用完整的命令路径
/file 表示授权用户可以执行的文件路径,必须使用完整的文件路径
! 表示阻止用户执行某些命令
# 表示注释符号,后面的内容将被视为注释,不起实际作用
Defaults 表示设置sudo的默认配置信息,包括日志路径、运行超时时间等
  1. 用户授权

    username  ALL=(ALL) [NOPASSWD:] command
    • username:指定要授权的用户名。
    • ALL:表示可以在任何主机上执行命令。
    • (ALL):表示可以以任何用户的身份执行命令。
    • NOPASSWD:表示无需输入密码。

    例如,允许用户 john 在任何主机上以任何用户的身份执行 /bin/ls 命令,并且无需输入密码:

    john ALL=(ALL) NOPASSWD: /bin/ls
  2. 用户组授权

    %groupname  ALL=(ALL) [NOPASSWD:] command
    • %groupname:指定要授权的用户组。
    • 其他参数的含义同上。

    例如,允许用户组 admins 在任何主机上以任何用户的身份执行 /bin/ls 命令,并且无需输入密码:

    %admins ALL=(ALL) NOPASSWD: /bin/ls
  3. 指定可执行文件路径

    username  ALL=(ALL) [NOPASSWD:] /path/to/command

    这将限制用户只能执行指定路径下的命令。

  4. 禁止某些命令

    username  ALL=(ALL) !/path/to/command

    这将阻止用户执行指定的命令。

  5. 授权指定用户以其他用户的身份执行命令

    username  ALL=(otheruser) [NOPASSWD:] /path/to/command

    允许用户以 otheruser 用户的身份执行命令。

  6. 别名的使用

    你也可以定义别名来使配置文件更加清晰,例如:

    User_Alias  ADMINS = user1, user2
    Cmnd_Alias  SYSTEM_CMDS = /bin/ls, /bin/cat
    
    ADMINS  ALL=(ALL) SYSTEM_CMDS

    这样,ADMINS 别名包含了 user1user2 用户,SYSTEM_CMDS 别名包含了 /bin/ls/bin/cat 命令,然后 ADMINS 组可以执行 SYSTEM_CMDS 中的命令。

注意:

  • 在编辑 sudoers 文件时,一定要使用 visudo 命令,这样可以在保存文件时检查语法错误,以免导致系统无法启动。

  • /etc/sudoers 文件中配置了 username ALL=(ALL) [NOPASSWD:] command 这样的规则时,这意味着当用户 username 尝试执行 command 时,无论命令是否需要超级用户权限,只有在命令前加上 sudo 才会生效。

  • 另一方面,如果配置了阻止用户执行某些命令的规则,比如 username ALL=(ALL) !/path/to/command,即使用户尝试执行该命令时没有使用 sudo,系统也会阻止命令的执行。

所以,在配置了 sudoers 文件后:

  • 如果某个用户有权限执行某个命令,并且该命令不需要特权,那么用户可以在执行时不加 sudo
  • 如果某个用户有权限执行某个命令,但是该命令需要特权,那么用户必须在执行时加上 sudo
  • 如果某个用户被明确阻止执行某个命令,那么无论是否使用 sudo,该命令都不会被执行。

3.4 用户组管理

对一个用户组进行创建和删除操作,都需要root用户的权限[下图是用户与用户组中间的关系图]

3.4.1 创建用户组
  • 命令:groupadd 用户组名
3.4.2 删除用户组
  • 命令:groupdel 用户组名

3.5 用户管理

3.5.1 创建用户
  • 命令:useradd 用户名 [-g 用户组名 -d Linux路径]
    -g:指定用户的组,不指定-g,会创建一个同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
    -d:指定用户home路径,不指定,home目录默认在:/home/用户名
3.5.2 删除用户
  • 命令:userdel [-r] 用户名
    -r:删除用户的home路径,不是用-r,删除用户时,home目录会被保留
3.5.3 查看用户所属组
  • 命令:id [用户名]
    [用户名]:被查看的用户,如果不提供则查看自身
3.5.4 修改用户所属组
  • 命令:usermod -aG 用户组 用户名
    将指定用户加入指定用户组

注意:
原有的所属组也会保留,如要将用户从所属组删除,可以通过下面的命令

sudo gpasswd -d 用户名 用户组名

3.6 查看用户/用户组

  • 命令:getent passwd
    用于查看当前系统中有哪些用户
    共有7份信息,分别是:
    用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
  • 命令:getent group
    用于查看当前系统中有哪些用户组
    共有3份信息,分别是:
    组名称:组认证(显示为x):组ID

3.7 认知权限信息

可以通过ls -l或者ll命令,以列表的形式查看内容,并显示权限细节

  • 序号1:表示文件/文件夹的权限控制信息
  • 序号2:表示文件/文件夹所属用户
  • 序号3:表示文件/文件夹所属用户组

序号1的权限细节总共分为10个槽位
第一个槽位表示所属类型:d表示文件夹,-表示文件,l表示软连接
后9个槽位分为3组,每组3个槽位,这三组依次是:所属用户权限,所属用户组权限,其他用户权限
每一组的三个槽位中,每个槽位依次是:r可读[查看文件夹内容],w可写[创建,删除,改名],x可执行[可更改工作目录到此文件夹],-没有这个功能的权限
举例:
drwxr-xr-x

  • 这是一个文件夹,首字母d表示
  • 所属用户的权限是:rwx
  • 所属用户组的权限是:r-x,表示有r无w有x
  • 其他用户的权限是:r-x

3.8 chmod(修改权限)

  • chmod:修改文件、文件夹的权限信息[注意:只有文件、文件夹的所属用户或root用户可以修改]
  • 用法:chomd [-R] 权限 文件/文件夹
    -R:对文件夹内的全部内容应用同样的操作
    权限u=___,g=___,o=___
    其中u表示user所属用户权限,g表示group组权限,o表示other其他用户权限。可以根据自己的需要修改相应权限

举例:
chmod u=rwx,g=rx,o=x hello.txt
将hello.txt这个文件修改为所属用户可读可写可执行,所属用户组可读可执行,其他用户只能执行,没有读写权限。

快捷写法:
chmod u=rwx,g=rx,o=x hello.txt可以改写成chomd 751 hello.txt
在书写权限的可读、可写、可执行时,可以把r记为4,w记为2,x记为1。
所以rwx可以记为7,rx可以记为5,x可以记为1

3.9 chown(修改所属用户/用户组)

  • chown:修改文件、文件夹的所属用户和用户组[普通用户无法修改所属为其他用户或组,所以此命令只适用于root用户]
  • 用法:chown [-R] [用户][:][用户组] 文件或文件夹
    -R:对文件夹内的全部内容应用同样的操作
    用户:修改所属用户
    用户组:修改所属用户组
    ::用于分隔用户和用户组[只有填写了用户组,才需要加上冒号,如果只是修改所属用户,不需要添加]

4 快捷键

命令 含义
ctrl+c 强制停止程序,退出命令输入
ctrl+d 退出或登出(不能用于vi/vim)
history 查看历史命令
history |grep ch 在历史记录中过滤带有ch命令[ch可换成自己想要过滤的关键词]
!+命令的前缀 自动匹配上一次匹配的前缀命令
ctrl+r 输入内容去匹配历史命令
ctrl+a 调到命令开头
ctrl+e 跳到命令结尾
ctrl+键盘左键 向左跳一个单词
ctrl+键盘右键 向右跳一个单词
ctrl+l或者clear 清空终端内容(清屏)

5 基础操作

5.1 yum(软件安装)

  • yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
  • 用法:yum [-y] [install | remove | search] 软件名称
    -y:自动确认,无需动手确认安装或卸载过程
    install:安装
    remove:卸载
    search:搜索

注意:

  • yum命令需要root权限
  • yum命令需要联网

5.2 systemctl(管理软件)

  • systemctl:启动、停止、开机自启能够被syatemctl管理的软件,一般也称之为服务
  • 用法:systemctl start | stop | status | enable | disable 服务名
    start:启动
    stop:关闭
    status:查看状态
    enable:开启开机自启
    disable:关闭开机自启

常见的服务

  • NetworkManager:主网络服务
  • network:副网络服务
  • firewalld:防火墙服务
  • sshd:ssh服务(FinalShell远程登录Linux使用的就是这个服务)

5.3 ln(软链接)

  • ln:在系统中创建软链接,可以将文件、文件夹链接到其它位置[类似于Windows中的"快捷方式"]
  • 用法:ln -s 参数1 参数2
    -s:创建软链接
    参数1:被链接的文件或文件夹
    参数2:要链接去的目的地

删除软链接
要删除 Linux 中的软链接,可以使用rm命令,其语法为:

rm 软链接文件名

图例

[注意:如果软链接出现爆红现象,那可能是被链接的文件或文件夹并不存在]

5.4 网络请求和下载

5.4.1 ping(检查服务器是否可联通)
  • ping:检查指定的网络服务器是否是可联通状态
  • 用法:ping [-c num] ip或主机名
    -c num:检查的num次,如果不使用-c,将无限次持续检查[可用Ctrl + c退出]
    ip或主机名:被检查的服务器的IP地址或主机名地址
5.4.2 wget(文件下载)[要先下载过wget插件,若之前没有下载,可用yum命令下载]
  • wget:是一个非交互式的文件下载器,可以在命令行内下载网络文件
  • 用法:wget [-b] url
    -b:后台下载,会将日志写入到当前工作目录的wget-log文件
    url:下载链接

在Linux中,yum 和 wget 是两个不同的工具,用途也不同:

  • yum
    yum 是一个包管理器,通常用于在基于 RPM 的发行版(如 CentOS、Fedora、Red Hat Enterprise Linux 等)上安装、更新和删除软件包。
    它可以自动解决软件包之间的依赖关系,并下载并安装所有必需的软件包。
    yum 通常用于管理系统上的软件包,包括安装新软件包、更新已安装的软件包、删除不再需要的软件包等。
  • wget
    wget 是一个命令行工具,用于从网络上下载文件。它支持下载 HTTP、HTTPS 和 FTP 等协议下的文件。
    wget 可以下载单个文件,也可以通过递归下载整个网站的内容。
    它是一个简单而强大的工具,通常用于从命令行下载文件,比如下载软件包、下载网站内容、下载备份等。
    简而言之,yum 是一个软件包管理器,用于管理系统上的软件包,而 wget 则是一个下载工具,用于从网络上下载文件。它们在功能和用途上有很大的区别,但在某些情况下可能会一起使用,比如使用 wget 下载软件包文件,然后使用 yum 安装这些软件包。
5.4.3 curl(网络请求)
  • curl:可以发送http网络请求,可以用于:下载文件,获取信息等
  • 用法:curl [-O] url
    -O:用于下载文件,当url是下载链接时,可以用此选项进行保存文件
    url:要发起请求的网络地址

图例:

5.5 端口

Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:

  • 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用[如SSH服务的22端口,HTTPS服务的443端口],非特殊需要,不要占用这个范围的端口
  • 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序/服务
  • 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。[如发起访问时,发起方的临时端口]
5.5.1 nmap(查看暴露端口)[插件,需要yum命令下载]
  • nmap:可以查看指定IP的对外暴露端口
  • 用法:nmap 被查看的ip地址
5.5.2 netstat(查看端口占用)[插件,yum -y install net-tools]
  • netstat:查看指定端口的占用情况
  • 用法:netstat -anp [ | grep 端口号]
    | grep 端口号:用来筛选端口
    图例:

5.6 进程管理

程序运行在操作系统中,是被操作系统所管理的。
为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程
并会为每一个进程都分配一个独有的:进程ID(进程号)

5.6.1 ps(查看进程)
  • ps:查看Linux系统中的进程信息
  • 用法:ps [-e -f]
    -e:显示出全部的进程
    -f:以完全格式化的形式展开信息
    一般来说,固定用法是:ps -ef列出全部进程的全部信息,并配合| grep 关键词使用。
  • UID:进程所属的用户ID
  • PID:进程的进程号ID
  • PPID:进程的父ID(启用此进程的其它进程)
  • C:此进程的CPU占用率(百分比)
  • STIME:进程的启动时间
  • TTY:启动此进程的终端序号,如显示?,表示非终端启动
  • TIME:进程占用CPU的时间(累计使用CPU的时间)
  • CMD:该进程对应的名字或启动路径或启动命令。
5.6.2 kill(关闭进程)
  • kill:关闭指定进程
  • 用法:kill [-9] 进程ID
    -9:表示强制关闭进程

5.7 主机状态监控

5.7.1 top(查看任务管理器)
  • top:查看CPU、内存使用情况,类似windows的任务管理器
  • 用法:top
    默认每5秒刷新一次,可以按qCtrl + c退出

  • 第一行: top:命令名称,20:41:40:当前系统时间,up 1:29:启动了1小时29分钟,2 users:2个用户登录,load average:0.26,0.39,0.40:表示1,5,15分钟的平均负载
  • 第二行:Tasks174 total:一共有174个进程,4 running:4个进程在运行,170 sleeping:170个进程睡眠,0 stopped:0个停止进程,0 zombie:-个僵尸进程
  • 第三行:%Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待CPU占用率
  • 第四、五行:Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
    KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用

  • PID:进程id
  • USER:进程所属用户
  • PR:进程优先级,越小越高
  • NI:负值表示高优先级,正表示低优先级
  • VIRT:进程使用虚拟内存,单位KB
  • RES:进程使用物理内存,单位KB
  • SHR:进程使用共享内存,单位KB
  • S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,l空闲状态)
  • %CPU:进程占用CPU率
  • %MEM:进程占用内存率
  • TIME+:进程使用CPU时间总计,单位10毫秒
  • COMMAND:进程的命令或名称或程序文件路径

以下是top命令的常用选项及其功能:

选项 功能
-p 只显示某个进程的信息
-d 设置刷新时间,默认是5秒
-c 显示产生进程的完整命令,而不是进程名
-n 指定刷新次数,例如top -n 3刷新输出3次后退出
-b 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,例如top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置(idle)或无用(zombie)的进程
-u 查找特定用户启动的进程

以下是top交互式模式(非-b选项启动)中常用的按键及其功能:

按键 功能
h 显示帮助画面
c 显示产生进程的完整命令,等同于-c参数。再次按下c键,变为默认显示。
f 选择需要展示的项目
M 根据驻留内存大小(RES)排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
E 切换顶部内存显示单位
e 切换进程内存显示单位
1 切换显示平均负载和启动时间信息
i 不显示闲置或无用的进程,等同于-i参数。再次按下,变为默认显示。
t 切换显示CPU状态信息
m 切换显示内存信息
5.7.2 df(磁盘信息监控)
  • df:可以查看磁盘的使用情况
  • 用法:df [-h]
    -h:以更加人性化的单位显示
5.7.3 iostat(CPU,磁盘信息监控)
  • iostat:查看CPU、磁盘的相关信息
  • 用法:iostat [-x] [num1] [num2]
    -x: 显示更多信息
    [常用:rKB/s:每秒发送到设备的读取请求数,wKB/s:每秒发送到设备的写入请求数, %utill:磁盘利用率]
    num1: 刷新间隔
    num2: 刷新次数
5.7.4 sar(网络状态监控)[sar命令非常复杂,这里仅简单用于统计网络]
  • sar:查看网络的相关统计
  • 用法:sar -n DEV num1 num2
    -n 查看网络
    DEV 查看网络接口
    num1 刷新间隔
    num2 查看次数
  • [常用信息:IFACE:本地网卡接口的名称,rxKB/s:每秒接收的数据包大小,txKB/s:每秒发送的数据包大小]

5.8环境变量

5.8.1 env(查看环境变量)
  • env:查看当前系统中记录的环境变量
  • 用法:env
    PATH(环境变量):
  • PATH:记录了系统执行任何命令的搜索路径
    [当在终端输入命令的时候,他会先从PATH中找这条命令所对应的程序,找不到就从当前路径下找]
5.8.2 $(取"变量"的值)
  • $:用于取"变量"的值
  • 用法:echo $环境变量名

举例:

如果要在环境变量后面追加上打印的信息,环境变量要用花括号包围起来

5.8.3 export(设置环境变量)
  • export:可以自行设置环境变量
  • 用法:
    • 临时生效:
      export 变量名=变量值

    • 永久生效:
      export 变量名=变量值

      • 针对当前用户生效,配置在当前用户的 ~/bashrc文件中
      • 针对所有用户生效,配置在系统的 /etc/profile文件中

      并通过语法:source 配置文件(~/bashrc或者/etc/profile),进行立即生效,或者重新启动系统

5.8.4 自定义环境变量PATH
  • 创建一个可以执行的文件[自定义想要添加的文件]
  • vim /etc/profile[编写这个文件]
  • 在最后面加上 export PATH=$PATH:自己要添加的搜索路径
  • source 配置文件(/etc/profile),进行立即生效,或者重新启动系统

5.9 上传/下载

可以通过FinalShell的下方窗体进行文件的传输,
也可以通过rz,sz命令进行文件的传输[插件,yum -y install lrzsz]

5.9.1 rz(上传)
  • rz:进行上传
  • 用法:rz[会弹出可视窗口]
5.9.2 sz(下载)
  • sz:进行下载
  • 用法:sz 要下载的文件
    [文件会自动下载到桌面的:fsdownload文件夹中]

5.10 压缩/解压

  • Linux和Mac系统常用的2种压缩方式
    • .tar:称为tarball,归档文件,简单的将文件组装成一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
    • .gz:也称为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内可以极大的减少压缩后的体积
5.10.1 tar(压缩/解压)
  • tar:可以针对上述的两种格式进行压缩和解压操作
  • 用法:tar [-c -x -v -f -z -C] 参数1 参数2 …… 参数N
    -c:创建归档文件,用于压缩模式
    -x:解压模式
    -v:显示压缩,解压过程,用于查看进度
    -f:指定要创建的文件名或要解压的文件名,-f必须处于选项位最后一个(后面必须紧跟要创建的文件名或要解压的文件名)
    -z:gzip模式,不使用-z则是普通的tarball格式(如果要用的话,一般放在选项位第一位)
    -C:选择解压的目的地,用于解压模式。如果没有使用-C,默认解压到当前目录(建议单独使用,和解压所需的其它参数分开)

tar的常用组合:

  • tar -cvf 压缩的文件名 要压缩的文件
    • eg: tar -cvf test.tar 1.txt 2.txt 3.txt
      将1.txt 2.txt 3.txt压缩到test.tar文件内
  • tar -zcvf 压缩的文件名 要压缩的文件
    • eg: tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
      将1.txt 2.txt 3.txt压缩到test.tar.gz文件内,使用gzip模式
  • tar -xvf 解压的文件名
  • tar -xvf 解压的文件名 -C Linux路径
  • tar -zxvf 解压的文件名 -C Linux路径
5.10.2 zip/unzip(压缩/解压)
  • zip:压缩为zip压缩包
  • 用法:zip [-r] 参数1 参数2 …… 参数N
    -r:被压缩的包含文件夹时,需要使用
    参数:包含创建的压缩文件名 + 要压缩的文件
  • unzip:解压zip文件
  • 用法:zip [-d] 参数1 参数2 …… 参数N
    -d:指定要解压去的位置,同tar-C文件

注意:
以上的解压操作如果指定的解压文件名存在,原来文件中的内容会直接被替换(覆盖),要注意是否文件名已经存在或文件中的内容是否重要

补充命令 - scp

  • scp:是cp命令的升级版,即:ssh cp,通过SSH协议完成文件的复制。
    其主要的功能就是:在不同的Linux服务器之间,通过SSH协议互相传输文件。
    只要知晓服务器的账户和密码(或密钥),即可通过SCP互传文件。
    语法:
  • 用法:scp [-r] 参数1 参数2
    -r:选项用于复制文件夹使用,如果复制文件夹,必须使用-r
    参数1:本机路径 或 远程目标路径
    参数2:远程目标路径 或 本机路径
scp -r /export/server/jdk root@node2:/export/server/
将本机上的jdk文件夹, 以root的身份复制到node2的/export/server/内
同SSH登陆一样,账户名可以省略(使用本机当前的同名账户登陆)

scp -r node2:/export/server/jdk /export/server/
将远程node2的jdk文件夹,复制到本机的/export/server/内
 
# scp命令的高级用法
cd /export/server
scp -r jdk node2:`pwd`/    # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下
scp -r jdk node2:$PWD      # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下

文章作者: Lu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lu !
  目录
>