主页 > 开源代码  > 

python全栈-Linux基础

python全栈-Linux基础

python全栈-Linux基础

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

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

Linux安装/配置 网络配置

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

桥接NAT 最常用的主机模式 配置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 .baidu 得到对应的信息了

按下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,执行x4到6,是文件所有者的组权限,分别是:读r,写w,执行x7到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用户 -ugroup组 -gothers其他 -oa 是全部人 chmodu,g,o,a+增加,-去除,=设定r,w,x文件或目录 chmod g+w a.info

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

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

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

数字设置

三种权限:

r:4w:2x: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分钟的平均负载过去5分钟的平均负载过去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查询文件属于哪个RPMrpm -e --nodeps filename删除文件的同时,删除文件的依赖关系

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

其中:

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

CS架构的软件

底层也是rpm软件包

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

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

查看我们当前的yum服务器是什么yum repolist all因为yum是国外的,我们直接使用非常的慢,需要配一个镜像源镜像源: base:mirrors.aliyun extras:mirrors.sohu updates:mirrors.sohu.cim 打开配置文件: 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 /repo/Centos-7.repo 重新加载yun yum clean allyum 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

下载yum源库

wget http://dev.mysql /get/mysql57-community-release-el7-10.noarch.rpm

安装yum库

rpm -ivh mysql57-community-release-el7-10.noarch.rpm

安装数据库

yum -y install mysql-community-server

处理报错

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

因为是进行了gpg验证,所以卡住了

加参数,拒绝gpg验证

yum -y install mysql-community-server --nogpgcheck

出现complete,即安装成功

systemctl start mysqld 启动MySQL

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

登录MySQL,mysql -uroot -p

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

密码在:后面

需要对初始密码进行更改,才可以使用MySQL

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

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

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(强)

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

输入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

开始卸载:

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

默认防火墙工具

有两种界面管理方式:

CLI命令行界面GUI图形化界面

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

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

一共有9种区域概念:

public 默认状态,只允许ssh,dhcpv相关的服务trusted 全开,不限制任何服务 防火墙配置 firewall-cmd 命令行工具fire-config 图像工具/etc/firewalld/中的配置文件

常用服务:

systemctl start firewalld启动防火墙systemctl stop firewalld关闭防火墙systemctl status firewalld 查看防火墙状态 firewall-cmd --statesystemctl 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后面写上面这三种服务模式

标签:

python全栈-Linux基础由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python全栈-Linux基础