查看原文
其他

131 python|第四部分:Linux操作系统

huanhuanerxing 缓缓而行 2022-09-06

点击关注「缓缓而行」,让我们一起探索python学习之路~

前言:本篇文章进行Linux操作系统的梳理,目录如下:


01 Linux操作系统认知

    1.1 操作系统

    1.2‍‍‍‍ Linux操作系统介绍

    1.3 文件系统


‍‍‍‍02 Linux常用命令‍‍‍‍

    2.1 终端与命令行

    2.2 Linux常用命令

‍‍‍‍


 ‍03 Linux服务器环境

    3.1 vi编译器

    3.2 添加用户

    3.3 软件安装

    3.4 ssh服务

    3.5 终端启动python服务


引 言

作为程序员不会linux,就像数学系的人没学数分,物理系四大力学没学全,化学没学物化一样,会让人感觉你是一个假程序员。

呵呵哒

我们今天就来认识一下Linux操作系统~


01 Linux操作系统认知

       

1.1 操作系统

  

01.定义

操作系统(Operating System,简称OS)可以理解为一个大型的应用,直接运行在计算机的硬件上,用来管理计算机的硬件,为其他应用软件提供了一个平台,让应用软件可以借助这个平台更方便使用计算机的硬件。

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

图片来自网络

02.操作系统分类

  1. 桌面系统Windows,MacOS为主,图形界面良好,运行在个人电脑上,比如台式机、笔记本。

  2. 服务器系统Linux(市场占有率约80%),Unix(MacOS内核为Unix)为主,安全、稳定,费用低占用量大,公司运行大型后端程序时需要用到服务器。

  3. 嵌入式系统Linux(比如鸿蒙)为主,主要用于小型智能设备,比如智能手机,机器人等。


在Windows、Linux和Unix三大操作系统中,Linux是唯一一个开源的操作系统。python开发属于后端开发,主要运行在服务器上,而且Linux的占有率比较高,所以学习Linux操作系统是有必要的。

1.2 操作系统介绍


01.Linux起源

"Linux之父"林纳斯·托瓦兹(Linus Torvalds)1969年出生在芬兰,1991年就读于赫尔辛基大学期间刚刚开始对Unix产生浓厚兴趣,尝试着在Minix(Unix的变种)上做一些开发工作,Linux的诞生显得充满了偶然。
林纳斯
林纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形。当时,他年仅21岁。
Linux操作系统标志
在自由软件之父理查德·斯托曼(Richard Stallman)某些精神的感召下,林纳斯以Linux的名字把这款类Unix的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权,允许用户销售、拷贝并且改动程序,但你必须将同样的自由传递下去,而且必须免费公开你修改后的代码。
短短几年间,在Linux身边已经聚集了成千上万的狂热分子,大家不计得失的为Linux增补、修改,并随之将开源运动的自由主义精神传扬下去。(百度)

02.Linux系统特点

  1. 开源免费

  2. 支持多种硬件平台

  3. 支持多用户

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


03.Linux应用领域

  1. Linux 服务器



    服务器

  2. 桌面应用

  3. 嵌入式系统


04.Linux系统构成

  1. 内核:Linux操作系统的核心代码,与硬件进行交互。

  2. 文件系统:通常指管理磁盘数据的系统,可以把数据以目录或者文件的形式存储,每个文件系统都有特定的格式和功能。

  3. 命令解释器:用户通过解释器和操作系统交互,解释器接收用户的命令,然后调用操作系统功能。

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



Linux系统构成(图源网络)

05.Linux发行版本

严格来讲,Linux只是一个操作系统中的内核,内核建立了计算机软件与硬件之间通讯的平台,提供如文件管理、虚拟内存、设备I/O等系统服务。一些厂家或组织会将Linux 内核与GNU软件(系统软件和工具)整合起来,提供一些安装界面和系统设定与管理工具,就构成了一个发行套件,市面上比较知名的有Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
各大linux发行版本(图源网络)

1.3 文件系统


01.文件系统结构

