本博客使用的是Centos7版本

学前提醒

  1. 不要死记Linux命令,先敲一遍,以后在学习和工作中练习就足够了,需要的时候就查命令手册
  2. Centos在2024年已停止维护,这篇博客主要介绍Centos的基础命令(Linux发行版基础指令基本一样),不涉及其进阶操作。建议读者可以学一下ubuntu、Debian等其他常用的Linux发行版

初识Linux

  1. 什么是Linux?即服务器操作系统的一种。操作系统就是第一层软件,作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作。Linux是前后端开发人员、运维测试人员、大数据分析人员等必学的内容。

  2. Linux的组成:由Linux系统内核+系统级应用程序(简单理解成系统自带的软件,比如文件管理,图片查看等)组成,其他的软件都叫第三方应用程序。这其中最重要的就是内核。读者可以点开此链接Linux内核官网 下载其内核源码。

Linux系统组成示意图.png

Linux调度流程图.png

  1. Linux发行版:任何人都可以获得并修改内核,并且自行集成系统级程序,提供了内核+系统级程序的完整封装,称之为Linux发行版。常见的ubuntu和redhat等就是Linux的发行版。所以也不要纠结学哪一个,学会了一个,其他的都会触类旁通了

虚拟机

虚拟机就是借助虚拟化技术,我们可以在系统中,通过软件模拟计算机硬件,并给虚拟硬件安装真实的操作系统。

学习Linux可以选择使用虚拟软件,比如VMware WorkStation,或者是买一个云服务器。

Windows网络连接(网络适配器)查看方法win+R 输入ncpa.cpl 查看是否有VMnet1和VMnet8的网卡,有了虚拟机才能连上网。

扩展:WSL

就是Windows Subsystem for Linux,没错,Windows系统可以得到Linux系统环境,不过目前的主流还是用虚拟软件。

方法:(Windows 11)在开始中搜索-“启用或者关闭Windows功能”-“适用于Linux的Windows子系统 ”打勾,“虚拟机平台”打勾并重启,然后在应用商店里面搜索对应的Linux发行版下载即可。

Linux的安装、配置和远程连接

  1. 虚拟机软件安装:由于vmware被收购,对于个人用户完全免费,可以去官网上下载,参考教程一步步教你掌握VMware Workstation 17 Pro,成为虚拟化专家!-哔哩哔哩

001_Linux安装_01.png

  1. 查看主机的网络适配器是否正常配置:按win + r 输入ncpa.cpl回车 确保里面有VMnet1和VMnet8

001_Linux安装_02.png

  1. 在VMware中安装Centos系统

考虑到国内访问Centos安装包源比较困难,这里使用清华的镜像源网站,且本次使用的是Centos7.6版本,读者需要安装其他版本的都可以在清华大学镜像源网站下面找。Centos下载链接:清华大学开源软件镜像站

001_Linux安装_03.png

下载好之后打开VMWare软件,点击左上角“文件”-“新建虚拟机”

001_Linux安装_04.png

选择“典型(推荐)”

001_Linux安装_05.png

选择你下载的ISO文件的路径

001_Linux安装_06.png

设置用户名和密码

001_Linux安装_07.png

设置虚拟机的位置

001_Linux安装_08.png

设置虚拟机的内存

001_Linux安装_09.png

自定义硬件 建议内核和内存不要分配太多

001_Linux安装_10.png

001_Linux安装_11.png

001_Linux安装_12.png

后面就是自动安装了,大概需要10-20分钟左右。注意不要反复点击界面,否则可能会卡死需要重新安装

  1. 登录虚拟机

用你之前设置的用户登录虚拟机

001_Linux安装_13.png

出现“Getting Started”界面,直接退出即可。出现此界面说明你已经安装好Centos了\(^o^)/~ ,不过这可不是结束的开始,而是开始的结束

001_Linux安装_14.png

  1. 远程登录虚拟机

