@TOC

目录

🏳️‍🌈开讲啦!!!!🏳️‍🌈苏州程序大白🏳️‍🌈

在这里插入图片描述

🌟博主介绍

::: hljs-center

个人主页:苏州凯捷智能科技有限公司
作者介绍:苏州凯捷智能科技有限公司创始人,主要目前与华为合作5G工业机器人领域开发,2D、3D视觉项目开发,政府项目投标开发。
有任何问题欢迎私信,看到会及时回复
微信公众号:苏州程序大白
想加入技术交流群的可以加我好友,群里会分享学习资料

:::

Linux 操作系统认知

操作系统(Operation System 简称 OS)

  • 定义:

操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。
在这里插入图片描述

  • 操作系统功能:

1、管理好硬件设备,为用户提供调用方法。

2、是计算机中最重要的系统环境。

3、管理各种其他的软件和程序的运行。

4、对系统中文件进行管理。

  • 操作系统分类:

1、桌面系统:Windows ,MacOS 为主,图形界面良好用户群体大。

2、服务器系统:Linux,Unix 为主,安全,稳定,费用低占有量大。windows 占有率比较低。

3、嵌入式系统:Linux 为主,主要用于小型智能设备,如智能手机,机器人等。

Linux 系统介绍

  • Linux 诞生:

1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,林纳斯经常要用他的终端仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁!林纳斯利用 C 做工具,编写了 Linux 内核,后来经过全世界的网友的帮助,最终成为优秀的操作系统。

在这里插入图片描述

  • Linux 系统特点:

1、Linux 是一款开源免费的操作系统。

2、支持多种硬件平台。

3、支持多用户。

4、具有非常强大的网络功能。

  • Linux 应用领域:

1、Linux 服务器:目前是服务器系统中最广泛一种。
在这里插入图片描述
2、桌面应用:新版本的 Linux 系统特别在桌面应用方面进行了改进,达到相当的水平。

3、嵌入式系统:由于 Linux 系统开放源代码,可以方便修改,在嵌入式设备领域有很广阔的市场。

  • Linux 系统构成:

1、内核:Linux 操作系统的核心代码,是 Linux 系统的心脏,提供了系统的核心功能,用来与硬件交互。Linux 内核官网

2、文件系统:通常指称管理磁盘数据的系统,可将数据以目录或文件的型式存储。每个文件系统都有自己的特殊格式与功能。

3、命令解释器:它使得用户能够与操作系统进行交互,负责接收用户命令,然后调用操作系统功能。

4、 应用软件:包含桌面系统和基础的软件操作工具等。

在这里插入图片描述

  • Linux 发行版本:

严格的来讲,Linux 只是一个系统内核,即计算机软件与硬件通讯之间的平台。一些组织或厂家将 Linux 内核与 GNU 软件(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,目前市面上较知名的发行版有:UbuntuRedHatCentOSDebianFedoraSuSEOpenSUSEArch LinuxSolusOS 等。

作为 Linux 发行版中的后起之秀,Ubuntu Linux 在短短几年时间里便迅速成长为从 Linux 初学者到资深专家都十分青睐的发行版。由于 Ubuntu Linux开放源代码的自由软件,用户可以登录 Ubuntu Linux 的官方网址免费下载该软件的安装包。Ubuntu 官网

在这里插入图片描述

文件系统

  • 定义:

<font color=#03a9f4 size=5 face= "楷体"> 文件系统是计算机操作系统的重要的组成部分,用于组织和管理计算机存储设备上的大量文件。 </font>​

  • 文件系统结构:

    ​ 熟悉的 windows 文件系统,分不同盘符。
    在这里插入图片描述
    ​ Linux 的文件组织中没有盘符。将根(/)作为整个文件系统的唯一起点,其他所有目录都从该点出发。
    Linux全面解析讲解
    ​ 犹如一颗倒置的树,所有存储设备作为这颗树的一个子目录。
    在这里插入图片描述

  • 普通文件和目录:

普通文件:包括文本,压缩包,音频视频等文件都是普通文件。

目录:即文件夹,在 Linux 系统下多称之为目录。
在这里插入图片描述

  • 系统目录功能(了解):

1、/bin 目录
/bin 目录包含了引导启动所需的命令或普通用户可能用的命令 (可能在引导启动后)。这些命令都是二进制文件的可执行程序 (bin 是 binary---- 二进制的简称),多是系统中重要的系统文件。

2、/sbin 目录
/sbin 目录类似 /bin,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。

3、/etc 目录
/etc 目录存放着各种系统配置文件,其中包括了用户信息文件 /etc/ passwd,系统初始化文件 /etc/rc 等。linux 正是因为这些文件才得以正常地运行。

4、/root 目录
/root 目录是超级用户的目录。

5、/lib 目录
/lib 目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

6、/dev 目录
/dev 目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问 /dev/mouse 来访问鼠标的输入,就像访问其他文件一样。

7、/usr 文件系统
/usr 是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。本地安装的程序和其他东西在 /usr/local 下,因为这样可以在升级新版系统或新发行版时无须重新安装全部程序。

8、/var 文件系统
/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。

9、/home
/home 普通用户的默认目录,在该目录下,每个用户拥有一个以用户名命名的文件夹。

  • 绝对路径和相对路径表达:

1、绝对路径:指文件在文件系统中以根目录为起始点的准确位置描述。例如 “/usr/bin/gnect” 就是绝对路径。最要的标志就是以 ‘/’ 作为路径描述的开头。

2、相对路径:指相对于用户当前位置为起始点,对一个文件位置的逐层描述。例如,用户处在 usr 目录中时,只需要 “games/gnect” 就可确定这个文件。在相对路径描述时。表示当前目录, 表示上一级目录。

Linux 常用命令

Linux 下有非常丰富的命令,可以用来完成大部分重要的 Linux 服务器操作维护功能,而且至今有些功能仍然通过命令操作比较方便。

实际工作中,大量服务器维护工作都是工程师通过远程控制来完成的,并没有图形界面,这时维护工作都需要通过命令来完成。

作为后端工程师,我们将来所写的代码都需要在服务器上运行,掌握基本的 Linux 操作命令有助于我们将来对项目的部署和控制工作。

  • 终端与命令行

终端 :使用命令对 Linux 系统进行操作的窗口。

命令行:书写 Linux 命令的提示行。

在这里插入图片描述
操作 功能
ctrl+alt +t 打开一个终端
shift+ctrl+n 打开一个终端
ctrl+d 关闭终端
命令行输入 exit 关闭终端
ctrl 和 + 号 字体放大
ctrl 和 - 号 字体缩小
ctrl + l 清空屏幕
上下箭头 调取历史命令
Tab 键 自动补全文件名,目录名等信息
  • 命令格式:

<font color=#03a9f4 size=5 face= "楷体"> 注:这里的 option 使用了复数形式 options,意思是可以有多个命令。例如:command -a -l 可以简化为 command -al </font>​

command [-options] [parameter]
说明:
command:命令名称,一般为英文单词或单词的缩写
[-options]:命令选项,辅助命令进行功能细化,也可以省略
parameter:传给命令的参数,可以是0个或多个
  • 通配符:
<font color=#03a9f4 size=5 face= "楷体"> 作用:对一类文件名称的书写进行简化,例如 file1.txtfile2.txtfile3.txt……,用户不必一一输入文件名,可以使用通配符完成。 </font>​
通配符 含义 实例
星号(*) 匹配任意长度的字符串 用 file_*.txt,匹配 file_wang.txt、file_Lee.txt、file_Liu.txt
问号(?) 匹配一个长度的字符 用 flie_?.txt,匹配 file_1.txt、file_2.txt、file_3.txt
方括号([…]) 匹配其中指定的一个字符 用 file_[otr].txt,匹配 file_o.txt、file_r.txt 和 file_t.txt
方括号([-]) 匹配指定的一个字符范围 用 file_[a-z].txt,匹配 file_a.txt、file_b.txt,直到 file_z.txt
  • 管道:

<font color=#03a9f4 size=5 face= "楷体"> 管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。 </font>​

ls | grep 'hello'
ls | wc -w
  • 帮助命令:

查阅 command 命令的使用手册,摁 q 退出。

man command
  • 基础操作命令:
序号 命令 作用 备注
1 ls 查看当前文件夹下的内容 -l 展示详细信息,-a 展示隐藏文件(Linux 下。开头的为隐藏文件)。
2 pwd 查看当前所在位置绝对路径
3 cd [目录名] 切换文件夹 参数为绝对路径或者相对路径,直接 cd 表示回到主目录,cd - 回到上一次工作目录 。
4 touch [文件名] 如果文件不存在,新建文件 可以同时跟多个参数表示创建多个文件。
5 mkdir [目录名] 创建目录
6 rm [文件名] 删除指定的文件名 删除表示直接删除,无法找回,如果删除目录需要加 -r 选项。
7 cp 复制一个文件 如果拷贝的是一个目录需要使用 -r ,同时这个命令有另存为的作用 。
8 mv 移动一个文件 即使移动目录页不需要选项,有重命名的作用。
  • 文件操作:
序号 命令 作用 备注
1 cat [文件名] 查看文件内容、创建文件、文件合并、追加文件内容等功能
2 head [文件名] 显示文件头部 选项 - n,n 表示一个数字,即可指定查看前 n 行或者后 n 行,不加选项默认查看 10 行。
3 tail [文件名] 显示文件尾部 选项 - n,类似 head。
4 grep [搜索文本] [文件名] 搜索文本文件内容 -n 用于显示行号,-i 忽略大小写。
5 find [目录] -name [文件名] 在一个目录及其子目录下查找文件 会从指定目录及其所有子目录中查询搜索文件。
6 wc [文件名] 查看文件行数,单词数等信息 -c 表示查看多少字符,-l 查看多少行,-w 查看多少单词。如果不加选项则显示这三项。
  • 压缩解压:
序号 命令 作用 备注
1 zip 将文件压缩为 zip 格式 用于常与 windows 交互的情况,-r 选项可以压缩目录 。
2 unzip 将 zip 格式文件解压 -d 可以选择解压位置。
3 tar 对 gz 或者 bz2 格式进行压缩解压 -cjf 用于压缩 bz2 格式文件,-czf 用于压缩 gz 格式文件,-xvf 用于解压文件,兼容了 gzip 和 bzip2 命令的功能。
  • 权限管理:
序号 命令 作用
1 sudo 放在一个命令前,表示使用管理员权限执行。在打开终端第一次使用 sudo 时需要输入密码。
2 chmod 修改文件权限

chmod 在设置权限时,可以字母,也可以使用三个数字分别对应拥有者、组和其他用户的权限。

<font color=#03a9f4 size=5 face= "楷体"> 注:linux 中虽然执行是 execution 但是一般使用 x 作为执行,而不是 e </font>​

<!-- 直接增删 [所有人|拥有者|组|其他] 的 [文件|目录的] [读|写|执行] 权限 -->
chmod  [augo][+/-][rwx] 文件名/目录名
who 用户类型 说明
a all 所用用户,相当于 ugo
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
# 直接修改 拥有者、组和其他 的 [文件|目录的] 权限
chmod  3个数字 文件名/目录名
例如:
777 ===> u=rwx,g=rwx,o=rwx
755 ===> u=rwx,g=rx,o=rx
644 ===> u=rw,g=r,o=r
在这里插入图片描述
意义 数字组合 总和
rwx 4 2 1 7
rw- 4 2 0 6
r-x 4 0 1 5
r-- 4 0 0 4
-wx 0 2 1 3
-w- 0 2 0 2
--x 0 0 1 1
- - - 0 0 0 0
  • 显示展示命令:
序号 命令 作用 备注
1 echo 向终端打印内容 -n 表示打印完成不换行。
2 date 显示当前时间
3 df 显示磁盘剩余空间 -h 选项以 Mb 为单位显示,-T 显示文件系统类型,其中 ext4 的为磁盘。
4 whoami 显示当前用户
5 history [num] 显示历史命令记录 默认显示 500 条历史记录,后面可以加具体数字表示显示多少条。
6 whereis 显示命令的位置 定位某个命令的二进制文件、源码和帮助页文件。whereis python3 返回的就是 /usr/bin/python3
输出重定向
> file 将 file 文件重定向为输出源,新建模式。
>> file 将 file 文件重定向为输出源,追加模式。
# 将执行结果,写到out.txt文件中,若有同名文件将被删除。
echo "hello world"   > out.txt
# 将ls   /usr的执行结果,追加到Lsoutput.txt文件已有内容后。
ls   /usr   >> output.txt
  • 其他命令:
序号 命令 作用 备注
1 shutdown 关机或者重启 shutdown -r now 立即重启,shutdown now 立即关机,shutdown +10 10 分钟后关机,shutdown -c 取消关机计划
2 ln 创建链接 ln -s hello.py hello 创建了 hello.py 的软链接
3 tree 获取目录树形结构

Linux 服务器环境

vi 编译器

  • 什么是 vi

    viLinux 操作系统中一个自带的编辑器。没有图形界面,只能编译文本内容,没有字体段落等设置,通过命令强大的命令完成一系列的编写工作。

在实际工作中,要对 服务器上的文件进行简单的修改,使用 vi 进行快速的编辑即可。

对一些配置文件的修改,需要一定的权限,这时 vi 编辑器是最佳选择。

vi 编辑器在系统管理、服务器管理编辑文件时,其功能不是图形界面的编辑器能比拟的。

  • 操作使用

打开和新建文件

$ vi  [文件名]

如果文件已经存在,会直接打开该文件
如果文件不存在,会新建一个文件
  • 工作模式:

1、命令模式:

打开文件首先进入命令模式,是使用 vi 的 入口。通过 命令 对文件进行常规的,在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,例如:定位、翻页、复制、粘贴、删除。

2、末行模式:
执行 保存、退出 等操作。要退出 vi 返回到控制台,需要在末行模式下输入命令。末行模式 是 vi 的 出口。

3、编辑模式:

正常的编辑文字
在这里插入图片描述

  • 进入编辑模式命令:
命令 英文 功能 常用
i insert 在当前字符前插入文本 常用
o 在当前行后面插入一空行 常用
  • 底行模式常用命令:
命令 功能
w 保存
q 退出,如果没有保存,不允许退出
q! 强行退出,不保存退出
wq 保存并退出
w! 强制保存
  • 命令模式常用命令

    • 行内移动:
命令 功能
w 向后移动一个单词
b 向前移动一个单词
0 行首
$ 行尾
    • 行数移动
命令 功能
gg 文件顶部
G 文件末尾
: 数字 移动到 数字 对应行数
  • 撤销和恢复撤销:
命令 功能
u 撤销上次命令
CTRL + r 恢复撤销的命令
  • 删除文本
命令 功能
x 删除光标所在字符,或者选中文字
cc 删除光标所在行并进入插入模式
  • 剪切、复制、粘贴
命令 功能
yy 复制一行,可以 nyy 复制多行
dd 剪切光标所在行,可以 ndd 剪切多行
p 粘贴
  • 替换
命令 功能 工作模式
r 替换当前字符 命令模式
R 替换当前行光标后的字符 替换模式
:%s/str/replace/g 替换 str 为 replace 底行模式

R 命令可以进入 替换模式,替换完成后,按下 ESC 可以回到命令模式

  • 查找
命令 功能
/str 查找 str
:set nu 显示行号

/ 查找到指定内容之后,使用 n 查找下一个出现的位置。

:set nu ! 可以取消行号显示。

在这里插入图片描述

添加用户

基本概念

  • 用户:Linux 操作系统可以有不同的用户,这是系统管理的重要一环,不同的用户有自己独立的空间内容。

  • 用户组:为了方便对用户管理,Linux 操作系统使用用户组的概念。将不同的用户添加到对应的组中,可以方便用户设置权限的设置。

  • root 用户:Linux 系统中的 root 用户通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限,一般工作中不会使用 root 用户进行系统操作,防止一些误操作带来系统损坏

用户管理命令

序号 命令 作用 备注
1 groupadd 组名 添加组
2 groupdel 组名 删除组
3 useradd -m 用户 -g 组 添加用户 -m 表示添加用户时添加主目录,-g 表示选择用户所在组,如果不写默认会创建一个与用户同名的组。
4 passwd 用户名 设置密码 设置之后才能切换新用户登录
5 userdel -r 用户 删除用户 一般都会带 -r,删除用户的主目录和邮件池。

<font color=#03a9f4 size=5 face= "楷体"> 注:设置密码后为新用户添加 sudo 权限,sudo 打开 /etc/sudoers 文件增加如下内容。然后 :w! 强制保存 :q 退出。 </font>
在这里插入图片描述
<font color=#03a9f4 size=5 face= "楷体"> 注:如果切换用户终端命令行只有一个 $ 提示,也没有任何颜色提示,则 vi 打开 /etc/passwd 文件,存储的是所有的用户和密码信息,将该用户对应的内容修改,设置 bash 命令解释器。 </font>
在这里插入图片描述
<font color=#03a9f4 size=5 face= "楷体"> 注:如果删除失败说明刚刚使用了该用户没有注销,需要重启再删除。或者执行下面命令。 </font>
在这里插入图片描述

软件安装

Linux 下安装的软件包是 deb 格式软件包。由于当时 Linux 系统中软件包存在复杂的依赖关系。因此,通常使用网络安装。安装软件包通常需要使用管理员权限。软件包下载位置:/var/cache/apt/archives

作用 命令
更新软件源 apt update
安装软件 apt install
卸载软件 apt remove --purge
删除缓存的软件安装包 apt clean
安装本地软件包 dpkg -i
卸载软件 dpkg -P
多线程软件安装 apt-fast
sudo apt install sl   # 安装
sudo apt remove --purge  sl  # 彻底卸载

ssh 服务

ssh 是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。在数据传输方面有很多应用。之前说到,实际工作中经常需要远程访问服务器,ssh 就是通用的远程访问服务器的方法。

安装启动
安装 ssh 服务 : sudo apt install openssh-server
查看 ssh 服务状态 : ps -e | grep ssh
启动和关闭 :sudo service ssh start/restart/stop

在这里插入图片描述

  • 常用命令:
序号 命令 作用
1 ssh 用户名 @ip 登录远程主机
2 scp 用户名 @ip: 文件名绝对路径 目标位置 远程复制文件
# 登录
ssh  levi@192.168.100.5 
# 退出
exit 

在这里插入图片描述

# 注意:`:` 后面的路径写绝对路径,类似端口操作
scp  demo.py levi@192.168.100.5:/home/tarena

# 把远程主目录下demo.py文件 复制到本地当前目录下的copy文件夹内
scp  levi@192.168.100.5:/home/tarena/demo.py  ./copy

# 加上 -r 选项可以传送文件夹
scp -r demo levi@192.168.100.5:/home/tarena/

ssh 秘钥

什么时候使用: 如果使用的客户端个人计算机是自己独有的计算机,经常通过 ssh 访问服务器,此时不想频繁输入密码,则可以使用秘钥处理。

  • 使用方法

1、在个人计算机中生产秘钥对 : ssh-keygen 执行以后会在主目录下生成.ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub

2、在服务器主机上创建文件(云服务器当中会自动为我们创建) touch ~/.ssauthorized_keys,将信任的计算机的 id_rsa.pub 文件内容追加到服 authorized_keys 文件的最后即可。
在这里插入图片描述

终端启动 Python 服务

在服务器中并没有 pycharm 这些集成编译工具,所有当我们最后将程序部署在服务器上执行时,往往需要通过终端运行 python 程序。

<font color=#03a9f4 size=5 face= "楷体"> 1、编写 python 程序在第一行增加解释器声明。 </font>
在这里插入图片描述
<font color=#03a9f4 size=5 face= "楷体"> 2、修改文件的权限,使其有可执行权限。 </font>
在这里插入图片描述
<font color=#03a9f4 size=5 face= "楷体"> 3、通过指定文件位置执行代码。 </font>
在这里插入图片描述