和windows文件系统分盘符不同,linux文件系统中没有盘符,将根(/)作为整个文件系统的唯一起点。linux的普通文件指的是文本、压缩包、音频视频等;目录和windows中的文件夹是一个意思。以下为linux文件系统的树形结构:
图源:SunnyZhang的IT世界


Linux的系统目录功能
目录
功能
/bin目录
包含了引导启动或普通用户所需的命令,都是二进制文件的可执行程序,是比较重要的系统文件。(bin是binary二进制的简称)
/sbin目录
类似/bin,存储二进制文件,必要时才允许普通用户使用。
/etc目录
存放系统配置文件,如用户信息文件,系统初始化文件等。
/root目录
超级用户的目录
/lib目录
存放根文件系统程序运行所需的共享文件,包含了可以被许多程序共享的代码,使执行文件变得更小,节省空间。
/dev目录
设备驱动程序,用户通过这些文件访问外部设备。
/usr文件系统
所有程序都安装在这里,本地安装的都放在/usr/local下,占很多内存,好处是升级系统时无须重新安装全部程序。
/var文件系统
包含系统一般运行时要改变的数据,通常这些数据所在的目录大小是要经常变化和扩充的。
/home
普通用户的默认目录,该目录下用户拥有一个以用户名命名的文件夹。

02.绝对路径&相对路径

路径
定义
特点
绝对路径文件在文件系统中以根目录为起始点的准确位置描述。
以‘/’作为路径描述的开头
相对路径相对于用户当前位置为起始点,对一个文件位置的逐层描述。
. 表示当前目录,.. 表示上一级目录,../..表示上一级的上一级目录
绝对位置实例:当前位置在根下,想要进入到man文件夹/usr/local/man





相对位置实例:
1.当前位置在var文件夹下,想要进入到lib文件夹../usr/lib
注:向上一层找不写名字,向下层找写名字


2.当前位置在usr文件夹下,想要进入到bin文件夹

./local/bin  或者 local/bin



02 Linux常用命令



2.1 终端与命令行


01.命令使用场景

  1. 完成linux服务器操作维护功能,一般由运维工程师进行远程操作,没有图形界面,需要通过命令完成。

  2. 后端工程师写的代码运行在服务器上,掌握命令有助于将来对项目的部署和控制。


02.终端与命令行

1.认识终端

框起来的部分叫做命令提示行,即Linux命令或者shell命令
2.终端快捷键
1.打开终端:ctrl alt t 另打开一个终端,位置在根目录

ctrl shift n    另打开一个终端,位置相同

ctrl shift t  新建终端标签页,位置相同


2.关闭终端:ctrl d 或者命令行输入exit
3.终端字体大小调整:
ctrl shift + 放大ctrl - 缩小

2.2 Linux常用命令



01.命令格式

1.命令格式
command [-options] [parameter]command:命令名称,一般是英文单词或单词缩写[-options] :命令选项(可省略),辅助命令进行细化[parameter]:传给命令的参数,可以为0或者多个
2.常用快捷键
清屏:ctrl l
调取历史命令:上下箭头自动补全:Tab

02.帮助命令

1. man command
实例:man pwd 查看pwd的意思



03.基础操作命令

1. ls 查看当前文件夹内容

ls 后也可以跟相对路径或者绝对路径,查看指定文件夹内容


ls -l    查看文件的详细内容



ls -a 隐藏文件


在终端中显示隐藏文件


写命令时,如果有选项,也有参数,顺序是 命令 选项 参数


2.cd[目录名] 切换文件夹


3.touch[文件名]   如果文件不存在,创建文件


4.rm[文件名]  彻底删除指定文件(夹)


5.mkdir[目录名] 创建目录


6.cp  复制一个文件  ;mv 移动/剪切一个文件


复制文件夹需要加-r;移动文件夹不需要加



还可以复制/移动其他文件(夹)到当前位置


另存为/重命名


7.通配符
作用:对一类文件名称的书写进行简化,使用户不必一一输入文件名。

星号 *  :匹配任意长度的字符串
问号?:匹配一个长度的字符串
方括号[...]:匹配指定的一个字符方括号[-]:匹配指定的一个字符范围
*实例:

实例:


[...]实例:


[-]实例:


2.3 文件操作