Linux上面有图形化界面(在界面中右键-“open terminal”,但是不推荐。在开发中使用命令行的效率比图形化界面更好.
但是VMware中的Linux命令行页面不方便,建议使用第三方软件远程连接到Linux上(生产环境中也是远程开发),推荐软件有Xshell和finalshell。我这里使用Xshell,finalshell同理

Xshell 下载官网 建议使用“家庭和学校用户的免费许可证”下的“免费授权界面”下载Xshell和XFTP(用于传输文件),我这里下载的是7版本

打开Xshell后点击右上角的“文件”-“新建”。

001_Linux安装_15.png

此界面重要的填写主机IP。在Centos界面中右键-“open terminal” ,命令行输入ifconfig 回车

图中方框部分就是此虚拟机的IP,

001_Linux安装_16.png

按照你自己查找的IP将其填写在主机(H)的框中即可。

001_Linux安装_17.png

会弹出如下的警告界面,点击“接收并保存”

001_Linux安装_18.png

选择你登录的用户名,建议使用一般用户而不是root用户。我这里演示用就用root用户了。出现如下图表示登录成功

001_Linux安装_19.png

001_Linux安装_20.png

但是:Linux虚拟机如果重启,有可能发生IP改变,如果IP改变需要在XShell中修改连接的IP地址。以下讲解如何固定IP地址不变。

Linux固定IP

可以在安装Centos的时候配置网络,参考链接如下day02-Docker - 飞书云文档

在VMware软件中左上角点击“编辑”-“虚拟网络编辑器”,再点击“更改设置”,点击vmnet8并点击NAT设置

001_Linux安装_21.png

按照子网设置网关IP,比如子网IP是192.188.190.0。那么网关IP就设置为192.188.190.xxx。其中xxx在0-255之间,这里建议就用2代替xxx,IP

记住以上红色方框中的内容

然后用Xshell远程登录(使用root用户登录),在命令行输入vim /etc/sysconfig/network-scripts/ifcfg-ens33

然后按i键后输入以下内容,根据自己的实际情况改。那个``IPADDR=“建议设置成你之前ifconfig查询的IP”`

Linux配置IP.png

再点击esc键,输入:wq 回车就保存并退出了

在命令行中输入并执行systemctl restart network 重启网卡,执行ifconfig即可看到ip地址固定为你设置的IP了。

扩展:用vscode远程登录Linux

如果涉及到Linux编程而又不想只用vim,可以考虑使用vscode

  1. 下载vscode和插件 Visual Studio Code - Code Editing. Redefined

然后按照图下载对应的插件

001_Linux安装_22.png

安装好之后点击左下角矩形中的按钮,开启远程登录

001_Linux安装_23.png

点击“连接到主机

001_Linux安装_24.png

这里点击“配置SSH主机

001_Linux安装_25.png

点击路径最后为\config

001_Linux安装_26.png

注意如果你是第一次使用vscode 大概率是空的 按照以下格式填写

1
2
3
Host 你的LinuxIP
HostName 你的LinuxIP
User 选择一个登录用户,比如root

示例

1
2
3
Host 200.200.200.200
HostName 200.200.200.200
User root

配置完后再次远程登录,点击你所设置的IP(见图001_Linux安装_25

这样就远程登录成功了(^-^)V。

如果你想要打开某一文件夹进行编程,按照图片先点击”打开文件夹“然后选择即可。

001_Linux安装_27.png

扩展:虚拟机快照

在学习阶段我们无法避免的可能损坏Linux操作系统。如果损坏的话,重新安装一个Linux操作系统就会十分麻烦。,而vmware支持给Linux制作快照,简单来说就是“存档”,万一损坏了可以“回档”。

留下快照:右键虚拟机-点击“快照”-点击”拍摄快照“

001_Linux安装_28.png

恢复快照:同样右键-快照-快照管理器,点击对应的快照并点击“转到”即可。

小提醒:建议在关机之后留下快照,开机情况下会比较卡


此LloydEduCentos仅作演示安装用,后续Linux学习使用的是hspEdu01的虚拟机,读者无需担心,不影响后续学习Linux

Linux基础

学习Linux需要掌握命令来操作系统,图形化页面很少使用。图形化界面易于理解,但是命令行效率更高。

那么在哪里敲命令行呢?VMware里面可以,但是不方便。建议使用Xshell或者是FinalShell软件,这里我用的是Xshell。

Linux目录结构

一切皆文件:指的是Linux会将一切对象映射成文件。Linux中最重要的就是目录,它不像Windows有CDE盘,只有一个根目录。在生产环境中是很少使用图形化界面的,基本只用控制台。对于其他目录要了解其英文单词和实际用途。

图片演示

002_Linux目录结构_01.png

  • /,根目录是最顶级的目录了,也就是说~/的子目录
  • Linux有且只有一个顶级目录:/
  • 路径描述的层次关系同样适用/来表示:比如/usr/bin/hello.py,第一个/根目录,其他的是层级关系

注意,Linux中所有的用户在登录的时候左侧显示的都是~ ,也就是自己的“根目录”,但其实是/ 的子目录,其本质是/home/用户名或者是/root

Linux基础命令

最重要的部分,学Linux就是学习使用命令与计算机交互

命令:就是Linux程序,以字符的方式与计算机交流。💡其本质上都是可执行的二进制文件

无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式
command \[-options] [parameter]

  • command:命令本身,比如touch\cat等
  • -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节,比如rm -rf 其中-r -f为选项
  • parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等. 语法中的[],表示可选的意思,比如touch file01.txt 后面的file01.txt就是命令的参数

示例:

1
ls -l /home/hello

ls是命令,-l是选项,/home/hello是参数,意思是以列表的形式,展示/home/hello 目录的内容。

目录切换命令

概念阐述:路径

相对路径与绝对路径

  • 相对路径,/开头的称之为相对路径:相对路径表示以当前目录作为起点,去描述路径,如test/a.txt,表示当前工作目录内的test文件夹内的a.txt文件

  • 绝对路径,/开头的称之为绝对路径:绝对路径从开始描述路径,比如/home/jerry/download/test.txt 指的就是jerry用户名下download文件内的test.txt文件。

特殊路径符

  • .,表示当前,比如./a.txt,表示当前文件夹内的a.txt文件
  • ..,表示上级目录,比如../表示上级目录,../../表示上级的上级目录
  • ~,表示用户的HOME目录,比如cd ~,即可切回用户HOME目录

ls命令

功能:列出文件夹信息

语法:ls [-l -h -a] [Linux路径]

  • Linux路径:被查看的文件夹的路径,可以是绝对路径也可以是相对路径。不提供参数表示查看当前工作目录
  • -l,以列表(list)形式查看
  • -h,必须配合-l使用(否则不展示文件大小),以更加人性化的方式显示文件大小
  • -a,表示all的意思,即显示所有文件,包括隐藏文件(在Linux中以.开头的,均是隐藏的)

用的最多的一般是lsls -lh

演示如下

002_目录切换命令_01.png

语法中的选项是可以组合使用的,比如学习的-和-l可以组合应用,比如ls -la

002_目录切换命令_02.png

绝对路径和相对路径作为参数,效果相同|这里演示-h不配合-l使用的效果

002_目录切换命令_03.png

cd命令

change directory

注意:Linux登录的时候会将当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容,不要错将~当成根目录。HOME目录是指每个操作用户在Linux系统的个人账户目录,普通用户的HOME目录默认路径在:/home/用户。而root用户的HOME目录,在:/root

功能:切换工作目录

语法:cd [linux路径]

参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录

pwd命令

print work directory

功能:展示当前所在的工作目录(绝对路径)

语法:pwd

002_目录切换命令_04.png

文件(夹)操作命令

mkdir命令

make directory

功能:创建文件夹

语法:mkdir [-p] 参数

  • 参数:被创建文件夹的路径
  • 选项:-p,可选,表示创建前置路径,比如你输入mkdir -p /usr/test/work 但是test文件夹没有创建,那么-p会帮助创建一个test的文件夹,然后再创建work文件夹
  • 此图第一个d表示这是一个文件夹,后面的与权限有关

003_文件操作命令_01.png

touch命令

功能:创建文件,注意要添加后缀

语法:touch 参数 参数:被创建的文件路径

cat命令

功能:查看文件内容

语法:cat 参数 参数:被查看的文件路径

003_文件操作命令_02.png

more命令

功能:查看文件,可以支持翻页查看

语法:more 参数 参数:被查看的文件路径

在查看过程中:按空格键翻页 q退出查看 读者可以试试more /etc/services etc(法语et cetera,表示以及其他内容)

cp命令

copy

功能:复制文件、文件夹

语法:cp [-r] 参数1 参数2

  • 参数1,被复制的
  • 参数2,要复制去的地方
  • 选项:-r,可选,本意为递归(recursion),Linux中能递归的就是文件夹了,复制文件夹使用

示例:cp a.txt test/,复制当前目录a.txt到test文件夹内

003_文件操作命令_03.png

mv命令

move

功能:移动文件、文件夹

语法:mv 参数1 参数2

  • 参数1:被移动的
  • 参数2:要移动去的地方,参数2如果不存在,则会进行改名

rm命令

remove

功能:删除文件、文件夹

语法:rm [-r -f] 参数1 ...参数N

  • 参数:支持多个,每一个表示被删除的,空格进行分隔
  • 选项:-r,删除文件夹使用
  • 选项:-f,强制删除(force),不会给出确认提示,一般root用户会用到,rm命令很危险,小心使用,最好留下快照

003_文件操作命令_04.png

通配符

符号*表示通配符,
即匹配任意内容(包含空),示例:

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

003_文件操作命令_05.png

查找命令

which命令

功能:查看命令的程序本体文件路径

语法:which 参数 参数:被查看的命令 比如which cd 返回的是/usr/bin/cd

find命令

功能:搜索文件

语法1按文件名搜索:find 路径 -name 参数

  • 路径,搜索的起始路径
  • 参数,搜索的关键字,同理支持通配符
  • 按文件大小查找命令:find 起始路径 -size +|-n[KMG] ±表示大于和小于,n表示数字,KMG表示大小单位。如find / -size -10k

004_文件查找命令_01.png

grep、wc和管道符

grep命令

功能:过滤关键字,就是搜索关键字,将关键字所在的行展示并标记为红色。

语法:grep [-n] 关键字 文件路径

  • 选项-n,可选,表示在结果中显示匹配的行的行号。
  • 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
  • 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口(就是|)

005_过滤命令_01.png

wc命令

功能:统计

语法:wc [-c -m -l -w] 文件路径

  • 选项,-c,统计bytes数量
  • 选项,-m,统计字符数量
  • 选项,-l,统计行(line)数
  • 选项,-w,统计单词(word)数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

005_过滤命令_02.png

从左到右分别是行数、单词数、字符数、字节数.

管道符|

写法:|

功能:将符号左边的结果,作为符号右边的输入

示例:cat a.txt | grep itheima,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima关键字

可以支持嵌套:cat a.txt | grep itheima | grep itcast 还比如ls -l /usr/bin | wc -l表示展示bin文件夹内有多少个文件

005_过滤命令_03.png

echo、tail和重定向符

echo命令

功能:输出内容

语法:echo 参数 参数:被输出的内容 比如echo "hello world!" 输出内容就是hello world!

`反引号

功能:被两个反引号包围的内容,会作为命令执行

示例: echo `pwd`,会输出当前工作目录

重定向符

功能:将符号左边的结果,输出到右边指定的文件中去

  • >,表示覆盖输出
  • >>,表示追加输出

006_命令_01.png

tail命令

功能:查看文件尾部内容,就是跟踪文件的最新更改。

语法:tail [-f -num] 参数

  • 参数:被查看的文件
  • 选项:-f,持续跟踪文件修改。使用两个会话,一个负责修改,一个负责删除,效果会更加明显。
  • num表示查看尾部多少行 示例tail -f -10 test.txt 表示从后往前查看test.txt文件内容10行,

006_命令_02.png

head命令

功能:查看文件头部内容

语法:head [-n] 参数

  • 参数:被查看的文件
  • 选项:-n,查看的行数,不写相当于cat命令

006_命令_03.png


vi编辑器

vim(visual interface,就是文本编辑器)是vi的加强版本,兼容ⅵ的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

vi\vim工作模式

  • 命令模式(Command mode):所敲的按键编辑器都理解为命令,此时不能自由进行文本编辑
  • 输入模式(Insert mode):编辑模式,可以对文件内容进行自由编辑
  • 底线命令模式(Last line mode):以:开始,通常用于文件的保存和退出

示意图

007_vim编辑器_01.png

语法:vim 文件路径 没有就会创建

模式 命令 描述
命令模式(按键都是命令) i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置之后进入输入模式
命令模式 I 在当前行的开头,进入输入模式
命令模式 A 在当前行的结尾,进入输入模式
命令模式 o 在当前光标下一行进入输入模式
命令模式 O 在当前光标上一行进入输入模式
输入模式(编辑模式) esc 任何情况下输入esc都能回到命令模式
命令模式 键盘上、键盘k 向上移动光标(以行为单位)
命令模式 键盘下、键盘j 向下移动光标(以行为单位)
命令模式 键盘左、键盆h 向左移动光标
命令模式 键盘右、键盘1 向后移动光标
命令模式 0 移动光标到当前行的开头
命令模式 $ 移动光标到当前行的结尾
命令模式 pageup(PgUp) 向上翻页
命令模式 pangdown(PgDn) 向下翻页
命令模式 / 进入搜索模式
命令模式 n 向下继续搜索
命令模式 N 向上继续搜索
命令模式 dd 删除光标所在行的内容
命令模式 ndd n是数字,表示删除当前光标向下n行
命令模式 yy 复制当前行
命令模式 nyy n是数字,复制当前行和下面的n行
命令模式 p 粘贴复制的内容
命令模式 u 撤销修改
命令模式 ctrl+r 反向撤销修改
命令模式 gg 跳到首行
命令模式 G 跳到行尾
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 d0 从当前光标开始,删除到本行的开头
底线命令模式(涉及文件的退出与保存) :wq 保存并退出
底线命令模式 :q 仅退出
底线命令模式 :q! 强制退出
底线命令模式 :w 仅保存
底线命令模式 :set nu 显示行号
底线命令模式 :set nonu 取消显示行号
底线命令模式 :set paste 设置粘贴模式

帮助手册

如果想要对命令的其它选项进行查阅,可以通过如下方式

语法:命令 --help

示例:如图列出ls命令的帮助文档。就是不怎么好用ㅍ_ㅍ

008_帮助手册_01.png

如果要查看命令的详细手册,可以通过man 命令查看(man <- manual)

一般下载的Centos默认是英文(不过我的设置成中文<(^-^)>).如果阅读吃力,可以通过重定向符:man ls > ls-man.txt,输出手册到文件然后通过翻译软件翻译内容查看

Linux用户与权限

Linux采用多用户的管理模式进行权限管理,而拥有最大权限的账户名为root;而普通用户的权限,一般在其HOME目录内是不受限的,出了HOME目录,一般普通用户仅有只读和执行权限,无修改权限。

009_用户与权限_01.png

切换用户命令:su [-] [用户名] 或者ctrl+d退回到上一个用户

为了避免长期使用root导致系统损坏,可以使用sudo命令为普通的命令授权。

语法:sudo 其他命令 需要为普通用户配置sudo认证。

未认证的情况

009_用户与权限_02.png

sudo认证方法

  1. 切换到root用户,在命令行中输入visudo命令,打开/etc/sudoers

  2. 文件最后(命令模式按G到文件末尾)添加用户名 ALL=(ALL) NOPASSWD:ALL 最后退出并保存

009_用户与权限_03.png

009_用户与权限_04.png

用户管理

用户与用户组

不同的用户可以加入多个组中,用组来管理用户。

创建用户组:groupadd 用户组名 删除用户组: groupdel 用户组名

查看用户组:getend group

  • 创建用户
    useradd [-g-d] 用户名:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g;-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

  • 删除用户
    userdel [-r] 用户名 :-r,删除用户的HOME目录。不使用-r删除用户时,HOME目录保留

  • 查看用户所属组
    id [用户名]:被查看的用户,如果不提供则查看自身

  • 修改用户所属组
    usermod -aG 用户组 用户名: ,将指定用户加入指定用户组

009_用户与权限_06.png

可以看到jerry有两个组,一个是和自己同名的组,一个是之后创建并添加的组。

  • 查看系统中的用户:getent passwd

    009_用户与权限_05.png

    信息格式为:用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)可以使用getent group查看系统中有哪些组

  • 查看系统所有变量: env.

