当前位置: 首页 > article >正文

python全栈-Linux基础

python全栈-Linux基础

文章目录

  • Linux安装/配置
    • 网络配置
    • 配置Linux远程登录
    • 配置虚拟机内部ip
    • 配置真机的ip
    • 安装XShell和Xftp
    • 目录结构
    • 用户和用户组
    • 用户管理
      • 添加用户useradd
      • 查看用户id
      • 修改用户usermod (选项)(参数)
      • 用户密码设置passed (选项)(参数)
      • 删除用户userdel [选项] 用户名
    • 用户组管理
      • 添加用户组groupadd (选项)(参数)
      • 修改用户组groupmod ()()
      • 删除用户组groupdel+用户组名
    • linux用户类别
      • 用户切换su
      • sudo super user do
      • visudo 配置用户权限
  • Linux文件属性
    • 显示文件属性 ls
    • 文件类型
    • 文件权限
  • 权限字与权限操作
    • chgrp改所属组
    • chmod改文件属性
      • 文字设置
      • 数字设置
    • chown改拥有者
  • Linux路径
  • 处理文件常用命令
  • Linux文件编辑工具vim/vi
    • 命令模式
    • 底线命令模式
  • 文件查看命令
  • 打包压缩命令与搜索命令
  • 搜索命令
  • 常用系统工作的命令
  • 管道符、重定向、环境变量
    • 输入输出重定向
    • 管道符----任意门
    • 通配符
    • 环境变量
  • 磁盘管理
  • Linux系统状态检测
    • ip addr (ifconfig)
    • uname -a
    • free
    • last
    • history
    • uptime
  • Linux安装软件
    • RPM软件包管理
    • YUM
    • 安装MySQL
    • 远程连接MySQL
    • 卸载MySQL
  • 进程管理
    • ps -aux
    • egrep/grep
    • top
    • htop
    • kill 进程id
    • netstat
  • 系统服务
    • service 服务名 状态
    • systemd 服务名 状态
    • systemctl 状态 服务名
    • systemd-analyze
    • hostnamectl 查看当前主机信息
    • timedatectl 查看当前时区
    • Chkconfig 服务 状态 (开机自启
  • 定时服务cron
    • crontab配置文件
  • 网络防火墙
    • firewalld
    • 防火墙配置
    • firewalld-cmd防火墙cmd管理工具
      • 1. 查看当前区域和规则
      • 2. 常用区域及其描述
      • 3. 设置区域
        • 更改接口区域
        • 添加或删除服务
        • 添加或删除端口
      • 4. 设置默认区域
      • 5. 永久生效
      • 6. 查看所有服务
      • 注意事项
    • SELinux

本项目使用的是centos版本

我们需要使用虚拟机VMWare来安装Linux。方便恢复系统操作

Linux安装/配置

网络配置

在linux里面有三种网络配置。

  1. 桥接
  2. NAT 最常用的
  3. 主机模式

配置Linux远程登录

  • 网关配置:192.168.66.1
  • 虚拟机IP:192.168.66.100
  • 主机的vmnet8:192.168.66.10

请添加图片描述

这个是虚拟机里面的路由器网关

请添加图片描述

配置完后点击确定。

然后在linux里面输入刚刚注册的账户和密码,就会出现:[你的账号@localhost ~ ]$ 这条语句

Linux里面一切都是文件,哪怕网卡这种配置信息都是文件

配置虚拟机内部ip

输入命令

  • vim /etc/sysconfig/network-scripts/ifcfg-ens33

vmware的版本不限,centos必须是7代的

请添加图片描述

出现这个界面才可以配置网络

需要按下a,才可以编辑内容,按下esc退出编辑

  • 需要修改第四行dhcp,意思是动态ip,改成静态ip,static。保证IP不变
  • 需要修改最后一行的no,改成yes,意思是让电脑开机后自动加载使用这个网卡
  • 然后按下回车,添加信息:IPADDR=192.168.66.100
  • 继续添加:NETMASK=255.255.255.0 这是子网掩码
  • 继续添加:GATEWAY=192.168.66.1 这是网关
  • 继续添加:DNS1=223.5.5.5
  • 继续添加:DNS2=223.6.6.6 有了这两个阿里云的域名,可以访问网络了
  • 按下esc退出编辑
  • 输入:wq,这三个字符,按下回车就保存退出了
  • 输入service network restart 意思是 执行-网络-重启.
  • 出现末尾ok字样,就配置完成了
  • 目前为止,虚拟机内部的ip都配置好了

配置真机的ip

我们把虚拟机的配好了,但是我们自己的电脑还无法跟虚拟机进行交互,即vmware8

配置vm8是为了主机和虚拟机通讯

去 控制面板------网络和Internet----网络连接

找vmware8,右键属性,找ipv4网络协议,

把IP地址改成192.168.66.10

默认网关是192.168.66.1

子网掩码255.255.255.0

dns是223.5.5.5,备用是223.6.6.6.

点击确定完成

这个和虚拟机里面的操作是一样的。到现在为止,虚拟机和真机已经配置好了

在虚拟机里面可以使用ping www.baidu.com得到对应的信息了

按下ctrl+c可以中断信息

安装XShell和Xftp

XShell是远程连接服务器的软件

xftp是传输文件的

  • 打开xshell
  • 新建会话,主机写虚拟机的ip192.168.66.100
  • 然后输入账号和密码
  • 就可以连接我们的虚拟机了

这样就可以使用远程登录的方式去操作虚拟机了

使用SSH密钥连接虚拟机

然后回到虚拟机,我们把虚拟机关闭,会弹出窗口,我们选择在后台挂起

还可以右键虚拟机,选择快照,类似存档,防止虚拟机崩溃,然后我们回档

目录结构

打开xshell,输入cd / ,回车

在输入ll ,回车

然后出现的信息,后侧的蓝色部分,都是目录

每一个目录都是文件,每一个文件都是目录

  • bin

    • bin ->usr/bin 里面存放的是二进制文件

    • [root@localhost /] 最后的/,意思是根目录

    • cd bin 可以进入bin目录 [root@localhost bin]

    • 使用ll,可以看到目录里面有什么。我们使用的命令都在bin目录里面

    • cd… 是退出目录

  • boot

    • 启动linux系统的核心文件
  • dev

    • 设备信息,保存的是外部设备信息
  • etc 重要

    • 最核心目录,存放系统管理配置文件,比如网卡的配置文件
  • home

    • 用户的主目录
  • lib

    • 动态连接共享库,共享文件
  • lib64

    • 和lib类似
  • media

    • 自动识别设备,比如U盘
  • mnt

    • 临时挂载文件
  • opt

    • 安装软件的目录,安装包啥的
  • proc

    • 虚拟文件系统
  • root

    • 系统管理员,超级管理员
  • run

    • 临时文件,存放系统信息
  • sbin

    • 超级用户使用的二进制文件
  • srv 别动

  • sys

    • 进程存储的文件系统
  • tmp

    • 存放临时文件
  • usr

    • 软件,程序,文件存放的位置
  • var

    • 需要扩展的数据,常用的修改文件

这里面常用的是etc,home,opt,media,root,usr,var

用户和用户组

因为linux是多用户多任务的操作系统

满足多用户同时使用,安全性也很高

因为用户很多,我们需要给用户划分族类,不同的用户组有不同的权限,保证系统的安全

  • 用户和组的关系
    • 一对一 一个用户一个组
    • 一对多 一个用户多个组
    • 多对一 多个用户一个组
    • 多对多 多个用户多个组

用户管理

  • 超级管理员是root,UID是身份证号,root的UID=0

  • 系统用户UID是1~999,无法使用,是linux系统使用的

  • 普通用户UID:1000~无穷,默认的

一般使用UID判断用户身份

添加用户useradd

  • 语法结构 useradd (选项)(参数)

  • 参数:

    • -d 指定用户家目录,默认在home
    • -e 账户到期时间,格式YYYY-MM-DD
    • -u 指定用户默认UID
    • -g 指定一个用户组,必须已经存在
    • -G 指定一个或多个用户组
    • -N 不创建与用户同名的用户组
    • -s 指定用户的默认shell解释器
  • 输入命令:useradd -u 8888 zhao

    • 创建一个用户,默认在home,UID是8888
  • useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe

    • 指定了用户的家目录是home下面的linux,并且指定shell格式,nologin不让登录系统,最后是用户的名字linuxprobe

查看用户id

  • id 用户名
  • 返回用户信息,uid,gid,group

修改用户usermod (选项)(参数)

  • 选项:
    • -c 备注:修改用户账号的备注文字
    • -d 登入目录:修改用户登入的目录
    • -e 有效期:修改有效期
    • -f 缓冲天数:密码过期后多少天关闭账号
    • -g 群组 修改用户所属群组
    • -G 群组 修改用户所属附加群组
    • -l 修改用户名称
    • -s 锁定用户密码,使密码无效
    • -u 修改用户id
    • -U 解除密码锁定
  • usermod -u 1111 zhao 把zhao用户的uid改成1111

用户密码设置passed (选项)(参数)

  • 参数:
    • -d 删除密码,管理员使用
    • -f 强制执行
    • -k 设置只有密码失效后,进行更新
    • -l 锁住密码
    • -s 列出密码信息,管理员使用
    • -u 解锁账号
  • 给用户上密码passwd+用户名
    • 然后输入密码,输入密码的时候,密码不可见
    • 一般是输入两次密码,第二次是确认
  • 案例
    • 一个用户,需要休假,我们需要进行限制登录,和休假结束之后的解除限制操作
    • passwd -l 用户名 限制
    • passwd -u 用户名 解除限制

删除用户userdel [选项] 用户名

  • 选项:
    • -f 强制删除用户
    • -r 同时删除用户及用户家目录
    • -rf 上面两个的组合效果
  • 原理就是执行命令的时候,去相应的文件把信息删除了
    • 相应的文件有:
      • /etc/passwd
      • /etc/shadow
      • /home/username

用户组管理

添加用户组groupadd (选项)(参数)

  • 参数:
    • -g 指定工作组id
    • -r 创建系统工作组,id需要小于500
    • -K 覆盖配置文件
    • -o 允许添加组id不唯一的工作组
  • 格式:groupadd -g 333 python
    • 创建一个组,id是333,组名是python

修改用户组groupmod ()()

  • 参数:

    • -g 修改id
    • -o 重复使用群组识别码id
    • -n 设置新组名
  • groupmod -g 345 -n python2 python

    • 修改python组,id改成345,组名改成python2

删除用户组groupdel+用户组名

linux用户类别

在linux里面有三种用户:超级用户,普通用户,伪用户

用户切换su

首先,要创建一个用户,才能从root切换过去

  • su+用户名
    • 输入这个命令就可以切换用户了
  • 超级用户切换普通用户,不用输入密码
  • 普通用户切换超级用户,需要输入密码

我们使用超级用户vim创建一个文件,随便输入内容,使用wq保存退出

切换到普通用户,我们依然可以查看文件,cat+文件名

但是普通用户没有权限修改rm/保存wq文件

rf 是强制保存,也不行

sudo super user do

字面意思:超级用户干的事情。本意:提高权限去搞事

是提高权限去搞事。

但是提高权限这个操作,还需要使用visudo去操作

  • 限制用户执行的命令
  • 记录用户执行的命令
  • 配置文件,提供集中的用户管理

visudo 配置用户权限

这个是为了给用户设置权限的操作,用户有了权限,才能使用权限

普通用户有了root的权限,才能执行root的操作

因为是设置权限,这个设置权限的操作只能在root用户下使用

小权限往大权限需要输入密码,大权限到小权限随便改

  • 直接输入visudo,回车即可
  • 使用:set nu 可以显示行数,行号。方便我们定位
  • :set nonu 就可以关闭显示行号了
  • 发现root ALL=(ALL) ALL 这条语句
    • 用户名 允许使用的主机=(谁的身份) 可以执行的命令列表
    • zhao ALL=(ALL) ALL 意思是用户zhao,有了root所有的权限
  • 然后普通用户就有了超级用户的权限了
    • 但是还不能执行超级用户的操作
    • 需要使用sudo + 操作 才可以
    • 意思就是,有了权限,还需要配合sudo使用权限
  • 无需密码权限
    • 使用 zhao ALL=NOPASSWD: ALL
    • 在刚刚的visudo里面,把权限改成这样,我们切换到普通用户的时候,就不用输入密码完成某些操作了
    • 就永久不需要密码了,也就是免密模式

Linux文件属性

在Linux系统里面一切都是文件,各种操作都是修改文件来实现

显示文件属性 ls

ls 全称 Linux Is (英文原型:list files)看文件列表

  • 参数:
    • -a 显示所有文件及目录,.开头的隐藏文件也能看到
    • -l 除文件名以外的所有信息都显示出来
      • 下面的用的少
      • -r 将文件逆序显示
      • -t 按照时间排序显示文件
      • -A 和a一样,但是不列出隐藏文件和父目录
      • -F 在可执行文件名后面加符号,目录加/,文件加*
      • -R 列出目录下所有文件
我们常用的ll,就是 ls -l 的缩写
波浪线开头的目录,是root的目录

/ 斜杠是根目录

  • 解读:drwxr-xr-x. 13 root root 4090 Jan27 2025 var
    • 文件类型与权限字 drwxr-xr-x.
    • 链接个数 13
    • 文件的所有者及它的用户组 root root
    • 文件大小 4090
    • 文件修改日期 Jan27 2025
    • 文件名 var

文件类型

有:

  • 普通文件,存放数据,程序等信息的文件,一般是文本和二进制文件

  • 目录文件,存放目录,文件名和子目录名

  • 链接文件,在不同文件系统之间建立链接关系实现对文件的访问

  • 设备文件,把io设备映射成设备文件

  • 管道文件,在进程中传递数据

lrwxrwxrwx. 1 root root 7 Mar 1 03:21 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Mar 1 03:24 boot

我们使用ll,查看所有文件信息

  • I开头,链接文件
  • -开头,是普通文件
  • d开头是目录文件
  • c设备文件
  • p管道文件

文件权限

lrwxrwxrwx. 1 root root 7 Mar 1 03:21 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Mar 1 03:24 boot

就是文件信息的第一个内容,一共有10个字符

  • 第0位,是文件类型
  • 1到3,是文件所有者的权限,分别是:读r,写w,执行x
  • 4到6,是文件所有者的组权限,分别是:读r,写w,执行x
  • 7到9,是其他用户的权限,也是,读r,写w,执行x

如果对应的权限是-杠,说明没有呗

权限字与权限操作

用于修改已经创建好的文件的权限

有三种改变权限的方式:

  • chgrp改变所属群组
  • chown改变文件所有者
  • chmod改变文件属性

chgrp改所属组

  • chgrp [-R] 所属组名 文件名
    • -R是更改下面的所有文件的所属组
  • chgrp -R web a.info
    • 把a文件,改到了web组底下了

chmod改文件属性

在Linux里面有两种属性设置方式,数字和符号

文件的基本权限有九个,分别是owner/group/others,也就是自己,组,其他

这三类人,各自有3个权限,读,写,执行

文字设置

三类人:

  • user用户 -u
  • group组 -g
  • others其他 -o
  • a 是全部人
chmodu,g,o,a+增加,-去除,=设定r,w,x文件或目录
  • chmod g+w a.info

组,增加,写,a.info文件

a.info所属的组,增加一个写的权限。

把加号改成减号,就是移除权限

数字设置

三种权限:

  • r:4
  • w:2
  • x:1

解读:drwxr-xr-x.

rwx r-x r-x

7 5 5 这是求和运算

  • chmod 755 a.info
  • 对a文件的三类用户进行权限设定

chown改拥有者

  • chown -R 用户名 文件

意思是更改文件,到用户名底下

  • chown -R 用户:用户组 文件

更改文件的时候,既改到用户底下,又改到用户组底下

Linux路径

以反斜杠开头的路径,比如一开始的网卡文件路径,就是绝对路径

  • 绝对路径,是从根开始的路径
  • 相对路径,是以点开头,或者点点开头的路径,比如/etc/text
    • 一个点开头,说明是目前所在的目录里面,比如./text
    • 两个点开头,说明是上一级目录里面,比如…/text
  • 输入pwd查看当前目录的绝对值路径
  • 输入cd -返回上一次目录的位置去,就是我们使用cd去切换路径的时候,可以使用cd-回到上一次的路径
  • 输入cd …/…/ 有几个俩点,就回几次上级目录

处理文件常用命令

  • ls 列出目录
  • pwd 显示文件所在位置
  • mkdir 创建新目录/文件夹
    • -p 递归创建文件夹,创建多级目录的时候,需要使用这个参数
    • mkdir -p a/b/c/d
      • 这个的本质是创建一个d目录,但是abc都没有,使用p可以强制创建
  • rmdir 删除空目录
    • -p 删除多级空目录
    • 比如a目录是多级目录,他下面有很多子目录,也是空目录,就可以递归删除了
  • cp 复制文件或目录
    • -r 递归复制,把目录下所有文件和目录都复制
    • 如果不是递归复制,只能复制一个
    • cd 文件 路径
      • 复制文件,到后面的路径去
  • rm 删除文件或目录
    • -f 忽略不存在的文件,强制删除,但用就是普通删除
    • -r 递归删除,一般是删除文件夹
    • -rf 强制删除文件夹
  • mv 移动文件或目录,重命名
    • mv 文件 路径/
      • 把文件移动到路径里面去
    • mv 文件名1 文件名2
      • 把文件1重命名为文件2

Linux文件编辑工具vim/vi

vim和vi的区别:vim自带语法高亮,vi什么都没有,都是黑白的

vim/vi的三种模式:

  • 命令模式
    • 我们使用vi/vim 加 文件名,进入文件
    • 我们对文件完成编辑之后,按下esc,进入了命令模式,再按下:wq退出文件
  • 输入模式
    • 我们进入文件的时候是命令模式,还需要按下i,a,o任意一个,进入输入模式
    • 输入结束之后,按下esc,退出输入模式,进入命令模式
  • 底线命令模式

命令模式

对文件进行快速编辑,但是不能输入

  • 命令:

    • dd 删除光标所在行
    • 5dd 删除光标所在及一下的5行
    • yy 复制光标行
    • 5yy 复制光标及一下五行
    • n 显示搜索命令定位的下一个字符串
    • N 显示搜索的上一个字符串
    • u 撤销上一步操作
    • p 将dd删除的行/yy复制的行,粘到光标后面
    • G 文本末尾
    • gg 文本开始
    • x 删除光标所在的字符
    • shift+^ 移动到行首
    • shift+$ 移动到行尾
    • /a 找到文件内,所有是a的字符,并高亮字符

    底线命令模式

在命令模式下,按:,进入该模式,按下回车,回到命令模式

主要是保存或者退出文件

  • 命令:
    • :w 保存
    • :q 退出
    • :q! 强制退出
    • :wq! 强制保存退出
    • :set nu 显示行号
    • :set nonu 不显示行号
    • :命令 执行命令
    • :整数 跳转到整数行
    • 😒/one/two 将光标所在行的第一个one文本替换成two文本
    • 😒/one/two/g 将光标所在行的所有one替换成two
    • :%s/one/two/g 将全文的one替换成two
    • ?字符串 搜索字符串
    • /字符串 搜索字符串
    • shift+zz 也是保存退出,必须按住shift,同时快速按下z两次,如果是按一次z,就是程序挂起

文件查看命令

  • cat+文件 显示文件内容
  • tac+文件 逆序显示文件内容
  • nl+文件 显示文件的时候显示行号
  • more+文件 一页一页的看文件
    • 按下空格 翻页
    • enter 翻一行
    • /字符串 搜索字符串
    • :f 显示文档名和目前行数
    • q 离开more模式,看完会自动退出
    • b或者CTRL+b 返回上一页
  • less+文件 和more+文件一样的效果
  • head -n 文件 后面的n是几,就看文件的前几行内容
  • tail -n 文件 看文件尾几行

打包压缩命令与搜索命令

  • tar [选项] [文件]
    • 选项:
      • -c 产生.tar打包文件
      • -v 显示详细信息
      • -f指定压缩名称
      • -z 打包的同时压缩Gzip
      • -x 解包tar
    • tar -zcvf test.tar.gz 文件1 文件2 文件3
      • 除了x,都写上
    • tar -zxvf test.tar.gz 压缩包
      • 这次是解压缩包
    • tar.gz是Linux系统里面的安装包,解压包啥的
  • gzip/gunzip压缩,格式.gz
    • gzip+文件 压缩文件,在原路径生成
    • gunzip+文件.gz 解压
  • 在解压的时候,最后写-C + 路径,可以指定解压文件的位置

搜索命令

  • grep [参数 查找内容 源文件]
    • 用于在文本中/文件里面执行关键词搜索
    • 参数:
      • -b 将可执行文件当成文本文件搜索
      • -c 只显示找到的行数
      • -i 忽略大小写
      • -n 显示行号
      • -v 反向选择,显示没有关键词的行
      • -E 允许使用正则表达式
  • find [查找路径] 寻找条件 操作
    • 按照指定条件查找文件,在整个Linux系统里面找
    • 参数:
      • -name 匹配名字
      • -perm 匹配权限
      • -user 匹配所有者
      • -group 匹配所有组
      • -mtime -n +n 匹配修改内容的时间
      • -atime -n +n 匹配访问文件的时间
      • -ctime -n +n 匹配修改文件权限的时间,n是几天
      • -nouser 匹配没有归属者的文件
    • find ./ -name *.info
      • 找,当前目录下,名称是以info结尾的文件

常用系统工作的命令

  • reboot 重启系统
    • 只能是超级管理员来执行
  • poweroff 关机
  • wget [参数] 下载地址
    • 从终端下载网络文件
    • 参数:
      • -b 后台下载
      • -P 下载到指定目录
      • -t 最大尝试下载次数
      • -c 断点续传
      • -p 下载页面内所有资源,包括图片、视频
      • -r 递归下载

管道符、重定向、环境变量

输入输出重定向

意思是,把多个单一的Linux命令组合到一起,协同工作

  • 输入重定向
命令 < 文件把文件作为命令进行输入
命令 << 分界符从标准输入中读入,遇到分界符停止
命令 < 文件 1 > 文件2把文件1当成命令去输入到命令行,并把得到的信息返回到文件2
  • 输出重定向
命令 > 文件清空文件,并把命令的返回值写入文件
命令 2> 文件清空文件,把命令的错误返回值写入文件
命令 >> 文件追加文件,把返回值写入文件
命令 2>> 文件追加文件,把错误返回值写入文件
命令 >> 文件 2>$1
命令 &>> 文件
追加文件,把标准输出和错误输出都写入文件

比如,之前的cat+文件,就是把文件的内容,打印到屏幕上

现在,cat+文件1 >> 文件2 ,就是查看文件1,但是我们看不到了,输出的信息在文件2里面

管道符----任意门

命令A | 命令B

把命令A的返回值,传给B,当成命令B的输入值,我们再拿B的返回值

  • 比如,我们去执行一个命令,他的返回值很多,我们之前学过文件的查看命令more
  • 所以,我们在刚刚的执行命令后面,加上或,再加上more,就可以使用more命令,翻页去查看返回值了

命令1 | 命令2 | 命令3 | 。。。

严格意义上讲,命令2的返回值还能进行操作,一直无限套娃下去

通配符

就是利用正则表达式,去寻找文件

  • ll /dev/test* 去找dev目录下,test开头的文件
  • ll /dev/test[0-9] 找test后面有数字的文件

反正就是正则表达式了,去匹配内容

环境变量

有两种:系统环境变量,用户环境变量

系统环境变量,是任意用户都可以使用的

用户环境变量,只有用户自己有,其他用户访问不了

  • 系统环境变量的位置:/etc/profile
  • 用户环境变量:~/.profile

我们进入了环境变量的文件后,直接在末尾的位置,写要添加的环境变量就可以了

  • 比如,添加一个Java的环境变量
  • export JAVA_HOME=/user/local/jdk1.8
    • 这个就是新增的环境变量
  • export PATH=$PATH:$JAVA_HOME/bin
    • 这是把原来的环境环境变量和新增的环境变量进行拼接

重启计算机,可以让环境变量生效

或者输入命令,sourse + 环境变量路径

磁盘管理

  • fdisk [必要参数] [选择参数]

    • 必要参数:
    • m 查看全部可用参数
    • n 添加新的分区
    • d 删除某个分区信息
    • l 列出可用分区类型
    • t 改变某个分区类型
    • p 查看分区信息
    • w 保存退出
    • q 不保存,退出
  • df [选项] [目录/文件名]

    • 显示磁盘的使用情况
    • 参数:
      • -a 显示所有文件系统信息
      • -m 以MB为单位显示容量
      • -k 以KB为单位
      • -h以KB,MB,GB显示
      • -T 显示分区的文件系统名称
      • -i 以含有inode的数量显示
    • 返回值解读:
      • 1k-blocks 表示文件系统总大小,以KB为单位
      • Used 表示用了多少
      • Available 剩多少
      • Use% 硬盘使用率
      • Mounted on 硬盘的目录位置
      • Filesystem 分区,设备名称
  • ln [选项] 目标

    • 参数:

      • -s 创建符号链接,没有此参数就是硬链接
      • -f 强制创建文件或目录的链接
      • -i 覆盖前先询问
      • -v 显示创建链接的过程
    • ln -s 文件1 文件2

      • 文件2相当于文件1的指针,我们对文件1的操作,比如查看啥的,对文件2也能实现
      • 我们如果把文件1删除,文件2就失效了,还要把文件2删除
  • 硬链接与软链接

    • 硬链接:在原来的文件上面在增加一个访问文件的入口,源文件被删除之后,因为还有一个入口存在,就不会消失
    • 软链接:是创建一个指针,执行原文件,源文件被删除,这个指针就失效了,要及时清除指针

Linux系统状态检测

ip addr (ifconfig)

获取网卡配置与网络状态

  • lo是回环地址
  • ens123 是我们配置的ip地址

uname -a

查看系统内核与系统版本等信息

  • -a是看系统内核
  • cat /etc/redhat-release 查看系统版本

free

  • free -h 显示当前系统内存的使用量信息
     ​						total        used        free      shared  buff/cache   available
     Mem:           972M        210M        643M        7.6M        118M        629M
     Swap:          2.0G          0B        2.0G

从左往右:内存总量、已用量、可用量、进程共享内存、磁盘缓冲内存、缓冲内存

last

用于查看所有系统的登录记录

history

显示系统执行过的命令

一般是显示最近的1000条命令,还可以修改文件/etc/profile里面的HISTSIZE的值,来进行命令条数的设置。

如果使用-c参数,就会清空命令记录。

HOSTNAME=/usr/bin/hostname 2>/dev/null
HISTSIZE=1000

uptime

显示计算机的负载情况

  • 00:35:42 up 6:14, 2 users, load average: 0.00, 0.01, 0.04

分别显示的是:当前系统时间,运行时间,用户数量,负载平均值

负载平均值是三个时间段:

  1. 过去1分钟的平均负载
  2. 过去5分钟的平均负载
  3. 过去15分钟的平均负载

负载值,不要长期超过1,生成环境下不要超过5

Linux安装软件

三种安装方式:源码,rpm,yum

RPM软件包管理

RPM命令:

rpm -ivh filename.rpm安装
rpm -Uvh filename.rpm升级
rpm -e filename.rpm卸载
rpm -qpi filename.rpm查看软件描述
rpm -qpl filename.rpm查看软件文件信息
rpm -qf filename查询文件属于哪个RPM
rpm -e --nodeps filename删除文件的同时,删除文件的依赖关系

依赖关系,就像之前的多级目录一样

其中:

  • -i 是install 安装
  • -v 显示安装画面
  • -h 显示安装进度
安装路径备注
/etc配置文件放置目录
/usr/bin可执行文件
/usr/lib动态链接库
/usr/share/doc软件使用手册和说明文件
/usr/share/manman page档案

YUM

CS架构的软件

底层也是rpm软件包

是一个在线的软件管理工具,必须联网

我们需要从这个软件商店下载软件

  1. 查看我们当前的yum服务器是什么yum repolist all
  2. 因为yum是国外的,我们直接使用非常的慢,需要配一个镜像源
  3. 镜像源:
    1. base:mirrors.aliyun.com
    2. extras:mirrors.sohu.com
    3. updates:mirrors.sohu.cim
  4. 打开配置文件: vi /etc/yum.repos.d/CentOS-Base.repo
  • 配置阿里云
    • 安装wget
      • yum install -y wget
    • 备份yum文件,防止出错,不能恢复
      • cd /etc/yum.repos.d/
      • mv CentOS-Base.repo CentOS-Base.repo.back
    • 下载阿里云的Centos-7.repo文件
      • wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    • 重新加载yun
      • yum clean all
      • yum makecache
    • 检测配置源是不是阿里云
      • cat /etc/yum.repos.d/CentOS-Base.repo
  • YUM使用手册
命令作用
yum repolist all列出所有仓库
yum list all列出所有仓库软件包
yum info filename查看软件包信息
yum install filename安装软件包
yum reinstall filename重新安装软件包
yum update filename升级软件包
yum remove filename移除软件包
yum clean all清理仓库缓存
yum check-update检查可更新安装包
yum grouplist查看系统中已经安装的软件包
yum groupinstall filename安装指定的软件包
yum groupremove filename移除指定软件包
yum groupinfo filename查询指定软件包组信息
  • 因为使用yum安装的时候,中途有一个确认的输入y,我们可以一开始就把y写在参数里面
    • yum install -y python

安装MySQL

  1. 下载yum源库

    1. wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
  2. 安装yum库

    1. rpm -ivh mysql57-community-release-el7-10.noarch.rpm
  3. 安装数据库

    1. yum -y install mysql-community-server
  4. 处理报错

    1. Failing package is: mysql-community-libs-5.7.44-1.el7.x86_64
      GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
  5. 因为是进行了gpg验证,所以卡住了

  6. 加参数,拒绝gpg验证

    1. yum -y install mysql-community-server --nogpgcheck
  7. 出现complete,即安装成功

  8. systemctl start mysqld 启动MySQL

  9. systemctl status mysqld 看看有没有启动成功

  10. 登录MySQL,mysql -uroot -p

  11. 找MySQL的密码,grep “password” /var/log/mysqld.log

    1. 密码在:后面
  12. 需要对初始密码进行更改,才可以使用MySQL

  13. 修改MySQL密码:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’;

    1. 一般来说,这个密码太简单了会不让你设置,我们为了学习需求可以自己改一下MySQL的密码强度

    2. mysql> set global validate_password_policy=0;
      Query OK, 0 rows affected (0.00 sec)
      mysql> set global validate_password_policy=Low; 密码强度
      Query OK, 0 rows affected (0.00 sec)
      mysql> SET GLOBAL validate_password_length=6; 密码长度
      Query OK, 0 rows affected (0.00 sec)
      注:执行完初始化命令后需要输入数据库root用户密码
      注:密码策略分四种
      1、OFF(关闭)2、LOW(低)3、MEDIUM(中)4、STRONG(强)

    3. 如果不更改密码的强度就有后面的要求:大小写字母,特殊字符,密码长度

  14. 输入exit退出MySQL,然后再次登录MySQL,验证密码

  • MySQL的命令
    • show databases; 查看库
    • create database test; 创建一个名为test的库

远程连接MySQL

这里是使用window系统下面的navicat连接Linux里面的MySQL

直接连是连不上的。

因为Linux里面的防火墙没关,使用命令firewall-cmd --state,发现是running

使用systemctl stop firewall.service关闭防火墙,再次运行上面的命令,就是not running

然后去虚拟机里面启动MySQL

在MySQL里面查看所有库,发现mysql库,这个库,是用户的使用权限

使用命令use mysql;进入了mysql库

使用命令select user ,host from user;然后弹出一个表,发现root用户的host是localhost,也就是本机,即虚拟机能使用MySQL

使用命令update user set host = “%” where user = “root”; 出现ok字样证明修改成功

最后刷新一下MySQL的配置,使用命令flush privileges;再次出现ok即可

直接退出就行,就能连上了

卸载MySQL

有安装就有卸载

首先在Linux里面查看有没有安装MySQL,使用命令rpm -qa |grep -i mysql

如果有很多MySQL相关的语句,就是安装了MySQL

开始卸载:

  1. 停止MySQL的服务
    1. systemctl stop mysqld.service
  2. 依次去把MySQL的文件删除
    1. 这条命令就是看mysql文件的rpm -qa |grep -i mysql
    2. 然后使用命令rpm -ev --nodeps mysql文件名
    3. 一直重复步骤1和2
  3. 删除掉mysql的文件之后,还可能有残留
    1. 使用命令whereis mysql,可以看到有MySQL的空文件夹,也就是空目录
    2. 使用rm删除即可
  4. 最后再使用find / -name mysql,从整个Linux系统里面去找mysql
  5. 把出现的路径全部使用rm删除即可
  6. 最后,在etc里面的passwd文件里面,最后一行有一个mysql官方配置的用户和用户组
  7. 使用userdel删除用户,还有groupdel删除用户组
  8. 也可能没有创建用户组,就不用删了
  9. 现在彻彻底底删除了MySQL

进程管理

执行中的程序就是进程

ps -aux

参数:

-a 显示所有进程

-u 显示用户及其他信息

-x 没有控制终端的进程

  • USER 程序的执行者
  • PID 进程号
  • %CPU 占CPU
  • %MEM 占内存
  • VSZ 虚拟内存
  • RSS 固定内存
  • TTY 所在终端
  • STAT 运行状态
    • R 开头的是运行中
    • S开头的是中断中
    • T是停止
    • Z是进程停止,但存在
  • START 进程开始时间
  • TIME CPU运行时间
  • COMMAND 实际指令

因为是一次性显示很多进程,配合管道符,可以去找特定的进程

  • ps aux|egrep ‘(cron |syslog)’
  • 我们去找了有关cron和syslog的线程信息
  • ps aux|egrep mysql
  • 找MySQL进程

egrep/grep

一样的,egrep支持使用正则表达式去搜索

grep不支持正则表达式

top

查看系统状态,类似任务管理器

top - 21:14:09当前时间 up 11 min运行时间, 2 users用户数量, load average: 0.04, 0.04, 0.05内存负载
Tasks: 105 total进程数量, 1 running运行的进程数量, 104 sleeping休眠进程, 0 stopped, 0 zombie
%Cpu(s): 0.0 us用户使用, 0.0 sy系统使用, 0.0 ni优先态,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995432 total总内存, 446868 free剩余内存, 376156 used使用内存, 172408 buff/cache缓存
KiB Swap: 2097148 total磁盘, 2097148 free剩余, 0 used使用. 472216 avail Mem 缓存

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1426 root 20 0 161092 5648 4284 S 0.3 0.6 0:00.15 sshd
1 root 20 0 128172 6732 4164 S 0.0 0.7 0:01.30 systemd

按q退出

  • top -d 2
    • 可以设置刷新时间,每几秒刷新一次当前数据

ps是静态显示信息

top是动态显示

htop

新版的top命令

有部分可视化页面

可以使用鼠标点击

安装epel源

yum install epel-release -y

安装htop

yum install -y htop

输入htop验证

kill 进程id

我们用上面ps或者top拿到的进程id,对进程进行关闭

参数-9强制停止进程

netstat

监控网络信息进程

参数:

-a列出所有端口
-at所有TCP端口
-au所有UDP端口
-ax所有unix端口
-atnlp所有ip,TCP,程序名端口
-s所有端口统计信息
-st所有TCP统计信息
-su所有UDP统计信息
-r显示核心路由统计
-rn显示所有路由TCP统计

从后台启动进程,在命令结尾加&

系统服务

service 服务名 状态

状态:start stop restart reload重新加载 status查看状态

  • service network status查看网络状态

systemd 服务名 状态

和service差不多

service启动慢

systemctl 状态 服务名

和service一样都是有5个状态,但是使用命令颠倒了一下

是先写状态 再写服务

  • 如果service和systemd的命令是service func start
  • 那么systemctl同等命令就是systemctl start func.service
    • 注意服务的后缀

systemd-analyze

查看启动耗时

就像360提醒你本次开机时间打败多少人一样

  • systemd-analyze 启动耗时
  • systemd-analyze blame 每个服务的启动耗时
  • systemd-analyze critical-chain 瀑布状启动流
  • systemd-analyze critical-chain func.service 指定进程启动流

hostnamectl 查看当前主机信息

  • sudo hostnamectl set-hostname rehl7

设置主机名

timedatectl 查看当前时区

  • timedatectl list-timezones 显示所有可用时区
  • sudo timedatectl set-timezone china/shanghai 设置时区

Chkconfig 服务 状态 (开机自启

设置某个服务,来开机自动运行,自启动

原理就是把启动的程序放在目录/etc/rc.d/init.d文件夹里面

[root@localhost /]# cd /etc/rc.d/init.d
[root@localhost init.d]# ll
total 40
-rw-r–r–. 1 root root 18281 May 22 2020 functions
-rwxr-xr-x. 1 root root 4569 May 22 2020 netconsole
-rwxr-xr-x. 1 root root 7928 May 22 2020 network 开机自启动网卡
-rw-r–r–. 1 root root 1160 Dec 7 2023 README

参数:

  • –add 把服务加入开机自启动
  • –del 删除这个服务的自启动
  • –level 查看服务的运行级别
  • –list 查看所有运行服务
  • chkconfig 服务 on 开启服务
  • chkconfig 服务 off 关闭服务

定时服务cron

就是定时启动服务

crontab配置文件

输入命令:vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59) 分钟
# | .------------- hour (0 - 23) 小时
# | | .---------- day of month (1 - 31) 几号
# | | | .------- month (1 - 12) OR jan,feb,mar,apr … 几月
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 周几
# | | | | |
# * * * * * user-name command to be executed

  • 00 02 * * * ls 每天凌晨两点执行ls
  • 00 01 1 3 1,3,7 每周的周一、周三、周日,3月1号凌晨1点执行
  • 如果都是*号,那就是每分钟都执行一次

参数:

  • -e 编辑定时任务

  • -l 查看

  • -r 删除

  • -u 指定用户

示例:23 5 * * 1,3,5 /sbin/service sshd start

每周的周一,周三,周五的凌晨 5点23分,执行后面的命令

注意后面的命令,不能简单的使用service,要使用绝对路径的service

如果找不到这个文件在哪里,就使用whereis 文件名,就可以看到文件的绝对路径了

网络防火墙

firewalld

默认防火墙工具

有两种界面管理方式:

  1. CLI命令行界面
  2. GUI图形化界面

防火墙有一个区域的概念,就是在不同的网络环境有不同的防火墙严格程度

比如,在使用公用网络,防火墙该阻止哪些用户进来。

一共有9种区域概念:

  • public 默认状态,只允许ssh,dhcpv相关的服务
  • trusted 全开,不限制任何服务

防火墙配置

  • firewall-cmd 命令行工具
  • fire-config 图像工具
  • /etc/firewalld/中的配置文件

常用服务:

  • systemctl start firewalld启动防火墙
  • systemctl stop firewalld关闭防火墙
  • systemctl status firewalld 查看防火墙状态 firewall-cmd --state
  • systemctl enable firewalld 开机启用防火墙
  • systemctl disable firewalld 开机禁用防火墙

firewalld-cmd防火墙cmd管理工具

因为使用代码的效率比使用图形化界面高

直接搞命令行工具

防火墙的配置默认是关机就失效,为了让防火墙的配置一直有效可以加一个永久的参数–permanent

1. 查看当前区域和规则

首先,您可以查看当前的区域和设置:

# 查看所有区域
firewall-cmd --get-zones

# 查看活动区域
firewall-cmd --get-active-zones

# 查看特定区域的详细信息
firewall-cmd --zone=<zone-name> --list-all

2. 常用区域及其描述

以下是一些常用区域及其含义:

  • drop: 该区域会丢弃所有传入连接。
  • block: 该区域会拒绝所有传入连接,只有返回的连接会被允许。
  • public: 该区域用于外部网络或公共网络,允许接入的请求不足以被信任。默认
  • external: 该区域用于外部网络,适用于具有 IP 转发能力的接口。
  • dmz: 该区域用于 DMZ(隔离区),允许对某些服务的访问。
  • work: 该区域为工作环境,信任局部网络不太安全。
  • home: 该区域用于家庭网络,信任独立家用网络。
  • internal: 该区域用于内部网络,信任的网络。
  • trusted: 该区域信任所有流量。

3. 设置区域

更改接口区域
# 将接口(如 eth0)设置为指定区域
firewall-cmd --zone=<zone-name> --change-interface=<interface-name>
添加或删除服务
# 向指定区域添加服务(如 http)
firewall-cmd --zone=<zone-name> --add-service=<service-name>

# 从指定区域删除服务
firewall-cmd --zone=<zone-name> --remove-service=<service-name>

# 列出区域中的服务
firewall-cmd --zone=<zone-name> --list-services
添加或删除端口
# 向指定区域添加端口(如 8080/tcp)
firewall-cmd --zone=<zone-name> --add-port=8080/tcp

# 从指定区域删除端口
firewall-cmd --zone=<zone-name> --remove-port=8080/tcp

# 列出区域中的开放端口
firewall-cmd --zone=<zone-name> --list-ports

4. 设置默认区域

# 设置默认区域
firewall-cmd --set-default-zone=<zone-name>

5. 永久生效

要使更改永久生效,请使用 --permanent 选项。例如:

# 永久添加服务
firewall-cmd --zone=<zone-name> --add-service=<service-name> --permanent

# 永久添加端口
firewall-cmd --zone=<zone-name> --add-port=8080/tcp --permanent

# 重新加载防火墙设置
firewall-cmd --reload   可以永久生效

6. 查看所有服务

# 查看所有
firewall-cmd --list-all

注意事项

  • 使用 --permanent 选项后,您需要运行 firewall-cmd --reload 来应用更改。
  • 在进行防火墙配置时,请确保您不会意外阻止 SSH 连接,以免无法访问服务器。

SELinux

美国国家安全局专门开发的安全型Linux内核,用来保护隐私

有三种服务方式:

  • enforcing 强制启动安全策略模式,拦截不合法请求
  • permissive 服务越权访问,只警告,不禁止
  • disabled 就是关闭了

我们需要使用vim打开etc下面的selinux,修改里面的config文件

在参数SELINUX后面写上面这三种服务模式


http://www.kler.cn/a/571407.html

相关文章:

  • 【Linux】进程信号——信号保存和信号捕捉
  • 【大模型】什么是蒸馏版大模型
  • 【零基础到精通Java合集】第二十三集:G1收集器深度解析
  • 鸿蒙5.0实战案例:基于ArkUI的透明页面效果
  • BambuStudio学习笔记:GCode 类
  • 15款单色颗粒渐变扭曲抽象艺术背景图AI/PSD格式设计素材 Abstract Grainy Gradient Background
  • CubeMX创建STM32F407工程
  • DeepSeek未来发展趋势:开创智能时代的新风口
  • Ubuntu20.04双系统安装及软件安装(十三):录屏软件kazam
  • wpa_supplicant源码剖析-main.c解析
  • 【微知】如何通过mlxlink查看Mellanox网卡和光模块相关的信息?( mlxlink -d 01:00.0 -m)
  • 拥抱健康养生,开启活力生活
  • 智慧园区大数据云平台建设总体方案,平台方案架构-智慧园区大数据平台(320页原件Word)
  • Windows 11【1001问】查看Windows 11登录用户的18种方法
  • 无人机的飞行控制器技术详解
  • C++ OpenGL 帧缓冲(Framebuffer)理论与实现
  • Token设计指南:实现动态用户信息与权限管理
  • vue使用html实现的一个项目进度图
  • C语言的那点事第十二篇:动态内存分配、内存泄漏与野指针的深度剖析。
  • ==和===在不同场景下的具体区别是什么?