cat[文件名] 查看文件内容、创建文件、文件合并、追加文件内容等。
head[文件名] 显示头部内容tail[文件名] 显示尾部内容


grep[搜索文本][文件名] 搜索文本文件内容



find[目录]-name[文件名] 在一个目录及其子目录下查找文件



wc[文件名] 查看文件行数、单词数等信息


管道:可以把一系列命令连接起来,第一个命令的输出作为第二个命令 的输入,依次类推。举例如下,除此之外可以根据需求搭配。



2.4 压缩解压



01.压缩目的&原理

整理文件,把多个文件汇总到一起;通过格式压缩把大文件变小(原理是将原有的文件进行重新编码,压缩率高的压缩软件会把文件变得更小,同时压缩耗时更长)。

02.命令

zip /unzip : 将文件压缩为zip格式,或者把zip格式的文件解压

  zip    test.zip   filelist 

  unzip  test.zip

  unzip  -d  /home/huanhuan  test.zip


tar:对gz或者bz2文件进行压缩解压压缩:-c归档,-j压缩格式为bz2,-z压缩格式为gz格式,-f指定压缩包的名称   tar  -czf  file.tar.gz  file1 file2 解压:-x 解压,-v显示解压文件    tar  -xvf  file.tar.gz

 

:对文件夹进行压缩解压不需要加-r


2.5 权限管理


sudo:放在一个命令前,表示以管理员权限执行
sudo实例:


chmod:修改文件权限注:打开终端第一次使用管理员权限sudo时,需要输入密码。chmod在设置权限时,可以用字母,也可以用三个数字分别对应拥有者/组/其他用户的权限。
方法1:通过字母设置权限chmod augo+/-rwx 文件名/目录名
a: all       u:user       g:group          o:otherr:read     w:write      x:execute(执行)


方法2:通过数字设置权限


图源:张纪勇


chmod实例:


依次去掉文件的读写权限,文件会被移除相应的功能:

去掉写功能:

去掉读功能:



获取管理员权限后可进行操作:

不常用:

通过数字设置权限实例:


06.显示展示命令

echo :向终端打印内容
date:显示当前时间df:显示磁盘剩余空间  搭配-Th以兆或G来显示硬盘大小whoami:显示当前用户history[num]:显示历史命令记录(默认显示500条)



输出重定向:把原本向终端显示的内容写入到文件> 




>>



07.其他命令

shutdown:关机或重启

    shutdown -r now 立即重启

    shutdown now 立即关机

    shutdown +10 10分钟后关机

    shutdown -c  取消关机计划


ln:创建链接  搭配-s创建软链接,类似快捷方式,跨目录创建要使用绝对路径。


修改原文件:



tree:获得树形结构




03 Linux服务器环境



3.1 vi 编辑器


01.认识vi

vi是Linux操作系统中一个自带的编辑器没有图形界面,只能编译文本内容,没有字体段落等设置,通过命令强大的命令完成一系列的编写工作。
通过vi最初打开一个文件(如果文件已存在表示打开,文件不存在表示新建打开)的时候处于命令模式(输入命令),此时无法写入文件,按i可以切换到编辑模式(写入文件)。




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

编辑模式进行字编辑

末行模式执行保存、退出等操作,是vi的出口。 


02.命令

进入编辑模式命令:i:在当前位置前输入字符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(底行模式)
查找:
/str:查找 str/ 查找到指定内容之后,使用‘n’查找下一个出现的位置:set nu :显示行号:set nu !:取消行号显示

3.2 添加用户


01.概念

1.用户:不同的用户有自己独立的空间内容。
2.用户组:对用户管理更加方便,将不同用户添加到对应的组中,方便用户设置权限。
3.root用户:用于系统的维护和管理,对操作系统的所有资源具有访问权限,一般不会用到。



02.用户管理命令




groupadd 组名 :添加组

groupdel 组名:删除组

useradd -m 用户 -g 组:添加用户

passwd 用户名:设置用户密码

userdel -r 用户:删除用户

注:useradd中 -m表示添加用户时添加主目录,-g表示选择添加组,不写默认创建用户同名组。