权限信息

如图所示

009_用户与权限_07.png

序号1表示文件和文件夹的权限控制信息,序号2中的两个分别表示文件和文件夹所属的用户用户组

权限讲解如下图

009_用户与权限_08.png

r\w\x分别代表可读、可写(增删改等)、可执行(可以cd进入)。

chmod命令

语法:chmod [-R] 权限 参数

权限:比如755,表示:rwxr-x--x 示例chmod

序号 意思
0 无任何权限,即–
1 仅有x权限,即–x
2 仅有w权限,即-w-
3 有w和x权限,即-wx
4 仅有r权限,即r–
5 有r和x权限,即r-x
6 有r和w权限,即rw-
7 有全部权限,即rwx

参数:被修改的文件和文件夹

-R:设置文件夹和其内容全部一样生效。

示例:chmod u=rwx,g=rx,o=x hello.txt 将文件的权限修改为rwxr-x--x u表示user的权限,g表示组的权限,o表示其他(other)的权限

009_用户与权限_09.png

chown命令

此命令只适用于root用户使用

语法:chown [-R] [用户][:][用户组] 文件或文件夹

示例:chown jerry:emp hello.txt 将hello.txt所属的用户修改为jerry,用户组改为emp

009_用户与权限_10.png

Linux实用操作

