Linux 是一种自由和开放源码的类 UNIX 操作系统。Linux 英文解释为 Linux is not Unix。Linux 遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。由于 Linux 是自由软件,任何人都可以创建一个符合自己需求的 Linux 发行版。
1.Linux基础命令
1.Linux的目录结构
目录结构是一个树型结构
只有一个根目录,所有文件都在根目录/下面
层级关系用/表示
2.Linux命令
1.Linux命令基础
command [-option] [parameter]
- command:命令本身
- -option: [可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
- parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
2.ls命令入门
ls [-a,-l,-h] [Linux路径]
- -a -l -h 是可选的选项
- Linux路径是此命令可选的参数
3.ls命令的参数和选项
-a
表示all的意思,即列出全部文件(包含隐藏的文件/文件夹)
-l
list,以列表的形式展示内容,并展示更多信息
-h
表示以易于阅读的形式,列出文件大小,不如K,M,G
-h选项必须要搭配 -l 一起使用
3.目录切换相关命令(cd/pwd)
1.cd
可以使用cd命令,更改当前所在的工作目录
cd:change directory
cd linux路径
- cd命令无需选项,只有参数,表示要切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的HOME目录
2.pwd
通过pwd命令查看当前的工作目录
pwd:print work directory
pwd
- 无选项,无参数,直接输入pwd即可
4.相对路径,绝对路径和特殊路径符
1.绝对路径
绝对路径
以根目录为起点
cd /home/test1/test2
2.相对路径
相对路径
以当前目录为起点
cd test1
3.特殊路径符
. 表示当前目录
.. 表示上一级目录
~ 表示HOME目录
5.创建目录命令
mkdir命令可以创建新的目录(文件夹)
mkdir:make directory
mkdir [-p] Linux路径
- 参数必填,表示Linux路径,即要创建文件夹的路径,相对路径或绝对路径均可
- -p选项选填,表示自动创建不存在的父目录,适用于创建连续多层级的目录
6.文件操作命令part1(touch、cat、more)
1.touch
touch命令无选项,参数必填,表示创建的文件路径,相对、绝对、特殊路径均可
touch Linux路径
2.cat
cat同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对,绝对,特殊路径符都可以使用
cat Linux路径
3.more
more可以一页一页展示文件内容
同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对,绝对,特殊路径符都可以使用
在查看时用空格翻页
按 q退出
more Linux路径
7.文件操作命令part2(cp、mv、rm)
1.cp
cp命令可以复制文件/文件夹,cp命令来自英文单词:copy
cp [-r] 参数1 参数2
- -r参数,可选,用于复制文件夹使用,表示递归
- 参数1,Linux路径,表示复制的文件或文件夹
- 参数2,Linux路径,表示要复制去的地方
2.mv
mv命令可以用于移动文件\文件夹,mv命令来自英文单词:move
move 参数1 参数2
- 参数1,Linux路径,表示被移动的文件或文件夹
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
3.rm
rm命令可用于删除文件、文件夹
rm命令来自英文单词:remove
rm [-r,-f] 参数1,参数2,...参数n
- 同cp命令一样,-r选项用于删除文件夹
- -f表示force,强制删除(不会弹出提示确认信息)
- root用户使用
- 参数1,参数2…参数n表示要删除的文件或文件夹路径,按照空格隔开
通配符*,进行模糊匹配
- test*,表示匹配任何以test开头的内容
- *test,表示匹配任何以test结尾的内容
- test,表示匹配任何包含test的内容
8.查找命令(which、find)
1.which
命令相当于windows系统的.exe文件
which 要查找的命令
2.find
查找文件名
可以使用通配符模糊匹配
find 起始路径 [-name,-size] "被查找的文件名"
- -name(按名字查找)
- -size(按空间查找)
size查找
+、-表示大于和小于
n表示大小数字
KMG表示大小单位
find 起始路径 -size +|-n[KMG]
9.grep、wc和管道符
1.grep
可以通过grep命令,从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行或行号
- 参数,关键字,必填,表示过滤的关键字,带有空格或其他符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
2.wc
可以使用wc命令统计文件的行数、单词数量等
wc [-c -m -l -w] 文件路径
- -c,统计bytes的数量
- -m,统计字符数量
- -l,统计行数
- -w,统计单词数量
- 参数,文件路径,被统计的文件,可以作为内容输入端口
3.特殊符号|(管道符)
将管道符左边的命令的结果作为右边命令的输入
cat test.txt | grep hello
10.echo、tail和重定向符
1.echo
可以使用echo命令在命令行输出指定内容,最好使用””包围起来
echo 输出的内容
2.反引号`
被包围的内容会作为命令执行,而非普通字符
echo pwd
会直接打印出pwd,使用反引号即可将pwd视为命令执行echo `pwd`
3.重定向符
>和>>
- >将左侧的命令的结果,覆盖写入到符号右侧指定的文件中
- >>将左侧命令的的结果,追加写入符号右侧指定的文件中
echo "echo hahahaha" >> test1.txt
4.tail
可以查看文件尾部的内容,跟踪文件的最新更新
tail [-f -num] Linux路径
- 参数,Linux路径,表示被跟踪的文件路径
- 选项,-f,表示持续跟踪
- 选项,-num,表示查看尾部多少行,不填默认10行
11.vi/vim编辑器
1.vi/vim
命令模式:(command mode)
命令模式下,所有的按键编辑器都视为命令,以命令的形式执行不同的功能
此模式下,不能自由进行文本编辑
输入模式:(insert mode)
编辑模式、插入模式
此模式下,可以对文件内容进行自由编辑
底线模式:(last line mode)
以:开始,通常用于文件的保存,退出
2.vim的进入
语法1:vim 文件路径 //直接打开指定文件(光标位于首行或上次关闭文件时光标的所在行)
语法2:vim +数字 文件路径 //打开指定文件并将光标移动到指定行(数字对应的行数)
语法3:vim +/关键词 文件路径 //打开指定文件并高亮显示关键词
语法4:vim 文件路径1 文件路径2 文件路径3 //可同时打开多个文件,文件之间可切换操作
如果文件路径表示的文件不存在,此命令会用于编辑新文件
如果文件路径表示的文件存在,此命令会用于编辑已有文件
3.模式的切换
1.切换到命令模式
用vim指令打开文件时默认为命令模式;
按一下键盘ESC键可从编辑模式切换到命令模式;
按一下或连按两下ESC键或用键盘删除末行模式下的英文符号:可从末行模式切换到命令模式
2.切换到末行模式
命令模式下键盘输入英文符号:可切换到末行模式;
3.切换到编辑模式
命令模式下键盘输入字母i或a(还有其他字母也可以这两个比较常用)可切换到编辑模式以编辑
4.命令模式
1.光标移动
语法1:^ //键盘输入符号^,光标移动到光标所在行的行首
语法2:$ //键盘输入符号$,光标移动到光标所在行的行尾
语法3:gg //键盘输入字母gg,光标移动到文件的首行
语法4:G //键盘输入字母G,光标移动到文件的尾行
语法5:ctrl+b //键盘ctrl+b,向上翻屏(前提是文件内容足够翻屏)
语法6:ctrl+f //键盘ctrl+f,向下翻屏
语法7:数字G //键盘输入数字+字母G,光标移动到指定行(数字对应的行数)
语法8:数字+键盘方向键上/下 //键盘输入数字+键盘方向键上/下,光标以光标所在行为准向上/下移动指定行(对应的数字)
语法9:数字+键盘方向键左/右 //键盘输入数字+键盘方向键左/右,光标以光标所在位置为准向左/右移动指定个字符(对应的数字)
语法10::数字 //键盘输入英文符号:+数字再回车,光标移动到指定行(属于末行模式)
2.复制与粘贴
语法1:yy //键盘输入字母yy,复制光标所在行
语法2:数字yy //键盘输入数字+字母yy,从光标所在行开始向下复制指定行(数字对应的行数,包括了光标所在行)
语法3:ctrl+v //键盘ctrl+v进入可视化复制,用键盘的方向键控制复制区域,然后键盘输入字母yy即可完成复制
粘贴语法:p //键盘输入字母p即可在光标处粘贴复制的内容
3.剪切/删除
语法1:dd //键盘输入字母dd,剪切光标所在行,光标所在行的下面行会上移填补剪切行
语法2:数字dd //键盘输入数字+字母dd,从光标所在行起向下剪切指定行(数字对应的行数,包括了光标所在行),后面行会上移填补剪切部分
语法3:D //键盘输入字母D,剪切光标所在行但后面行不会上移填补剪切行,剪切行变空
删除语法:删除即剪切后不复制,删除操作使用剪切语法
4.撤销与恢复
撤销语法::u //键盘输入符号:和字母u再回车(属于末行模式),撤销上一步操作
恢复语法:ctrl+r //键盘ctrl+r,恢复撤销操作(即取消之前的撤销操作)
5.末行模式
1.保存
语法1::w //键盘输入英文符号:+字母w再回车,保存当前文件
语法2::w 文件路径 //键盘输入英文符号:+字母w+空格+文件路径再回车,另存为指定文件
2.退出
语法1::q //键盘输入英文符号:+字母q再回车,退出当前文件
语法2::wq //键盘输入英文符号:+字母wq再回车,保存当前文件并退出
语法3::q! //键盘输入英文符号:+字母q+英文符号!再回车,不保存对文件的修改并退出
3.调用外部命令
- 语法::q外部命令 //键盘输入英文符号:+字母q+外部命令再回车,外部命令如 ls 命令等,不退出文件的同时执行外部命令,执行后按任意键可以切换回文件
4.搜索/查找
语法1::/关键词 //键盘输入英文符号:+/+关键词再回车,按关键词查找,查找到的内容会被高亮显示
语法2:N/n //键盘输入字母N/n,光标移动到上/下一个查找到的内容(属于命令模式)
语法3::nohl //键盘输入英文符号:+字母nohl再回车,取消查找到的内容的高亮显示,若不取消内容会一直高亮显示
5.替换
语法1::s/搜索的内容/新内容 //用新内容替换光标所在行第一处被搜索到的内容
语法2::s/搜索的内容/新内容/g //用新内容替换光标所在行全部被搜索到的内容
语法3::%s/搜索的内容/新内容 //用新内容替换整个文件每一行第一处被搜索到的内容
语法4::%s/搜索的内容/新内容/g //用新内容替换整个文件全部被搜索到的内容
6.显示行号
语法1::set nu //键盘输入英文符号:+字母set+空格+字母nu再回车,显示文件每行的行号,显示行号是暂时的下次打开该文件不会再显示
语法2::set nonu //键盘输入英文符号:+字母set+空格+字母nonu再回车,取消行号显示
7.切换文件
语法1::files //键盘输入英文符号:+字母files再回车,查看同时打开的所有文件的名称
语法2::open 文件名 //键盘输入英文符号:+字母open+空格+文件名再回车,切换到其他打开的文件进行操作
语法3::bn //键盘输入英文符号:+字母bn再回车,切换到下一个打开的文件
语法4::bp //键盘输入英文符号:+字母bn再回车,切换到上一个操作的文件
注意:每执行完一次末行模式下的命令之后,都会自动退回到命令模式,因此每次执行末行模式下的命令都需要先键盘输入英文符号:后再输入命令
6.编辑模式
i | 在光标所在字符前开始插入 |
---|---|
a | 在光标所在字符前开始插入 |
o | 在光标所在行的下面另起一行开始插入 |
I | 在光标所在行的行首开始插入,若行首有空格则在空格后插入 |
A | 在光标所在行的行尾开始插入 |
O | 在光标所在行的上面另起一行开始插入 |
S | 删除光标所在行并开始插入 |
2.Linux权限管控
1.root用户(超级管理员)
1、无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。
在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
而在前期,我们一直使用的账户是普通的用户:kx
2、root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
注意:
- 普通用户的权限,一般在其HOME目录内是不受限的
- 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
2.su和exit命令
1、在前面,我们接触过su命令切换到root账户。
su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
语法:su [-] [用户名]
- -符号是可选的,表示是否在切换用户后加载环境变量,建议带上
- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
2、切换用户后,可以通过exit命令退回到上一个用户,也可以使用快捷键:Ctrl+d
使用普通用户,切换到其它用户需要输入密码,如切换到root用户
使用root用户切换到其它用户,无需密码,可以直接切换
3.sudo命令
1、在我们得知root密码的时候,可以使用su命令切换到root得到最大权限。
但是我们不建议长期使用root用户,避免带来系统损坏。
我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法:sudo 其他命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。
但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
2、为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers在文件的最后添加:
kx ALL=(ALL) NOPASSWD:ALL
其中最后的NOPASSWD:ALL表示使用sudo命令,无需输入密码最后通过wq保存
切换回普通用户
执行的命令,均以root运行
4.用户、用户组管理
1、Linux系统中可以:
配置多个用户
配置多个用户组
用户可以加入多个用户组中
2、Linux中关于权限的管控级别有2个级别,分别是:
针对用户的权限控制
针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。
3、用户组管理
以下命令需root用户执行
创建用户组
groupadd 用户组名
删除用户组
groupdel 用户组名
4、用户管理
以下命令需root用户执行
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组
id 用户名
- 参数:用户名,被查看的用户,如果不提供则查看自身
修改用户所属组
usermod -aG 用户组 用户名
5、getent
(1)使用getent命令,可以查看当前系统中有哪些用户
语法:getent passwd
共有7份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
(2)使用getent命令,可以查看当前系统中有哪些用户组
语法:getent group
5.查看权限控制 - chmod
1.rwx的含义
1.r表示读权限
2.w表示写权限
3.x表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别
- r,针对文件可以查看文件内容
- 针对文件夹,可以查看文件夹内容,如ls命令
- w,针对文件表示可以修改此文件
- 针对文件夹,可以在文件夹内:创建、删除、改名等操作
- x,针对文件表示可以将文件作为程序运行
- 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
- 序号1,表示文件、文件夹的权限控制信息
- 序号2,表示文件、文件夹的所属用户
- 序号3,表示文件、文件夹所属用户组
2.权限信息
-或d或l | r或- w或- x或- | r或- w或- x或- | r或- w或- x或- |
---|---|---|---|
-表示文件d表示文件夹l表示软链接 | 所属用户权限 | 所属用户组权限 | 其他用户权限 |
举例:drwxr-xr-x |
这是一个文件夹,首字母d表示
所属用户的权限是:有r有w有x,rwx
所属用户组的权限是:有r无w有x,r-x(-表示无此权限)
其他用户的权限是:有r无w有x,r-x
3.chmod
我们可以使用chmod命令,修改文件、文件夹的权限信息
注意:只有文件、文件夹的所属用户或root用户可以修改
语法:chmod -R 权限 文件或文件夹
选项:-R ,对文件内的全部内容应用同样的操作。
chmod u=rwx,g=rx,o=x hello.txt
将文件权限修改为:rwxr-x–x
其中:u表示user所属用户权限,g表示group组权限,o表示other其他用户权限
chmod -R u=rwx,g=rx,o=x test
将文件夹test以及文件夹全部内容权限设置为:rwxr-x–x
4.权限的数字序号
权限可以用三位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限
数字的细节如下:r记为4,w记为2,x记为1
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
举例:751:rwx(7)r-x(5)–x(1)
chmod 751 hello.txt 将hello.txt的权限修改为rwxr-x–x
6.修改权限控制 - chown
使用chown命令,可以修改文件、文件夹的所属用户和用户组
注意:普通用户违法修改所属为其他用户或组,所以此命令只适用于root用户执行
语法:chown -R 用户:用户组 文件或文件夹
选项:-R,同chmod,对文件夹内全部内容应用相同规则
选项:用户,修改所属用户
选项:用户组,修改所属用户组
:用于分隔用户和用户组
举例:
chown root hello.txt
将hello.tx所属用户修改为root
chown :root hello.txt
将hello.txt所属用户组修改为root
chown root:group hello.txt
将hello.txt 所属用户修改为root,用户组修改为group
chown -R root test
将文件夹test的所属用户修改为root并对文件夹内全部内容应用相同规则
3.Linux实用操作
1.Linux常用快捷键
1 .CTRL + c 强制停止
- 使用 CTRL + c 可以强制停止某些程序的运行
- 使用 CTRL + c 可以退出当前输入,重新输入
2 .CTRL + d 退出
- 使用 CTRL + d 可以退出当前的账户登录,回到上一个登陆的用户
- 使用 CTRL + d 可以退出某些特定的界面
3 .历史命令搜索
历史命令搜索有多种方式:
- history 查看历史命令
- !命令前缀,自动执行上一次匹配前缀的命令
- CTRL + r 输入内容匹配历史命令
CTRL + r,输入内容进行历史命令的搜索
如果搜索到的内容是你想要的:
- 回车键可以直接执行该命令
- 键盘左右键可以得到该命令但不执行
CTRL + r
-> ls
-> enter
4 .光标移动
- ctrl + a ,跳到命令开头
- ctrl + e ,跳到命令结尾
- ctrl + 键盘左键,向左跳一个单词
- ctrl + 键盘右键,向右跳一个单词
5 .清屏
- CTRL + l 快捷键清屏
- clear 命令清屏
2.软件安装
Linux CentOs 版本中使用 yum 进行软件的安装
Linux Ubantu 版本中使用 apt 进行软件的安装
yum [-y] [install | remove | search] 软件名称
apt [-y] [install | remove | search] 软件名称
选项:-y,表示无需手动确认安装或者是删除软件
install:安装
remove:卸载
search:查找
使用 yum 或者 apt 命令需要 root 权限,可以切换到 root 用户或者使用 sudo 提权,并且需要联网。
sudo yum -y remove wget (删除) wget
sudo yum -y install wget (下载) wget
sudo yum -y search wget(查看 )wget
3.systemctl 命令
1.systemctl
Linux 很多内置和第三方软件都支持使用 systemctl 命令控制启动、停止、开机自启。这种能过够被 systemctl 控制的软件,一般也被称为服务。
systemctl start | stop | enable | disable |status 服务名
start 启动
stop 停止
enable 开启开机自启
disable 关闭停止开机自启
status查看状态
2.创建软链接
在系统中创建软连接,可以将文件、文件夹链接到其他位置
类似于快捷方式
ln -s 参数1 参数2
选项:-s,表示创建软链接
参数1,表示被链接的文件或文件夹
参数2,表示要链接去的目的地
4.日期、时区
1.显示时间
在 Linux 中,可以使用 data [-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 -d"-1 year" "+%Y-%m-%d %H:%M:%S"
2.设置时区
虽然可以显示出来时间了,但是我们可以发现,显示出来的时间跟我们现实中的时间是有差别的。这是因为时区的问题,我们使用的时区应该是东八区,Linux 默认的时区是 UTC(协调世界时),所以我们需要更改时区。
1.使用 root 用户执行下面的命令。
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.使用 ntp 程序自动校准系统时间
使用 ntp 需要安装 ntp yum -y install ntp
启动 ntp 并设置开机自启systemctl start ntp
systemctl enable ntp
手动校准时间(阿里云)
ntpdate -u ntp.aliyun.com
5.IP 地址、主机名
1 IP地址
IP地址(Internet Protocol Address)是用于在网络通信中标识和定位设备的数字标识符。它是网络通信中数据包传输的基本单位,类似于每个设备在网络中的住所。IP地址用于识别设备(如计算机、手机、路由器等)以及设备之间的通信。
IP地址通常由32位(IPv4)或128位(IPv6)的二进制数字组成。为了方便使用和理解,IP地址通常被表示为由四个数字组成的十进制格式(IPv4),每个数字范围从0到255,以点分隔(例如:192.168.0.1),或者以16位的十六进制表示(IPv6)。
IP地址中的每个设备都具有唯一的地址,这使得数据包能够在网络中正确地发送到目标设备。IP地址分为两个主要部分:网络部分和主机部分。网络部分标识网络的身份,而主机部分标识网络中的具体设备。
IPv4是目前广泛使用的 IP 地址版本,但由于互联网的发展和设备增加,IPv6逐渐得到推广,以获得更多的可用IP地址。IPv6提供了更大的地址空间,以满足未来互联网的需求。
我们可以通过 ifconfig
来查看自己电脑的 IP 地址。(Windows使用ipconfig)
特殊的IP地址
- 127.0.0.1 这个 IP 地址指代本机
- 0.0.0.0
- 可以指代本机
- 可以在端口绑定中确定绑定关系
- 在一些 IP 地址限制中,表示所有 IP 的意思,允许任意 IP 访问
2.主机名
主机名(Hostname)是用于标识网络中的设备(主机)的名称。它是一个易于识别和记忆的字符串,用于代表设备在网络中的身份。
主机名通常用于局域网环境中或特定网络中,用于区分和识别连接到网络的各个设备。每个设备都应该有一个唯一的主机名,这样其他设备和网络服务可以准确地识别和寻址它们。
主机名可以是人为指定的,也可以是通过系统自动分配或生成的。通常,主机名由人为指定,并且可以基于设备的特征、位置或用途来命名。
在 Linux 中,可以使用 hostname
来查看主机名。
修改主机名,需使用 hostnamectl set-hostname 主机名
,并且这个命令需要 root 权限
3.域名
域名(Domain Name)是用于在互联网上标识和定位网站、服务器或其他网络资源的字符串。它提供了一个人类可识别的方式来访问网站和网络服务,将网络资源的 IP 地址映射到易记的名称。
域名通常由多个部分(标签)组成,这些部分之间由点号分隔。最右侧的部分被称为顶级域(Top-Level Domain,TLD),例如.com、.org、.net等。顶级域名称指示域名的分类或特定类型,例如商业网站(.com)、非营利组织(.org)等。
顶级域之前的部分称为二级域名(Second-Level Domain),例如example,以及在其之前的部分称为三级域名(Third-Level Domain),例如www。域名的层次结构可以根据需求和目的进行更深的扩展。
域名的作用是提供一个方便且易于记忆的方式来访问网络资源,避免人们直接使用 IP 地址来访问。它在用户体验、品牌建设和网站推广方面起到重要作用。
4.域名解析
域名解析(Domain Name Resolution)是将域名(例如www.baidu.com)转换为相应的IP地址的过程。当用户在浏览器中输入一个域名时,操作系统会通过域名解析来确定该域名对应的服务器的IP地址,以建立与服务器的连接并获取所需的网页内容或其他网络资源。
域名解析是通过域名系统(Domain Name System,DNS)来完成的。DNS是一个分布式数据库系统,它存储了大量的域名与IP地址的映射关系。当用户输入一个域名时,操作系统会向本地DNS解析器发送一个DNS查询请求。本地DNS解析器首先会查看自己的缓存,如果之前已经解析过该域名,则直接返回缓存的IP地址。如果缓存中没有该域名的记录,本地DNS解析器将向根DNS服务器发送请求。
根DNS服务器会指示本地DNS解析器去查询顶级域名服务器(TLD DNS服务器),例如.com、.org等。顶级域名服务器记录着二级域名服务器(Authoritative DNS服务器)的地址。本地DNS解析器随后向相应的二级域名服务器发送查询请求,获得与域名对应的IP地址。最后,本地DNS解析器将结果返回给操作系统,使其能够建立与目标服务器的连接。
5.如何配置主机名映射
在 Windows 系统中,我们需要在 C:\Windows\System32\drivers\etc\host
中配置主机名映射,这样我们就可以通过主机名来访问本机的 IP 地址了。
6.如何在 VMware Workstation 中配置固定 IP
1.在vm中配置Ip地址网关和网段(ip地址的范围)
2.在Linux系统中手动修改配置文件,固定ip
6.网络传输
1 ping 命令
使用 ping [-c num] ip或主机名
检查指定的网络服务是否是可联通状态
- 选项:-c,表示检查的次数,如果不指定次数,将会无限次数检查下去
查看 baidu.com
是否是可联通状态。
2 wget 命令
wget
是非交互式的文件下载器,可以在命令行内下载网络文件
wget [-b] url
- 选项:-b,表示是否是后台下载,会将日志写入到当前工作目录的 wget-log 文件
- 参数:url,下载链接
下载apache-hadoop 3.3.0
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
如果你选择后台下载,可以使用 tail -f wget-log
来监控下载进度。
3.curl 命令
curl 命令可以发送 http 网络请求,可用于:下载文件和获取信息等
curl cip.cc
查看公网ipcurl [-O] url
- 选项:-O,用于下载文件,当 url 是下载链接时,可以使用此选项保存文件
向 jetbrains.com
发送请求
4 .什么是端口
在计算机网络中,端口(Port)是用于标识特定应用程序或服务的数字标识符。它在网络通信中扮演着重要的角色,帮助确定数据包应该被发送到哪个应用程序或服务上。
在传输层协议(如TCP和UDP)中,端口号是一个16位的数字,范围从0到65535。其中,0到1023之间的端口号被称为”Well-Known Ports”,用于一些广泛应用的标准服务,例如HTTP(端口80)、FTP(端口21)、SSH(端口22)等。
端口号通过网络协议栈中的传输层协议来进行使用。当设备接收到网络数据包时,传输层会根据目标端口号将数据包传递给相应的应用程
序或服务。类似于门牌号码,端口号帮助网络设备在同一台主机上的多个应用程序之间区分和定位数据包。
公认端口: 1 ~ 1023 ,通常用于一些系统内置或知名程序的预留使用,如 SSH 服务的 22 端口, HTTPS 服务的443 端口非特殊需要,不
要占用这个范围的端口
注册端口: 1024 ~ 49151 ,通常可以随意使用,用于松散的绑定一些程序 \ 服务
动态端口: 49152~65535 ,当程序对外进行网络链接时,用于临时使用。
5. 查看端口占用
使用 nmap 被查看的 IP 地址
查看端口的占用情况。
nmap 需要下载,sudo yum -y install nmap
nmap 127.0.0.1
查看本机端口的占用情况
使用 netstat
查看端口的占用情况netstat -anp
,使用 netstat 也需要下载 sudo yum -y install net-tools
netstat -anp | grep 3306
7.进程管理
1.进程
进程(Process)是计算机中正在运行的程序实例。它是操作系统进行任务管理和资源分配的基本单位。每个进程都有自己的内存空间和执行上下文,包括指令、数据、堆栈、文件描述符等。
在操作系统中,进程可以同时运行多个程序,并且每个程序都以独立的进程存在。每个进程都被分配一个唯一的进程标识符(Process Identifier,PID),用于在进程间进行识别和管理。
2.查看进程
ps [-e -f]
来查看 Linux 的进程信息。
- 选项:-e,显示出全部的信息
- 选项:-f,以完全格式化的形式展现信息
UID :进程所属的用户 ID
PID :进程的进程号 ID
PPID :进程的父 ID (启动此进程的其它进程)
C :此进程的 CPU 占用率(百分比)
STIME :进程的启动时间
TTY :启动此进程的终端序号,如显示 ? ,表示非终端启动
TIME :进程占用 CPU 的时间
CMD :进程对应的名称或启动路径或启动命令
可以使用管道符过滤信息
3.关闭进程
Linux 中,可以使用 kill
关闭进程。kill [-9] 进程ID
- 选项:-9,表示强制关闭,如果不使用强制关闭的话,进程可能不会关闭。
8.主机状态
1.查看系统资源调用
可以通过 top
命令查看 CPU 、内存使用情况,类似 Windows 的任务管理器。默认每五秒刷新一次,可以使用q
或者 CTRL + c
退出。
top:命令名称, 20:11:27:当前系统时间, up 2:39:启动了 2分29秒, 3 users:3 个用户登录, load:1 、 5 、15 分钟负载
Tasks : 个进程, running : 个进程子在运行, sleeping : 个进程睡眠, 个停止进程, 个僵尸进程
%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 :进程的命令或名称或程序文件路径
top命令也可使用选项
-p:只显示某个进程的信息
-d:设置刷新时间,默认是5s
-c:显示产生进程的完整命令,默认是进程名
-n:指定刷新次数,比如 top -n 3,刷新输出3次后退出
-b:以非交互非全屏模式运行,以批次的方式执行top,一般配合 -n 指定输出几次统计信息,将输出重定向到指
定文件,比如top -b -n 3 > /tmp/top.tmp
-i:不显示任何闲置(idle)或无用(zombie)的进程
-u:查找特定用户启动的进程
top命令也可实现交互式
h 键:按下h键,会显示帮助画面
c 键:按下c键,会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认显示
f 键:按下f键,可以选择需要展示的项目
M 键:按下M键,根据驻留内存大小(RES)排序
P 键:按下P键,根据CPU使用百分比大小进行排序
T 键:按下T键,根据时间/累计时间进行排序
E 键:按下E键,切换顶部内存显示单位
e 键:按下e键,切换进程内存显示单位
l 键:按下l键, 切换显示平均负载和启动时间信息。
i 键:按下i键, 不显示闲置或无用的进程,等同于一工参数, 再次按下,变为默认显示
t 键:按下t键,切换显示CPU状态信息
m 键:按下m键, 切换显示内存信息
2.磁盘信息监控
使用
df
命令,可以查看硬盘的使用情况
df [-h]
- 选项:-h,显示单位
也可以使用 iostat
查看 CPU、磁盘的相关信息iostat [-x] [num1] [num2]
- 选项:-x,显示更多信息
- num1,刷新间隔
- num2,刷新次数
iostat -x 3 3
每三秒刷新一次,共刷新三次
rrqm/s : 每秒这个设备相关的读取请求有多少被 Merge 了(当系统调用需要读取数据的时候, VFS 将请求发到各个 FS ,如果 FS 发现不同的读取请求读取的是相同 Block 的数据,FS 会将这个请求合并 Merge, 提高 IO 利用率 , 避免重复调用)
wrqm/s : 每秒这个设备相关的写入请求有多少被 Merge
rsec/s : 每秒读取的扇区数
sectorswsec/ : 每秒写入的扇区数rKB/s : 每秒发送到设备的读取请求数
wKB/s : 每秒发送到设备的写入请求数
avgrq-sz:平均请求扇区的大小
avgqu-sz:平均请求队列的长度。毫无疑问,队列长度越短越好。
await : 每一个 IO 请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备 I/O 操作的服务时间(以毫秒为单位)%util : 磁盘利用率
3.网络状态监控
可以使用sar命令查看网络的相关统计
sar -n DEV num1 num2
选项
-n 查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查一次结束),num2:查看次数(不填就无限次数)
9.环境变量
1 什么是环境变量
环境变量(Environment Variable)是操作系统或应用程序运行时可用的一组动态值。它们存储了有关系统环境和运行程序的重要信息,例如路径、配置参数、临时文件位置等。
环境变量的主要作用是为操作系统和应用程序提供灵活性和可配置性。通过使用环境变量,您可以动态地设置和调整各种参数,而无需修改或重新编译代码。这使得程序能够在不同的环境中灵活地运行,而无需对代码进行修改。
2 如何查看环境变量
在 Linux 中,可以使用 env 命令查看环境变量。
环境变量是以 key-value 型结构
env |grep PATH
在 Linux 中,无论在哪个工作目录下我们都能使用 cd
命令来切换工作目录,这归功于 PATH
项目中的值做到的。
路径之间以 : 隔开,当执行命令的时候,都会按照顺序,从上述路径中搜索要执行的程序的本体。
cd
命令就在 /usr/bin
路径下,所以当我们执行 cd
命令的时候。搜索到第二个路径就停止了。
3.$ 符号——取出变量的值
echo $PATH
当要取出的变量和其他内容混合在一起的时候,可以使用 { }
来标注变量是谁。
echo ${PATH}ABC123
4.自行设置环境变量
在 Linux 中,可以使用 export 命令自行设置环境变量。
export 变量名 = 变量值,并且这个设置分为临时设置和永久设置。
临时设置,语法: export 变量名 = 变量值
永久生效
针对当前用户生效,配置在当前用户的: ~/.bashrc 文件中vi
针对所有用户生效,配置在系统的: /etc/profile 文件中
并通过语法: source 配置文件,进行立刻生效souce /etc/profile
先创建一个文件夹,然后使用
vim
编辑器编辑文件内容临时设置环境变量
expot PATH=$PATH:/home/handsome/test
记住了我们要先执行文件程序,该文件程序的执行权限必须可读和可执行。
5.如果不小心改坏了环境变量
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
vim /etc/profile
soruce /etc/profile
10.上传和下载
1.使用 FianlShell 下面的窗体直接进行数据的上传和下载
我们可以直接使用 FinallShell 与虚拟机之间进行资源的交换。
在 FinalShell 下面的文件中找到我们需要下载的文件,右键下载就可以了。
上传文件的时候,我们可以直接从我们本地电脑的桌面将文件给拖进来,它自己就会实现文件的上传。
2.使用rz、sz命令实现数据的上传和下载
除了使用下面的窗口之外,我们也可以使用命令来实现数据的上传和下载
rz
命令,实现数据的上传
rz
选择文件
sz 要下载的文件
命令实现数据的下载(下载到本机)
sz /bin/abrt-action-analyze-backtrace
11.压缩和解压
Linux 常用 tar 、 gzip 、 zip 这三种压缩格式。
- tar 命令
- tar 命令压缩
- tar [-c -v -x -f -z -C] 参数1 参数2…参数N
-c ,创建压缩文件,用于压缩模式
-v ,显示压缩、解压过程,用于查看进度
-x ,解压模式
-f ,要创建的文件,或要解压的文件, -f 选项必须在所有选项中位置处于最后一个
-z , gzip 模式,不使用 -z 就是普通的 tarball 格式
-C ,选择解压的目的地,用于解压模式
tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到 test.tar 文件内
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz 文件内,使用 gzip 模式
-z 选项如果使用的话,一般处于选项位第一个
-f 选项,必须在选项位最后一个,因为 -f 后面要接文件位置
tar -cvf test.tar 1.txt 2.txt 3.txt
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
tar 命令解压
tar -xvf test.tar
解压 test.tar ,将文件解压至当前目录
tar -xvf test.tar -C /home/handsome
解压 test.tar ,将文件解压至指定目录( /home/handsome)
tar -zxvf test.tar.gz -C /home/handsome
以 Gzip 模式解压 test.tar.gz ,将文件解压至指定目录( /home/handsome)
-f 选项,必须在选项组合体的最后一位
-z 选项,建议在开头位置
-C 选项单独使用,和解压所需的其它参数分开
zip 压缩和解压
zip 压缩
使用 zip [-r] 擦参数1 参数2…参数N 将文件压缩为 zip 压缩包
- 选项:-r,被压缩的包含文件夹的时候,需要使用 -r 选项
这里操作跟上面的 tar 效果类似,我就不过多展示了。
unzip 解压
unzip [-d] 参数
- 选项:-d,指定要解压去的位置,跟 tar 命令的 -C 选项类似、
unzip test.zip -d /home/handsome,将 test.zip 解压到指定文件夹内( /home/handsome)
4.各类软件部署
1.mysql
1.下载mysql
1.查看是否已经安装了MySQL
rpm -qa | grep mysql
2.下载MySQL安装包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3.安装MySQL包
yum -y install mysql57-community-release-el7-10.noarch.rpm
4.安装MySQL
yum -y install mysql-community-server
如果出现fail报错,执行下面命令
yum -y install mysql-community-server --nogpgcheck
2.启动Mysql
1.启动服务
systemctl start mysqld.service
2.查看运行状态
service mysqld status
或ps -ef|grep mysql
3.连接Mysql
1.登录Mysql
mysql -u root -p
2.在日志中查看初始密码
grep 'password' /var/log/mysqld.log
3.更改密码(满足安全要求长度大于8,含有大小写字母及数字以及特殊符号)
alter user 用户名@主机名 identified with by '新密码';
4.关闭和重启Mysql服务
service mysqld stop
->停止服务
service mysqld start
->重启服务
4.允许远程连接访问
1.创建一个root用户,允许所有主机都能访问
create user 'root'@'%' identified with mysql_native_password by '密码';
2.给root用户分配所有权限
grant all on *.* to 'root'@'%';
3.用DataGrip连接
输入端口号和密码 ->连接
5.打开Linux的3306端口
1.在linux系统中查看自己的ip
ifconfig -a
2.关闭Linux防火墙
查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 service firewalld start
若无法开启则输入systemctl unmask firewalld.service,然后再输入systemctl start firewalld.service
3.查询指定端口是否已开启
firewall-cmd --query-port=3306/tcp
4. 添加指定需要开放的端口
firewall-cmd --add-port=3306/tcp --permanent
5.查看想开的端口是否已开
firewall-cmd --query-port=3306/tcp 注意:如果查询是no,则需要执行防火墙命令重载 firewall-cmd --reload
重载防火墙 firewall-cmd –reload
2.tomcat
1.下载JDK软件
https://www.oracle.com/java/technologies/downloads/#java17
2.登录root用户
3.通过findshell传输文件
5.解压缩
tar -zxvf /root/serve/jdk-17_linux-aarch64_bin.tar.gz -C /root/server
6.建立软连接
ln -s /root/server/jdk-17.0.10 /root/jdk
7.构建全局的环境变量
vim /etc/profile
export JAVA_HOME=/root/jdk
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
8.更改系统的java
1.which java
2.rm -f /usr/bin/java
9.构建tomcat
1.使用普通用户创建
2.创建
3.Nginx
1.安装yum依赖程序
yum install -y yum-utils