创建用户实例:

1.创建用户并设置密码(sudo表示使用管理员权限)


2.为新用户添加sudo权限





3.设置命令解释器

linux 操作系统缺省的shell 是Bourne Again shell(简称Bash) ,它是 Bourne shell(sh)的扩展,在sh的基础上增加、增强了很多特性,如命令补全、命令编辑和命令历史表等功能.

luotaijia

新创建的用户和密码信息存储在/etc/passwd 文件中,什么时候需要设置命令解释器呢?当切换新用户后,如果终端命令行只有一个$提示,可以vi打开这个文件,将该用户的内容进行修改。目的是把sh解释器更改为bash解释器。


文件中存储了很多用户信息,并非所有用户都是用来登录的,很多用户属于虚拟用户,是专门针对某一程序所使用的。



4.新老用户切换



鼠标右键可以做出界面调整


5.删除用户 -r表示彻底删除,如果删除失败,说明使用用户后未注销,需要重启后再删除,或者执行以下操作:

删除用户命令:


无法删除可执行:

报错:userdel: user 用户名 is currently used by process 2314

执行:sudo kill -9 2314

3.3 软件安装



linux下安装的软件包格式为deb格式软件包,由于当时Linux系统中软件包存在复杂的依赖关系,所以通常使用网络安装
更新软件源:apt update(如果长时间没有进行更新,在安装软件前可以先进行本步骤)
安装软件:apt install 软件名卸载软件:apt remove --purge 软件名删除缓存的软件安装包:apt clean安装本地软件包:dpkg -i卸载软件:dpkg -P
:安装软件包通常需要管理员权限软件包下载位置:/var/cache/apt/archives
更新软件源:


安装软件(测试用例)


卸载软件(测试用例)


查看已安装软件包


删除缓存的软件包


网络安装apt可以直接处理依赖关系,而本地安装dpkg成功的前提是,把当前要安装的软件依赖的东西提前安装好。需要注意的是,在linux操作系统中,如果一个软件安装了一部分,转而去安装其他软件是不行的,要么把之前的卸载掉,要么安装完。


安装软件实例(以有道词典为例)

网页下载安装包(可以从“下载”处剪切到自己指定的文件夹)


安装本地软件包(不推荐)依赖关系太多,未安装成功


像上面这种情况,可以通过apt在线解决已有的依赖关系


安装成功


或者也可以直接卸载


3.4 ssh服务

4


01.概念

ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全ssh是通用的远程访问服务器的方法。

02.安装启动

安装ssh服务:sudo apt install openssh-server
查看ssh服务状态:ps -e | grep sshps -e指的是查看当前计算机下所有启动的服务进程


启动和关闭:sudo service ssh start/restart/stop

03.常用命令

1.登录远程主机:ssh 用户名@ip
注:ssh命令在linux和MacOs下是自带的,windows下需要安装一些辅助软件。用户名@ip被称为ssh地址。查看当前服务器地址:ifconfig


2.远程复制文件:注:-r表示传送文件夹
1)复制本地文件到远程: scp -r  本地文件地址 远程主机用户名@远程主机ip:远程主机文件存放地址(可以写成绝对路径/home/地址)在本地用户名终端窗口操作:


2)复制远程文件到当前目录下:scp -r 远程主机用户名@远程主机ip:远程主机文件地址  .在远程主机用户名终端窗口操作:


ssh的登录、拷贝和秘钥下次再进行梳理。


3.5 在终端启动python服务








  1.编写python程序,在第一行增加解释器声明
注:#!/usr/bin/python3要放在第一行,而且和后面的内容有一行空行2.修改文件的权限,使其有可执行权限


3.通过指定文件位置执行代码(也可以通过创建软链接的方式执行)


预告:下篇文章将进行数据管理的学习



                                                                     


参考资料


[1] 学Python一定要掌握Linux?https://blog.csdn.net/sinat_38682860/article/details/84036609[2] 操作系统https://baike.so.com/doc/5354536-5590000.html[3] #!/bin/sh与#!/bin/bash的区别http://blog.chinaunix.net/uid-27037833-id-3431985.html

花样早餐展位

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存