快捷键技巧

ctrl+c:强制停止命令运行,或者是退出当前命令的输入

ctrl+d:退出账户,或者是某些页面

ctrl+l:清屏

键盘上下键:查看历史命令,同样可以用history,可以通过!命令前缀自动执行上一次匹配前缀的命令,比如!grep

ctrl+r:输入内容匹配历史命令,是就回车;左右键得到此命令

快捷键 作用
ctrl+c 强制停止命令运行,或者是退出当前命令的输入
ctrl+d 退出账户,或者是某些页面
ctrl+l 清屏
键盘上下键 查看历史命令,同样可以用history,可以通过!命令前缀自动执行上一次匹配前缀的命令,比如!grep
ctrl+r 输入内容匹配历史命令,是就回车;左右键得到此命令
ctrl+a 跳到命令开头
ctrl+e 跳到命令结尾
ctrl+左键 向左跳一个单词
ctrl+右键 向右跳一个单词

安装软件

有两种方式,一种是自行下载安装包,另一种是在系统的“应用商店”内下载安装。

yum.RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题

在Centos中安装。

  • yum [install remove search] [-y] 软件名称;install 安装;remove 卸载;search 搜索;-y,自动确认。常见的格式有.exe .pkg .rpm等。注意yum需要root权限且需要联网

由于Centos7在24年6月不再更新,需要自行配置yum源。方法请自行Google。

在Ubuntu系统使用“应用商店”——apt管理器。

  • apt [install remove search] [-y] 软件名称;install 安装;remove 卸载;search 搜索;-y,自动确认。常见的格式有 .deb等。同样需要root权限且要联网。

系统命令

systemctl

功能:控制系统服务的启动关闭等,常用于防火墙等的开闭

语法:systemctl start | stop | restart | disable | enable | status 服务名

常见的服务有NetworkManager,主网络服务;network,副网络服务;firewalld,防火墙服务;sshd,ssh服务(远程登录Linux使用的就是这个服务)

start,启动|stop,停止|status,查看状态|disable,关闭开机自启|enable,开启开机自启|restart,重启

010_系统命令_01.png

软链接

功能:创建文件、文件夹软链接(快捷方式)

语法:ln -s 参数1 参数2;参数1:被链接的;参数2:要链接去的地方(快捷方式的名称和存放位置)

010_系统命令_02.png

图中红色方框部分就是软链接.

日期及其计算

语法:date [-d] [+格式化字符串]

  • -d 按照给定的字符串显示日期,一般用于日期计算

  • 格式化字符串:通过特定的字符串标记,来控制显示的日期格式

    • %Y 年%y 年份后两位数字 (00…99)

    • %m 月份 (01…12)

    • %d 日 (01…31)

    • %H 小时 (00…23)

    • %M 分钟 (00…59)

    • %S 秒 (00…60)

    • %s 自 1970-01-01 00:00:00 UTC 到现在的秒数

示例date "+%Y-%m-%d %H:%M:%S" 以2022-01–01 00:00:00 展示时间

010_系统命令_03.png

计算 示例date -d "+1 [时间标记]" +%Y%m%d 如果时间标记是day ,则显示后一天的日期;如果时间标记是year,则表示后一年的日期。-表示显示前一天;支持的时间标记为:year\month\day\hour\minutes\second.

修改:修改时区为中国时区.

原理:将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可

1
2
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步:同步时间

安装:yum install -y ntp

启动管理:systemctl start | stop | restart | status | disable | enable ntpd

IP与主机

此部分内容与计算机网络密切相关,建议读者学习和掌握计算机网络相关知识,以下内容会更易理解。

ip地址

IPv4格式:a.b.c.d。abcd为0~255的数字,比如192.168.88.102

特殊IP:127.0.0.1,代指本机 ;0.0.0.0:可以表示本机也可以表示任意IP(看使用场景)

查看ip:ifconfig ens33:中的inet就是IP,lo:本地回环的网卡 virbr0:虚拟机专用的网卡

主机名

功能:Linux系统的名称

查看:hostname

设置:hostnamectl set-hostname 主机名

扩展:域名解析:简单来说就是根据输入的域名(比如百度)自动分析出服务器对应的IP地址,然后再访问,而不是先记住IP再访问。也就是说IP与域名之间存在映射关系.

011_IP与主机_01.png

配置VMware固定IP

原因:Linux操作系统,其IP地址是通过DHCP服务获取的。DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更。这一部分在之前的“初识Linux”中的“Linux固定IP“中讲解过详细步骤,这里只是强调重点。

核心步骤如下:

修改文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33

示例文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 改为static,固定IP
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1b0011cb-0d2e-4eaa-8a11-af7d50ebc876"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.88.131" # IP地址,自己设置,要匹配网络范围
NETMASK="255.255.255.0" # 子网掩码,固定写法255.255.255.0
GATEWAY="192.168.88.2" # 网关,要和VMware中虚拟网络编辑器中的配置一致
DNS1="192.168.88.2" # DNS1服务器,和网关一致即可

网络传输

ping命令

测试网络是否联通

语法:ping [-c num] 参数:-c,检查的次数,不使用-c选项,将无限次数持续检查;ip或主机名,被检查的服务器的ip地址或主机名地址 示例ping -c 3 www.baidu.com

012_网络传输_01.png

wget命令

wgt是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件;urL,下载链接
示例:wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz 监视后台下载进度 :tail -f wget-log

curl命令

curl可以发送http网络请求,可用于:下载文件、获取信息等,本质和浏览器访问网页是一样的
语法:curl [-O] ur1
选项:-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件
参数:url,要发起请求的网络地址

示例:curl -O http://archive.apache.org/dist/hadoop/common/hadoop- 3.3.0/hadoop-3.3.0.tar.gz

端口

计算机程序之间的通讯,通过IP只能锁定计算机,而端口是更加精确的“地址”,能够锁定计算机上具体的程序,便于程序之间的沟通。

Linux的端口分类如下

  • 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口HTTPS服务的443端口,非特殊需要,不要占用这个范围的端口
  • 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务。
  • 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

012_网络传输_02.png

nmap命令

查看端口占用情况

由于Centos停止更新,镜像源波动大,其网络下载困难较大。

下载:yum -y install nmap

语法:nmap 被查看的IP地址

或者也可以使用netstat命令查看端口的占用情况

语法:netstat -anp | grep 端口号 ,需要实现安装netstat

进程

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

ps命令

功能:查看进程信息

语法:ps -ef,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx

示例如下图

013_进程_01.png

从左到右分别是:UID是指进程所属的用户ID|PID:进程的进程号ID|PPID:进程的父ID(启动此进程的其它进程)|C:此进程的CPU占用率(百分比)|STIME:进程的启动时间|TTY:启动此进程的终端序号,如显示?,表示非终端启动|TIME :进程占用cpu的时间|CMD:进程的启动路径或者命令。

kill命令

语法:kill [-9] 进程ID -9表示强制关闭进程,进程ID可以通过ps和管道符命令实现

013_进程_02.png

主机状态

top命令

功能:查看主机运行状态。 相当于任务管理器

语法:top,查看基础信息,按q退出

示意图如下

014_主机状态_01.png

解释:

  • 第一行:top:命令名称,08:31:30:当前系统时间,up 38 min:启动了38分钟,1 users:1个用户登录,load average:1、5、15分钟负载
  • 第二行:Tasks:244个进程,1 running:1个进程子在运行,243 sleeping:243个进程睡眠,0个停止进程,0个僵尸进程
  • 第三行:%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负数优先级,I空闲状态)
%CPU 进程占用CPU率
%MEM 进程占用内存率
TIME+ 进程使用CPU时间统计,单位10毫秒
COMMAND 进程的命令或者名称或程序文件路径

可用选项

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

top的交互式选项

可以看如下黑马程序员的ppt图

image-20221027221354137

df命令

查看磁盘占用

语法:df [-h]

014_主机状态_02.png

还有iostat命令

语法:iostat [-x] [num1] [num2] -x,显示更多信息;num1:数字,刷新间隔,num2:数字,刷新几次

014_主机状态_03.png

具体更多信息看图

014_主机状态_04.png

网络监控

语法:sar -n DEV num1 num2 -n表示查看网络,DEV表示查看网络接口。num1是刷新间隔(不填就查看一次结束),num2是查看次数(不填无限次数)。

014_主机状态_05.png

环境变量

环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。比如说要执行cd命令,系统就在PATH环境变量里面的路径找cd的程序(因为cd命令的本体就是:/usr/bin/cd 这个程序文件),找不到的时候再从当前路径开始查找。配置过Java的同学应该有体会。

查看环境变量:env

  • 临时设置:export 变量名=变量值 ,变量值一般是路径,比如export PATH=$PATH:/home/itheima/myenv 将myenv临时添加到环境变量中

015_环境变量_01.png

  • 永久设置:
    • 针对用户,设置用户HOME目录内:.bashrc文件
    • 针对全局,设置/etc/profile

并通过语法source配置文件进行立刻生效

PATH变量

记录了执行程序的搜索路径,可以将自定义路径加入PATH内,实现自定义命令在任意地方均可执行的效果

015_环境变量_02.png

$符号

可以取出指定的环境变量的值

语法:$变量名

示例:

echo $PATH,输出PATH环境变量的值

echo ${PATH}ABC,输出PATH环境变量的值以及ABC

如果变量名和其它内容混淆在一起,可以使用${}

压缩与解压

文件上传与下载

可以安装xfcp软件进行文件上传,方法和Xshell大同小异。

在Linux中常见的压缩格式为tar、grip和zip格式。

tar命令

tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N

  • -z表示使用gzip(.gz),不写就是.tar格式
  • -v显示压缩和解压过程,用于查看进度
  • -c创建压缩文件、用于压缩模式
  • -x解压模式
  • -f要创建的文件或者要解压的文件,必须在所有选项中的最后一个
  • -C:要单独使用,与其他参数隔开。选择解压的目的地,用于解压模式

示例:压缩tar -zcvf test.tar.gz 1.txt 2.txt 将两个txt文件压缩到test.tar.gz内。使用gzip模式。解压:tar -zxvf test.tar.gz -C /home/Tom 将.gz文件解压到指定目录

zip命令与unzip命令

语法:zip [-r] 参数1 参数2 参数N -r,被压缩的包含文件夹时,需要使用-r,也就是里面的东西都压缩进来。

示例:zip -r test.zip a b.txt c.txt 将后面两个txt文件和a文件夹压缩到test.zip文件内。

语法:unzip [-d] 参数 -d指定要解压的位置,参数是被解压的zip压缩包文件。

后续学习

读者在学习完Linux基础之后根据自己的需求学习如何在Linux中安装对应的软件(比如mysql、IDEA等)。可以参考黑马程序员的资料

参考

软件资源

  1. Xshell:家庭/学校免费 - NetSarang Website (xshell.com)
  2. Linux相关发行版:清华大学开源软件镜像站
  3. vmware station:博通

参考视频和教程

  1. 安装虚拟机(VMware)保姆级教程(附安装包)
  2. 【小白入门 通俗易懂】韩顺平 一周学会Linux ,注意韩顺平老师的视频是2021年的,视频中有些网站已经失效,请自行Google或百度查找。
  3. 黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等

参考书籍和资料

  1. Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 这个是学Linux必备的,相比某度、CSDN更加简洁,但是如果要更加细节的解释可能还是要依靠CSDN或者Google等搜索引擎。
  2. 黑马程序员资料:Linux零基础快速入门到精通