文章是自己学习linux做的笔记,这篇文章博主会慢慢来修改添加,把知识点的大部分都涵盖进去
目录我也会整理一下,让大家将这边博客当做学习的工具
安装操作步骤,这里建议直接找csdn上面的安装详细教程,博客里面都挺全的
linux用户
应用程序–系统工具–设置–背景、语言、网络、电源等
主文件夹,打开是登录root用户的家目录。
可以点击其他位置找到计算机查看根目录下的所有文件
/proc是一个虚拟文件系统,用于提供系统内核及进程信息的访问接口。
它可以让用户和应用程序查看和修改内核的运行状态、参数和统计信息,并提供了一些系统调试和性能分析的工具。
/proc文件系统中的文件代表了系统中各种资源的信息,如进程、内存、网络、设备、文件系统等。用户可以通过读取这些文件来获取系统的状态信息,也可以通过写入这些文件来修改系统的配置参数。
mkdir
显示工作目录
练习
3.基本的文件管理命令
touch
touch /home/wu/aa/{1…4}.txt
{ } 命令展开
| 管道符,将前一个命令的执行结果交给后一个命令去执行
cat
head、tail
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
tail
more、less
翻译网站 :www.deepl.com
stat 1.txt 查看文件的时间更改
rm (alias 中rm=‘rm -i’ 删除之前会交互询问)
rm -r recursive 递归
打包:默认情况下,Linux的压缩概念一次只能压缩一个文件。针对多文件或文件夹无法进行直接压缩。所以需要提前对多个文件或文件夹进行打包,这样才可以进行压缩操作。
1.txt 5MB
2.txt 10MB
3.txt 15MB
1.txt + 2.txt + 3.txt = 打包 = 123.tar = 30MB
打包只是把多个文件或文件夹打包放在一个文件中,但是并没有进行压缩,所以其大小还是原来所有文件的总和。
压缩:也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件所占用的磁盘空间比集合中所有文件大小的总和要小。
1.txt 5MB
2.txt 10MB
3.txt 15MB
1.txt + 2.txt + 3.txt = 压缩 = 123.tar.gz = 20MB(体积变小了)
基本语法:
# tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:
-c :打包
-f :filename,打包后的文件名称
-v :显示打包的进度
-u :update缩写,更新原打包文件中的文件(了解)
-t :查看打包的文件内容(了解)
案例:把a.txt、b.txt、c.txt文件打包到abc.tar文件中
# tar -cvf abc.tar a.txt b.txt c.txt
案例:把wechat文件夹进行打包wechat.tar
# tar -cvf wechat.tar wechat
# tar -tf 打包后的文件名称
主要功能:查看tar包中的文件信息
案例:查看abc.tar包中的文件信息
# tar -tf abc.tar
# tar -uf 打包后的文件名称
u = update,更新,如果还想往tar包中更新或追加内容都可以通过-u选项
案例:向abc.tar包中添加一个d.txt文件
# touch d.txt
# tar -uf abc.tar d.txt
查看是否添加成功
# tar -tf abc.tar
扩展:如何把tar包中的文件释放出来
打包
# tar -cf abc.tar a.txt b.txt c.txt
打包 => 释放(-c 变成 -x)
释放
# tar -xf abc.tar
基本语法:
# tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
-cf :对文件或文件夹进行打包
-v :显示压缩进度
-z :使用gzip压缩工具把打包后的文件压缩为.gz
-j :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J :使用xz压缩工具把打包后的文件压缩为.xz
压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz
100M 90M 80M 70M
案例:把a.txt、b.txt、c.txt文件打包并压缩为abc.tar.gz
# tar -zcf abc.tar.gz a.txt b.txt c.txt
案例:把wechat文件夹压缩为wechat.tar.gz格式的压缩包
# tar -zcf wechat.tar.gz wechat
解压过程非常简单,就是把压缩的参数中的c换成x就可以实现解压缩了
*.tar.gz格式的压缩包
# tar -zxf 名称.tar.gz
*.tar.bz2格式的压缩包
# tar -jxf 名称.tar.bz2
*.tar.xz格式的压缩包
# tar -Jxf 名称.tar.xz
案例:把abc.tar.gz格式的压缩包进行解压缩操作
# tar -zxf abc.tar.gz
案例:把wechat.tar.gz格式的压缩包进行解压缩操作
# tar -zxf wechat.tar.gz
基本语法:
# zip [选项] 压缩后的文件名称.zip 文件或文件夹
选项说明:
-r :递归压缩,主要针对的是文件夹
Linux下已经有gzip、bzip2以及xz压缩命令了,为什么还需要使用zip压缩呢?
答:zip格式在Windows以及Linux中都是可以正常使用的。
案例:把a.txt、b.txt、c.txt进行压缩为abc.zip
# zip abc.zip a.txt b.txt c.txt
案例:把wechat文件夹压缩为wechat.zip
# zip -r wechat.zip wechat
基本语法:
# unzip 压缩包名称 => 解压到当前目录
# unzip 压缩包名称 -d 指定路径 => 解压到指定路径下
案例:对abc.zip文件进行解压缩
# unzip abc.zip
案例:把wechat.zip解压到/usr/local/nginx目录下
# unzip wechat.zip -d /usr/local/nginx/
在Linux操作系统中,其拥有很多压缩工具,如gzip、bzip2、xz等等,但是其有一个缺点:
一次只能压缩一个文件(而且无法压缩文件夹)
① 打包,把一个或多个文件打成tar包,并不是压缩,只是把文件合并在一个tar文件中
1.txt 5MB
2.txt 10MB
3.txt 15MB
打包123.tar = 5MB + 10MB + 15MB = 30MB
为什么要打包,就是为了后期的压缩操作。
② 打包并压缩
# tar -zcf 压缩包名称.tar.gz 文件或文件夹名称
# tar -jcf 压缩包名称.tar.bz2 文件或文件夹名称
# tar -Jcf 压缩包名称.tar.xz 文件或文件夹名称
③ 解压缩
# tar 把c参数更换为x,就可以实现解压缩 压缩包名称.tar.gz
扩展:
# tar -zxf 压缩包名称.tar.gz [参数] 指定路径
第一种解决思路:随用随查,百度、Google
# tar -zxf 压缩包名称.tar.gz -C 指定路径
第二种解决思路:可以使用man命令(manual缩写,手册)
# man tar命令
# tar -zxf 压缩包名称.tar.gz -C 指定路径
④ zip压缩与解压缩
给我们提供一种既可以在Windows中使用的,也可以提供一种在Linux中使用的通用的压缩格式。
# zip [-r] 压缩包名称.zip 要压缩的文件或文件夹
解压缩:
# unzip 压缩包名称.zip -d 指定路径
vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。
Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。
Centos通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yj6Z3ipI-1690986862219)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day04/media/image-20200315093026701.png)]
有些精简版的Linux操作系统,默认并没有安装vim编辑器(可能自带的是vi编辑器)。当我们在终端中输入vim命令时,系统会提示"command not found"。
解决办法:有网的前提下,可以使用yum工具对vim编辑器进行安装
# yum install vim -y
使用VIM编辑器时,默认处于命令模式。在该模式下可以移动光标位置,可以通过快捷键对文件内容进行复制、粘贴、删除等操作。
在命令模式下输入小写字母a或小写字母i即可进入编辑模式,在该模式下可以对文件的内容进行编辑
在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作
可以做一些列选操作(通过方向键选择某些列的内容)
命令模式/编辑模式/末行模式/可视化模式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G8uLcToB-1690986862220)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day04/media/image-20200315094423790.png)]
基本语法:
# vim 文件名称
① 如果文件已存在,则直接打开
② 如果文件不存在,则vim编辑器会自动在内存中创建一个新文件
案例:使用vim命令打开readme.txt文件
# vim readme.txt
在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入wq,代表保存并退出。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ao7qZG1K-1690986862221)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day04/media/image-20200315102210869.png)]
在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入q!,代表强制退出但是不保存文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0s6oktG-1690986862221)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day04/media/image-20200315102248865.png)]
答:在Linux操作系统中,当我们使用vim命令直接打开某个文件时,默认进入的就是命令模式。如果我们处于其他模式(编辑模式、可视化模式以及末行模式)可以连续按两次Esc键也可以返回命令模式
① 移动光标 ② 复制 粘贴 ③ 剪切 粘贴 删除 ④ 撤销与恢复
移动光标到首行 => gg
移动光标到末行 => G
向上 翻屏,按键:ctrl + b (before) 或 PgUp
向下 翻屏,按键:ctrl + f (after) 或 PgDn
向上翻半屏,按键:ctrl + u (up)
向下翻半屏,按键:ctrl + d (down)
行号 + G,如150G代表快速移动光标到第150行。
① 复制当前行(光标所在那一行)
按键:yy
粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键
② 从当前行开始复制指定的行数,如复制5行,5yy
粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键
在VIM编辑器中,剪切与删除都是dd
如果剪切了文件,但是没有使用p进行粘贴,就是删除操作
如果剪切了文件,然后使用p进行粘贴,这就是剪切操作
① 剪切/删除当前光标所在行
按键:dd (删除之后下一行上移)
粘贴:p
注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
② 剪切/删除多行(从当前光标所在行开始计算)
按键:数字dd
粘贴:p
特殊用法:
③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)
撤销:u(undo)
恢复:ctrl + r 恢复(取消)之前的撤销操作【重做,redo】
① 怎么进入命令模式(vim 文件名称,在任意模式下,可以连续按两次Esc键即可返回命令模式)
② 命令模式能做什么?移动光标、复制/粘贴、剪切/删除、撤销与恢复
首行 => gg,末行 => G 翻屏(了解) 快速定位 行号G,如150G
yy p 5yy p
dd p 5dd p
u
ctrl + r
进入末行模式的方法只有一个,在命令模式下使用冒号:的方式进入。
文件保存、退出、查找与替换、显示行号、paste模式等等
:w => 代表对当前文件进行保存操作,但是其保存完成后,并没有退出这个文件
:q => 代表退出当前正在编辑的文件,但是一定要注意,文件必须先保存,然后才能退出
:wq => 代表文件先保存后退出(保存并退出)
如果一个文件在编辑时没有名字,则可以使用:wq 文件名称,代表把当前正在编辑的文件保存到指定的名称中,然后退出
:q! => 代表强制退出但是文件未保存(不建议使用)
切换到命令模式,然后输入斜杠/(也是进入末行模式的方式之一)
进入到末行模式后,输入要查找或搜索的关键词,然后回车
如果在一个文件中,存在多个满足条件的结果。在搜索结果中切换上/下一个结果:N/n (大写N代表上一个结果,小写n代表next)
如果需要取消高亮,则需要在末行模式中输入:noh
【no highlight】
第一步:首先要进入末行模式(在命令模式下输入冒号:)
第二步:根据需求替换内容
① 只替换光标所在这一行的第一个满足条件的结果(只能替换1次)
:s/要替换的关键词/替换后的关键词 + 回车
案例:把hello centos中的centos替换为centos7.6
切换光标到hello centos这一行
:s/centos/centos7.6
② 替换光标所在这一行中的所有满足条件的结果(替换多次,只能替换一行)
:s/要替换的关键词/替换后的关键词/g g=global全局替换
案例:把hello centos中的所有centos都替换为centos7.6
切换光标到hello centos这一行
:s/centos/centos7.6/g
③ 针对整个文档中的所有行进行替换,只替换每一行中满足条件的第一个结果
:%s/要替换的关键词/替换后的关键词
案例:把每一行中的第一个hello关键词都替换为hi
:%s/hello/hi
④ 针对整个文档中的所有关键词进行替换(只要满足条件就进行替换操作)
:%s/要替换的关键词/替换后的关键词/g
案例:替换整个文档中的hello关键词为hi
:%s/hello/hi/g
基本语法:
:set nu
nu = number,行号
取消行号 => :set nonu
为什么要使用paste模式?
问题:在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一行的开头,最终使代码变乱。
在粘贴数据之前,输入下面命令开启paste模式
:set paste
粘贴完毕后,输入下面命令关闭paste模式
:set nopaste
① 如何进入末行模式,必须从命令模式中使用冒号进行切换
② 末行模式下能做什么?保存、退出、查找、替换、显示行号以及paste模式
③ 保存 => :w
④ 退出 => :q,先保存后退出。:wq :wq 文件名称 :q!
⑤ 查找功能 => 命令模式输入/斜杠 + 关键词(高亮显示)=> :noh
⑥ 替换功能
/要替换的关键词/替换后的关键词
/要替换的关键词/替换后的关键词/g
:%s/要替换的关键词/替换后的关键词
:%s/要替换的关键词/替换后的关键词/g
⑦ 显示行号 => :set nu 取消行号 => :set nonu
⑧ paste模式 => 将来在粘贴代码的时候为了保存原格式 => 粘贴之前 => :set paste
编辑模式的作用比较简单,主要是实现对文件的内容进行编辑模式。
首先你需要进入到命令模式,然后使用小写字母a或小写字母i,进入编辑模式。
命令模式 + i : insert缩写,代表在光标之前插入内容
命令模式 + a : append缩写,代表在光标之后插入内容
在编辑模式中,直接按Esc,即可从编辑模式退出到命令模式。
在命令模式中,直接按ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑ ↓ ← →方向键来选中需要复制的区块,按下y 键进行复制(不要按下yy),最后按下p 键粘贴
退出可视模式按下Esc
第一步:在命令模式下,直接按小v,进入可视化模式
第二步:使用方向键↑ ↓ ← →选择要复制的内容,然后按y键
第三步:移动光标,停在需要粘贴的位置,按p键进行粘贴操作
第一步:按Esc退出到命令模式,按gg切换到第1行
第二步:然后按Ctrl+v进入到可视化区块模式(列模式)
第三步:在行首使用上下键选择需要注释的多行
第四步:按下键盘(大写)“I”键,进入插入模式(Shift + i)
第五步:输入#号注释符
第六步:输入完成后,连续按两次Esc即可完成添加多行注释的过程
第一步:按Esc退出到命令模式,按gg切换到第1行
第二步:然后按Ctrl+v进入可视化区块模式(列模式)
第三步:使用键盘上的方向键的上下选中需要移除的#号注释
第四步:直接按Delete键即可完成删除注释的操作
之前说过vim 是vi 的升级版本,其中比较典型的区别就是vim 更加适合coding,因为vim比vi 多一个代码着色的功能,这个功能主要是为程序员提供编程语言升的语法显示效果,如下:
第一步:定义后缀名为网页文件的代码文件
# vim index.php
第二步:编写对应的PHP代码
echo 'hello world';
?>
在VIM编辑器中,我们可以通过:syntax on
或:syntax off
开启或关闭代码着色功能。
什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MMzHfCq-1690986862222)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day04/media/image-20200315155600276.png)]
温馨提示:每个文件的异常文件都会有所不同,其命名规则一般为
.文件名称.swp
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可【在上述提示界面按下D 键或者使用rm 指令删除交换文件】
# rm .1.php.swp
回顾:在vim中,退出正在编辑的文件可以使用:q
或者:wq
除了上面的这个语法之外,vim 还支持另外一个保存退出(针对内容)方法:x
① :x
在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表
示保存并退出(:wq)
② 如果文件没有被修改,但是使用wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
基本语法:
# cat 文件名称
111
222
333
444
主要功能:正序输出文件的内容
基本语法:
# cat 文件名称1 文件名称2 ... > 合并后的文件名称
主要功能:把文件名称1、文件名称2、…中的内容的合并到一个文件中
基本语法:
# tac 文件名称
444
333
222
111
主要功能:倒序输出文件的内容
基本语法:
# head -n 文件名称
主要功能:查看一个文件的前n 行,如果不指定n,则默认显示前10 行
案例:查询linux.txt文件中的前10行
# head linux.txt
案例:查询linux.txt文件中的前3行
# head -3 linux.txt
基本语法:
# tail -n 文件名称
主要功能:查看一个文件的最后n 行,如果不指定n,则默认显示最后10 行
案例:查询linux.txt文件的最后10行
# tail linux.txt
案例:查询linux.txt文件的最后3行
# tail -3 linux.txt
基本语法:
# tail -f 文件名称
主要功能:动态查看一个文件内容的输出信息(主要用于将来查询日志文件的变化)
案例:查询系统的/var/log/messages文件的日志信息
# tail -f /var/log/messages
退出方式可以直接按快捷键:Ctrl + C,中断操作
cat命令、tac命令、head命令、tail命令、扩展:tail -f动态查看一个文件的内容
基本语法:
# more 文件名称
特别注意:more命令在加载文件时并不是一点一点进行加载,而是打开文件时就已经把文件的全部内容加载到内存中了。如果打开文件较大,则可能会出现卡顿情况。
more命令拥有一些交互功能,可以通过快捷键进行操作这个more的阅读器。
回车键 | 向下移动一行。 |
---|---|
d | 向下移动半页。 |
空格键 | 向下移动一页。 |
b | 向上移动一页,后期引入功能,早期more只能前进不能后退 |
q | 退出 more。 |
早期more命令没有现在这么强大,其只能前进不能后退
基本语法:
# less 文件名称
特别注意:less命令不是加载整个文件到内存,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。
另外:less可以通过上下方向键显示上下内容,退出时不会在Shell中留下刚显示的内容
less 命令的执行也会打开一个交互界面,下面是一些常用交互命令(和more类似):
按键 | 功能 |
---|---|
回车键 | 向下移动一行。 |
d | 向下移动半页。 |
空格键 | 向下移动一页。 |
b | 向上移动一页。 |
上下方向键 | 向上与向下移动,less命令特有功能键 |
less -N 文件名称 | 显示行号 |
/ 字符串 | 搜索指定的字符串。 |
q | 退出less |
cat,more,less三者的对比:
cat | more | less | |
---|---|---|---|
作用 | 显示小文件(一屏以内) | 显示大文件(超过一屏) | 显示大文件(超过一屏) |
交互命令 | 无 | 有 | 有 |
上下键翻行 | 无 | 无 | 有 |
(word count)
基本语法:
# wc [选项] 文件名称
选项说明:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字符数(空格,回车,换行)
案例:统计linux.txt文件的总行数
# wc -l linux.txt
案例:统计linux.txt文件中的单词数
# wc -w linux.txt
案例:统计文件的字节数(数字、字母一般1个字符=1个字节,中文和编码格式有关,如utf-8编码格式,1个汉字占用3个字节)
# wc -c linux.txt
扩展:wc [选项] 文件的名称可以统计一个文件的信息,实际情况下,我们选项还可以一起使用
案例:统计一个文件的总行数、总单词数以及总字节数
# wc -wlc linux.txt
或
# wc -lwc linux.txt
或
# wc -clw linux.txt
windows系统存储的最小单位簇
基本语法:
# du [选项] 统计的文件或文件夹
选项说明:
-s :summaries(摘要,汇总),只显示汇总的大小,统计文件夹的大小
-h :以较高的可读性显示文件或文件夹的大小,(KB/MB/GB/TB)
主要功能:查看文件或目录(会递归显示子目录)占用磁盘空间大小
案例:显示readme.txt文件的大小(占用磁盘空间,不显示文件大小的单位)
# du readme.txt
案例:显示readme.txt文件的大小(占用磁盘空间,显示文件大小的单位)
# du -h readme.txt
案例:统计wechat文件夹的大小
# du -sh wechat
案例:统计/etc目录的大小
# du -sh /etc
*****
基本语法:
# find 搜索路径 [选项]
选项说明:
-name:指定要搜索文件的名称,支持*星号通配符(Shift + 8)
-type:代表搜索的文件类型,f代表普通文件,d代表文件夹=>加快检索速度
-size n(数字): 大小,c-字节 w-单词 k-1024字节 M,G
*通配符 代表多个字符
?通配符 代表一个字符
主要功能:当我们查找一个文件时,必须使用的一个命令。
案例:搜索/var目录中boot.log文件**(普通文件)**
# find /var -name "boot.log" -type f(这里普通文件不是-是f)
案例:全盘搜索ssh目录
# find / -name "ssh" -type d
特别注意:实际工作时,尽量减少全盘检索,比较消耗资源
扩展功能:find实现模糊查询(必须结合通配符)
案例:搜索/var/log目录下的所有的以".log"结尾的文件信息
# find /var/log -name "*.log" -type f
* :通配符,代表任意个任意字符。如*.log代表以.log结尾的文件,apache*代表搜索以apache开头的文件信息
*****
基本语法:
# grep [选项] 要搜索的关键词 搜索的文件名称
选项说明:
-n :代表显示包含关键词的行号信息
-v : 取反 grep "#" -v /etc/my.cnf 显示不带#的行
**单位:行,**一行一行向下搜索
主要功能:在文件中直接找到包含指定关键词的那些行,并把这些信息高亮显示出来
案例:在/etc/passwd文件中搜索包含关键词"root"的行
# grep root /etc/passwd
案例:在initial-setup-ks.cfg文件中搜索包含关键词"network"的行,然后显示行号信息
# grep -n network initial-setup-ks.cfg
扩展语法:
# grep 要搜索的关键词 多个文件的名称
主要功能:在多个文件中查找包含指定关键词的那些行,并高亮显示出来
案例:搜索/var/log目录下所有文件,找到包含关键词"network"的所有行信息
# grep network /var/log/*
案例:显示/etc/my.cnf中带#的行
grep “#” /etc/my.cnf
案例:不显示/etc/my.cnf中带#的行
grep “#” -v /etc/my.cnf
案例:显示有效内容,不显示#行和空白行
grep ^# /etc/my.cnf #^以#开头
grep bash$ /etc/my.cnf #以bash结尾
grep ^$ /etc/my.cnf #显示空白行
egrep -v "^$|^#" /etc/my.cnf
grep -v "^#" /etc/my.cnf | grep -v "^$"
grep命令的增强版,因为grep不支持正则表达式
标准输入(stdin,standardinput)
标准输出(stdout,standardoutput)
基本语法:
# echo "文本内容"
主要功能:在终端中输入指定的文本内容
案例:在终端中,输出hello world字符串
# echo "hello world"
场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
> :标准输出重定向 : 覆盖输出,会覆盖掉原先的文件内容
>>:追加重定向 : 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
案例:把echo输出的"hello world"写入到readme.txt文件中
# echo "hello world" > readme.txt
以上程序的主要功能代表把echo命令的执行结果,输出写入到readme.txt文件中,如果readme.txt文件中存在内容,则首先清空,然后在写入hello world
案例:把echo输出的"hello linux"写入到readme.txt,要求不能覆盖原来的内容
# echo "hello linux" >> readme.txt
服务器要添加多账户的作用
针对不同用户分配不同的权限,不同权限可以限制用户可以访问到的系统资源
提高系统的安全性
帮助系统管理员对使用系统的用户进行跟踪
理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的主组。同时,有些情况下,某个用户需要临时使用某个组的权限,那这个组就称之为这个用户的附属组或附加组。
主组只能拥有一个,但是附属组或附加组可以同时拥有多个 => 亲爹,干爹(多个)
用户组的操作无疑三件事:用户组的添加、用户组的修改以及用户组的删除操作
组:group
添加:add
修改:mod
删除:del
基本语法:
# groupadd [选项] 用户组的组名称
选项说明:
-g :代表用户组的组ID编号,自定义组必须从1000开始,不能重复
案例:在系统中添加一个hr的用户组
# groupadd hr
案例:在系统中添加一个test的用户组并指定定编号1100
# groupadd -g 1100 test
问题:我们刚才创建的hr以及test用户组到底添加到哪里了?
答:默认情况下,我们添加的用户组都会放在一个系统文件中,文件位置=>/etc/group
# tail -3 /etc/group
root:x:0:
ithei:x:1000:
由以上命令的执行结果可知,在/etc/group文件中,其一共拥有三个冒号,共四列。每列含义:
第一列:用户组的组名称
第二列:用户组的组密码,使用一个x占位符
第三列:用户组的组ID编号,1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号
CentOS6 => 1-499,500...
CentOS7 => 1-999,1000...
第四列:用户组内的用户信息(如果一个用户的附属组或附加组为这个组名,则显示在此位置)
基本语法:
# groupmod [选项 选项的值] 原来组的组名称
选项说明:
-g :gid缩写,设置一个自定义的用户组ID数字,1000以后
-n :name缩写,设置新的用户组的名称
案例:把hr用户组更名为szhr
# groupmod -n szhr hr
案例:把test用户组的组编号由1100更改为1003
# groupmod -g 1003 test
案例:把itcast组的组名称更改为admin且用户组的组编号更改为1004
# groupmod -g 1004 -n admin itcast
基本语法:
# groupdel 用户组名称
案例:使用groupdel删除test用户组
# groupdel test
用户:user
添加:add addtion
修改:mod modify
删除:del
基本语法:
# useradd [选项 选项的值] 用户名称
选项说明:
-g :代表添加用户时指定用户所属组的主组,唯一的组信息(重要)
-s :代表指定用户可以使用的Shell类型,默认为/bin/bash(拥有大部分权限)还可以是/sbin/nologin,代表账号创建成功,但是不能用于登录操作系统。
/bin/bash => 给人使用的(运维工程师)
/sbin/nologin => 给软件使用的
-G :代表添加用户时指定用户所属组的附属组或附加组,可以指定多个,用逗号隔开即可(了解)
-u :代表添加用户时指定的用户ID编号,CentOS6从500开始,CentOS7中从1000开始(了解)
-d :代表用户的家目录,默认为/home/用户名称。可以使用-d进行更改
-n :取消建立以用户名称为名的群组(了解)
-c :代表用户的备注信息,cqw:123456:(陈权伟的账号)
案例:在系统中创建一个linuxuser账号
# useradd linuxuser
问题:我们并没有为linuxuser账号指定所属的主组,可以成功创建账号么?
答:可以,因为在创建账号时,如果没有明确指定用户所属的主组,默认情况下,系统会自动在用户组中创建一个与用户linuxuser同名的用户组,这个组就是这个用户的主组。
问题:刚才创建的linuxuser账号能不能用于登录操作系统
答:不行,因为Linux的登录账号必须要求有密码,如果一个账号没有密码是无法登录操作系统的。
案例:在系统中创建一个账号zhangsan,指定用户所属的主组为itheima
第一步:查询一下ith的组ID编号
# tail -5 /etc/group
ith:x:1000:
第二步:根据组的编号添加用户
# useradd -g 1000 zhangsan
案例:在系统中创建一个账号lisi,指定主组为ith,此用户只能被软件所使用,不能用于登录操作系统
# useradd -g 1000 -s /sbin/nologin lisi
案例:在系统中创建一个wangwu,指定主组为wangwu,附属组为it
# useradd -G 1000 wangwu
基本语法:
# id 用户名称
主要功能:查询某个指定的用户信息
案例:查询linuxuser用户的信息
# id linuxuser
uid=1002(linuxuser) gid=1005(linuxuser) groups=1005(linuxuser)
uid:用户编号
gid:用户所属的主组的编号
groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息
groupadd :组添加
groupmod:组修改
groupdel:组删除
与用户组相关的文件/etc/group,一共拥有4列
itheima:x:1000:
1-组名称
2-组密码
3-组编号
4-组内用户信息(这个组必须是这个用户的附属组或附加组)
useradd用户的添加
# useradd [选项 选项的值] 用户名称
选项说明:
-g :指定用户的主组的编号信息
-s :指定用户可以使用的Shell类型
/bin/bash :给人用的,给运维工程师
/sbin/nologin :给软件用的,比如mysql
-G :指定附属组的ID编号,如果有多个附属组,可以使用逗号隔开 useradd -G 1000,1001 ..
-d :指定用户的家,/home/itheima,useradd -d /itheima itheima
-u :指定用户的ID编号,默认是自动生成的
-c :comment,注释信息,scj:x:uid:gid:宋楚杰的账号
-n :取消以用户名称命名的组信息
id命令
# id itheima
组:/etc/group文件
用户:/etc/passwd文件,每创建一个用户,其就会在此文件中追加一行
# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
由上图可知,一共拥有7列
第1列:用户名称
第2列:用户的密码,使用一个x占位符,真实密码存储在/etc/shadow(1-用户名,2-加密密码)
第3列:数字,用户的ID编号
第4列:数字,用户的主组ID编号
第5列:代表注释信息,useradd -c "备注信息" 用户名称
第6列:用户的家目录,默认在/home/用户名称
第7列:用户可以使用的Shell类型,useradd -s /bin/bash或/sbin/nologin 用户名称
用户:user,添加:add,修改:mod,删除:del
基本语法:
# usermod [选项 选项的值] 用户名称
选项说明:
-g :修改用户所属的主组的编号
-l :login name修改用户的名称
-s :修改用户可以使用的Shell类型,如/bin/bash => /sbin/nologin
扩展:
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock
了解:
-G :修改用户附属组的编号信息
-d :修改用户的家目录
-c :修改用户的备注信息
案例:修改zhangsan账号信息,更名为zs
# usermod -l zs zhangsan
案例:修改wangwu账号信息,把用户的主组的编号更新为1000(itheima)
# usermod -g 1000 wangwu
案例:禁止linuxuser账号登录Linux操作系统
# usermod -s /sbin/nologin linuxuser
案例:禁止linux用户登录操作(Ctrl + Alt + F2 ~ F6)
Linux系统除了默认的图形化界面,其实还有5个隐藏的字符界面,按Ctrl + Alt + F1~F6
有些电脑开启Fn功能键,所以如果Ctrl + Alt + F1~F6不生效,则可以按Ctrl + Alt + Fn + F1~F6
# usermod -L linux
案例:解锁linux用户
# usermod -U linux
问题:账号已经解锁,但是无法登录
① 当前账号没有设置密码,因为Linux操作系统不允许没有密码的操作进行登录
② 当前用户的Shell类型为/sbin/nologin,所以其无法登录
基本语法:
# passwd 用户名称
主要功能:为某个用户设置密码(添加或修改),可以给自己也可以给别人设置
案例:修改自己的密码
[root@yunwei ~]# passwd
案例:为linux账号添加一个密码,密码:123456
[root@yunwei ~]# passwd linux
特别注意:在Linux操作系统中,如果一个账号没有密码,则无法登录操作系统。
基本语法:
# su [-] root
选项:
- :横杠(减号),代表切换用户的同时,切换目录到用户的家
主要功能:切换用户的账号
从超级管理员切换到普通用户,root => itheima,不需要输入itheima的密码
从普通账号切换到超级管理员,itheima => root,需要输入root的密码
从普通账号切换到普通账号,itheima => linuxuser,也需要输入linuxuser密码
Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su‘户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效
基本语法:
# userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家(默认不删除)
案例:删除用户但是不删除用户的家目录
# userdel zs
案例:删除用户的同时删除用户的家目录
# userdel -r lisi
删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)
扩展:当我们想要删除某个账号时,系统提示当前账号正在被某个进程所使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TG9TWBG6-1690986862222)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318114052650.png)]
解决方案:
第一种方案:找到登录的这个用户,然后将其直接注销
第二种方案:
# kill [-9] 进程的ID编号
选项说明:-9代表强制结束某个进程
主要功能:用于结束某个进程的继续运行
案例:结束11565进程
# kill 11565
简单粗暴,kill 对应用户的全部进程(尽量斩草除根,结束父进程)
# ps -ef |grep linux
ps命令:查看进程
-ef :查看系统的所有进程
|:管道命令
grep linux:搜索包含了linux关键词的所有进程
结束完成后,再次使用userdel删除即可
“|”,竖线
作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVs9Vtr2-1690986862222)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318140553750.png)]
0 (文件描述符): 标准输入,程序或命令需要外部的某些程序传递相应的参数,才能正常运行
1 :标准输出,程序或命令正确的执行结果,我们就称之为标准输出
2 :标准错误,程序或命令错误的执行结果,我们就称之为标准错误
基本语法:
# 前一个命令 | 后一个命令
案例:获取/根目录下包含关键字"y"的文件信息
# ls / | grep y
解析:
| :管道符号,作用=>把ls /的正确的执行结果作为参数传递给grep命令
ls / :管道左边的命令
grep y :管道右边的命令
grep命令的基本语法 => grep 关键字 文件名称
案例:检索系统中的已安装文件,只筛选mariadb软件信息
# rpm -qa | grep mariadb
-q :query,查询
-a :all,所有
案例:在系统的进程中进行查找,查找与itheima相关的进程信息
# ps -ef | grep bash
ps -ef :查询系统中所有正在运行的进程
通过管道的操作方法来实现less 的等价效果(了解)
例如:源指令是"less xxx.txt",使用管道的话则可以写成:cat xxx.txt | less
# less initial-setup-ks.cfg
更改为管道命令
# cat initial-setup-ks.cfg | less
回顾:wc命令,word count,文件统计功能
# wc [选项] 文件名称
选项说明:
-l : 统计总行数
-w : word,总单词数
-c : 统计总字节数
案例:统计/根目录下一共有多少个文件
# ls / | wc -l
案例:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息(一个用户一行)
# cat /etc/passwd | wc -l
问题:为什么需要xargs命令?
答:之所以能用到这个命令,关键是由于**很多命令不支持 | 管道(find)**来传递参数,而日常工作中又有这个必要,所以就有了 xargs 命令。
简单来说,xargs命令就相当于对管道命令进行了一个扩展,让所有命令都支持管道
案例:搜索/etc目录下的所有".conf"结尾的文件信息,然后以详细列表形式显示
# find /etc -name "*.conf" | ls -l
解决方案,在ls命令之前添加一个xargs命令,这样ls命令就支持管道了,可以用于接收前一个命令的执行结果
# find /etc -name "*.conf" | xargs ls -l
基本语法:
# ifconfig
Windows => ipconfig Linux => ifconfig
第一步:连接网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHmIY9Is-1690986862223)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318153054968.png)]
第二步:使用ifconfig命令,获取计算机的网络信息
# ifconfig
ens33: flags=4163,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.1.16 netmask 255.255.255.0 broadcast 10.1.1.255
inet6 fe80::e472:7b78:c871:8e12 prefixlen 64 scopeid 0x20
ether 00:0c:29:48:bf:f9 txqueuelen 1000 (Ethernet)
RX packets 254 bytes 54837 (53.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 287 bytes 42006 (41.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
解析:inet 10.1.1.16 netmask 255.255.255.0 broadcast 10.1.1.255
inet 10.1.1.16 :代表ens33网卡的IP地址,将来远程连接就是用这个IP
netmask :子网掩码,一般为255.255.255.0
broadcast :广播地址,10.1.1.255
CentOS6 => eth0 , CentOS7 => ens33
ens33 :是默认的网卡,我们获取的IP也要从这个网卡中获取
lo(loop,循环):表示回环网卡,只有一个固定的IP地址,127.0.0.1代表本机
virbr0:虚拟网络接口,因为咱们使用vmware虚拟机安装Centos,所以其会产生virbr0虚拟网络接口
Linux系统中,一切皆文件。所以保存网络信息的也是通过一个文件来完成的。
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
UUID="6c809893-d12c-46af-9987-4c05b2773c91"
DEVICE="ens33"
ONBOOT="yes"
参数解析:
TYPE :网络类型,Ethernet以太网
BOOTPROTO:IP的获取方式,dhcp代表自动获取,static/none代表手工设置
NAME :网卡的名称(名字),ens33
UUID :代表网卡的UUID编号(必须是唯一的)
DEVICE :设备名称
ONBOOT :代表网卡是否随计算机开启启动,yes随计算机开机启动,no代表不启动
基本语法:
# systemctl status network
systemctl = system + control = 系统控制
主要功能:查询计算机网络的状态,网络是否正常连接。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15rws3l6-1690986862223)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318160415929.png)]
Active : active(正常)或 inactive(dead,网络状态不正常没有连接)
# systemctl start network
# systemctl stop network
# systemctl restart network
选项解析:
start :启动
stop :停止
restart :重启
##5、ip4的基本知识
A类地址 前8个bit是网络地址,后24bit是主机地址 (1-126)开头是A类
1 网段,主机ip地址1600万个ip地址 (美国一个大公司就会有一个a类地址 )
B类地址 前16个bit是网段,后16bit是主机地址 (128-191)开头是B类
如果有1个b类地址 172.17 ip地址65534个
C类地址 前24个bit是网段,后8bit是主机地址 (192-223) 开头的是C类地址
192.168.1. 拥有254个有效ip地址
D类地址 组播地址(节省服务器的资源) (224-239)开头是D类地址
E类地址 用于科学计算的
ipv4 分为两大类地址 公有地址,私有地址
只有公有地址,才能被其他人访问
私有地址,只能在内部局域网发布,
a类地址有一个私有地址:10.0.0.0
b类地址 172.16 -172.31
c类地址 192.168.0- 192.168.255
nat 网络地址转换
ipv6 128bit 估算 大概世界上的每一个沙子都可以分配一个ip地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrwLKY1B-1690986862224)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318163657190.png)]
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
当我们在计算机中安装了sshd软件,启动后,就会在进程中产生一个sshd进程,其遵循计算机的SSH协议。默认情况下,sshd服务随系统自动安装的。
# systemctl status sshd
SSH协议,其规则了远程连接与传输的端口号,所以sshd服务启动后,就会占用计算机的22号端口。
端口号能解决什么问题?答:能让我们的计算机区分出不同的服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xMq1WAm6-1690986862224)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318164340849.png)]
官网:www.putty.org
PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。
官网:www.vandyke.com
SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。(颜色方案不是特别好看)
官网:www.netsarang.com
Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
缺点:收费
官网:https://mobaxterm.mobatek.net/
① 获取Linux的的IP地址
# ifconfig
10.1.1.16
② 打开MX软件,单击Session,创建一个SSH远程连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9bOyYVf-1690986862224)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318170051275.png)]
③ 设置书签(给这台服务器起个名字)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnMrVf23-1690986862225)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318170217196.png)]
④ 输入CentOS7.6的root管理员密码
管理员:root
密 码:123456
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3rjSwv5-1690986862225)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318170322945.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z69J8Q7p-1690986862225)(…/…/…/%E8%BF%90%E7%BB%B4/2023%E8%B5%84%E6%96%99/%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86%20linux%E5%9F%BA%E7%A1%80/%E8%A7%86%E9%A2%91/01.%E9%98%B6%E6%AE%B5%E4%B8%80/day06/media/image-20200318170715403.png)]
= 系统控制
主要功能:查询计算机网络的状态,网络是否正常连接。
[外链图片转存中...(img-15rws3l6-1690986862223)]
Active : active(正常)或 inactive(dead,网络状态不正常没有连接)
## 4、systemctl启动/重启/停止网络
```powershell
# systemctl start network
# systemctl stop network
# systemctl restart network
选项解析:
start :启动
stop :停止
restart :重启
##5、ip4的基本知识
A类地址 前8个bit是网络地址,后24bit是主机地址 (1-126)开头是A类
1 网段,主机ip地址1600万个ip地址 (美国一个大公司就会有一个a类地址 )
B类地址 前16个bit是网段,后16bit是主机地址 (128-191)开头是B类
如果有1个b类地址 172.17 ip地址65534个
C类地址 前24个bit是网段,后8bit是主机地址 (192-223) 开头的是C类地址
192.168.1. 拥有254个有效ip地址
D类地址 组播地址(节省服务器的资源) (224-239)开头是D类地址
E类地址 用于科学计算的
ipv4 分为两大类地址 公有地址,私有地址
只有公有地址,才能被其他人访问
私有地址,只能在内部局域网发布,
a类地址有一个私有地址:10.0.0.0
b类地址 172.16 -172.31
c类地址 192.168.0- 192.168.255
nat 网络地址转换
ipv6 128bit 估算 大概世界上的每一个沙子都可以分配一个ip地址
[外链图片转存中…(img-lrwLKY1B-1690986862224)]
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
当我们在计算机中安装了sshd软件,启动后,就会在进程中产生一个sshd进程,其遵循计算机的SSH协议。默认情况下,sshd服务随系统自动安装的。
# systemctl status sshd
SSH协议,其规则了远程连接与传输的端口号,所以sshd服务启动后,就会占用计算机的22号端口。
端口号能解决什么问题?答:能让我们的计算机区分出不同的服务
[外链图片转存中…(img-xMq1WAm6-1690986862224)]
官网:www.putty.org
PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。
官网:www.vandyke.com
SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。(颜色方案不是特别好看)
官网:www.netsarang.com
Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
缺点:收费
官网:https://mobaxterm.mobatek.net/
① 获取Linux的的IP地址
# ifconfig
10.1.1.16
② 打开MX软件,单击Session,创建一个SSH远程连接
[外链图片转存中…(img-m9bOyYVf-1690986862224)]
③ 设置书签(给这台服务器起个名字)
[外链图片转存中…(img-VnMrVf23-1690986862225)]
④ 输入CentOS7.6的root管理员密码
管理员:root
密 码:123456
[外链图片转存中…(img-o3rjSwv5-1690986862225)]
[外链图片转存中…(img-z69J8Q7p-1690986862225)]
在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利。
在Linux 中分别有读、写、执行权限:
权限针对文件 权限针对目录
读r 表示可以查看文件内容;cat 表示可以(ls)查看目录中存在的文件名称
写w 表示可以更改文件的内容;vim 修改,保存退出 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir)
执行x 表示是否可以开启文件当中记录的程序,一般指二进制文件(.sh) => 绿色 表示是否可以进入目录中(cd)
注:一般给予目录读权限时,也将会给其执行权限,属于“套餐”组合
可读权限 read => r(简写),可写权限 write => w(简写),可执行权限 excute => x(简写)
1)服务器中的数据价值
2)员工的工作职责和分工不同
3)应对自外部的攻击(挂马)
4)内部管理的需要
Linux 系统一般将文件权限分为3 类:
read(读)
write(写)
execute(执行)
谁对文件有读,写,执行的权限呢? 答:针对三大类用户
文件的拥有者:默认情况下,谁创建了这个文件谁就是文件的拥有者。文件的拥有者可以进行更改并不是一成不变的。
裴凯 => linux.txt,默认情况下,裴凯就是linux.txt文件的拥有者
group所属组内用户代表与文件的所属组相同的组内用户。
比如,裴凯与罗新兴、周卓都同属于一个itheima的用户组,罗新兴和周卓就是这个文件的组内用户。
other其他用户代表这些人既不是文件的拥有者,也不是文件所属组内的用户,我们把这些人就称之为other其他用户。
在Linux操作系统中,root拥有最高权限(针对所有文件),所以权限设置对root账号没有效果。
在Linux系统中,三大类用户也可以拥有简写形式user(u)、group(g)、other(o)
基本语法:
# ls -l
或
# ll
备注:ll命令是红帽以及CentOS系统特有的一个命令,在其他操作系统中可能并不支持
Linux一共有7种文件类型,分别如下:
-:普通文件
d:目录文件
l: 软链接(类似Windows的快捷方式)
(下面四种是特殊文件)
b:block,块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如猫(上网猫)等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)
基本语法:ch = change mod简单理解权限
# chmod [选项] 权限设置 文件或目录的名称
选项说明:
-R :递归设置,针对文件夹(目录)
重点:字母设置并不难,重点看三方面
第一个:确认要给哪个身份设置权限,u、g、o、ugo(a)
第二个:确认是添加权限(+)、删除权限(-)还是赋予权限(=)
第三个:确认给这个用户针对这个文件或文件夹设置什么样的权限,r、w、x
案例:给readme.txt文件的拥有者,增加一个可执行权限
# chmod u+x readme.txt
案例:把readme.txt文件的拥有者的可执行权限去除
# chmod u-x readme.txt
案例:为readme.txt中的所属组内用户赋予rw权限
# chmod g=rw readme.txt
案例:给shop目录及其内部的文件统一添加w可写权限
# chmod -R ugo+w shop
或
# chomd -R a+w shop
案例:给shop目录设置权限,要求拥有者rwx,组内用户r-x,其他用户r-x
# chmod -R u=rwx,g=r-x,o=r-x shop
经常会在技术网站上看到类似于# chmod 777 a.txt 这样的命令,这种形式称之为数字形式权限。
文件权限与数字的对应关系,我们会发现没有7这个数字
权限 对应数字 意义
r 4 可读
w 2 可写
x 1 可执行
0 没有权限
777 :
第一个数字7,代表文件拥有者权限
第二个数字7,代表文件所属组内用户权限
第三个数字7,代表其他用户权限
rwx = 4 + 2 + 1 = 7
rw = 4 + 2 = 6
rx = 4 + 1 = 5
案例:给readme.txt设置权限,文件的拥有者rwx,组内用户rw,其他用户r
rwx = 7
rw = 6
r = 4
# chmod 764 readme.txt
案例:给shop文件夹设置777权限
# chmod -R 777 shop
问题:用超级管理员设置文档的权限命令是# chmod -R 731 shop,请问这个命令有没有什么不合理的地方?
答:731权限进行拆解
7 = 4 + 2 + 1 = rwx
3 = 2 + 1 = wx
1 = x
问题在权限731中的3权限,3表示写+执行权限,但是写又必须需要能打开之后才可以写,因此必须需要具备可读权限,因此此权限设置不合理。
注:实际工作中,各位小伙伴在设置权限时一定不要设置这种"奇葩权限",一般情况下,单独出现2、3的权限数字一般都是有问题的权限。
1)使用root 用户设置文件夹/root/shop 的权限为:属主全部权限,属组拥有读和执行权限,其他用户没有权限,请使用数字权限的形式设置
rwx=7,rx=4+1=5,0
# chmod -R 750 /root/shop
2)请置文件/root/readme.txt 的权限,权限要求为:
属主拥有全部权限,属组要求可以读写,其他用户只读,要求使用数字形式;
rwx=7,rw=4+2=6,r=4
# chmod 764 /root/readme.txt
3)请设置/root/email.doc权限,权限要求只有属主可以读写,除此之外任何人没有权限;
rw=6,0,0
# chmod 600 /root/email.doc
在Linux 中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除(同时必须具备执行权限)。
/shell/readme.txt
我们想删除readme.txt文件,必须要对shell目录具有可写权限,否则文件无法删除
文件拥有者:属主
文件所属组:属组
属主:所属的用户,文档所有者,这是一个账户,这是一个人
属组:所属的用户组,这是一个组
# ls -l
或
# ll
在Linux操作系统中,每个文件都是由Linux系统用户创建的。
在Linux操作系统中,每个用户都具有一个用户名称以及一个主组的概念
# su - itheima
# touch readme.txt
# ll readme.txt
-rw-rw-r--. 1 itheima itheima 0 Mar 20 15:17 readme.txt
一个财务表格,以前由胡一菲进行更新,她有读写权限,现在胡一菲去阿拉善沙漠找曾老师了,改权限没用,需要把属主改成诸葛大力,由诸葛大力更新。
基本语法:ch = change ,own = owner
# chown [选项] 新文件拥有者名称 文件名称
选项说明:
-R :代表递归修改,主要针对文件夹
案例:把/root/readme.txt文件的拥有者更改为itheima
# chown itheima /root/readme.txt
案例:把/root/shop文件夹的拥有者更改为linuxuser
# chown -R linuxuser /root/shop
基本语法: ch = change , group,chgrp
# chgrp [选项] 新文件所属组名称 文件名称
选项说明:
-R : 代表递归修改,主要针对文件夹
案例:把/root/readme.txt文件的所属组名称更改为itheima
# chgrp itheima /root/readme.txt
案例:把/root/shop文件夹的所属组名称也更改为itheima
# chgrp -R itheima /root/shop
基本语法:
# chown [选项] 文件拥有者名称:文件所属组名称 文件名称
或
# chown [选项] 文件拥有者名称.文件所属组名称 文件名称
选项说明:
-R : 代表递归修改,主要针对文件夹
案例:readme.txt文件的拥有者与所属组同时更改为root
# chown root:root readme.txt
或
# chown root.root readme.txt
案例:更改shop目录的拥有者以及所属组为root
# chown -R root:root shop
或
# chown -R root.root shop
什么是特殊权限?
但文件夹或文件被赋予特殊权限时,将占x(执行)位,x权限将会变成特殊字符s、t
rws(1.所有者) rws(2.所属组)rwt(3.其它用户)
1.即使不是文件所有者也可以拥有文件所有者的权利
2.在拥有这个属性的目录内创建的文件,所属组都属于这个目录的所属组,不属于创建人本身
3.在拥有这个属性的目录内创建的东西,除了root和创建者,谁都不能删除
☆ 设置位S的作用
作用:为了让一般使用者临时具有该文件所属主/组的执行权限。
主要针对二进制文件(命令)
例如:/usr/bin/passwd在执行它的时候需要去修改/etc/passwd和/etc/shadow等文件,这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,该怎么办呢?
whereis命令,主要功能就是查询某个命令所在的路径,基本语法 => whereis passwd
itheima普通账号 => 执行/usr/bin/passwd => 修改/etc/shadow文件(存放用户的密码)
/etc/shadow文件比较特殊,其权限为— — —(000),除root外,其他人都没有权限
☆ 去除S位权限
# chmod u-s /usr/bin/passwd
或者
# chmod 0755 /usr/bin/passwd
☆ 添加S位权限
# chmod u+s /usr/bin/passwd
或者
# chmod 4755 /usr/bin/passwd
☆ 粘滞位作用
基本语法:
# chmod -R o+t 文件夹的名称
或
# chmod -R 1777 文件夹的名称
主要功能:只允许文件的创建者和root用户删除文件(防止误删除权限位)
案例:/tmp文件夹,拥有最高权限777,比如itheima创建了一个文件在此目录,linuxuser用户可以对其进行删除操作,这种显然不太合适。
7 = r + w + x = 可读、可写、可执行
案例:使用ls -l命令查看/tmp目录权限
# ls -ld /tmp
或
# ll -d /tmp
☆ 移除粘滞位
# chmod -R o-t /tmp
或
# chmod -R 0777 /tmp
☆ 添加粘滞位
# chmod -R o+t /tmp
或
# chmod -R 1777 /tmp
ACL,是 Access Control List(访问控制列表)的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。
扩展:ACL权限可以针对某个用户,也可以针对某个组。ACL优势就是让权限控制更加的精准。
基本语法:
# getfacl 文件或目录名称
# setfacl [选项] 文件或目录名称
选项说明:
-m : 修改acl策略
-x : 去掉某个用户或者某个组的权限
-b : 删除所有的acl策略
-R :递归,通常用在文件夹
案例:针对readme.txt文件给linuxuser设置一个权限=>可读
# setfacl -m u:linuxuser:r readme.txt => 针对某个用户开通ACL权限
案例:针对shop文件夹给itheima组设置一个权限=>可读可写权限rw
# setfacl -R -m g:itheima:rw shop => 针对某个用户组开通ACL权限
案例:把linuxuser用户权限从readme.txt中移除掉
# setfacl -x u:linuxuser readme.txt
案例:把itheima用户组权限从shop中移除掉
# setfacl -x -R g:itheima shop
案例:把readme.txt文件中的所有ACL权限全部移除
# setfacl -b readme.txt
umask表示创建文件时的默认权限(即创建文件时不需要设置而天生的权限)
root用户下,touch a ,文件a的默认权限是644
普通用户下,touch b ,文件b的默认权限是664
644和664我们并没有设置,其中的关键因素就是umask
扩展:实际上我们创建一个普通文件最高权限666。而创建一个文件夹其最高权限777
实际文件权限 = 最高权限 - umask的值
# umask
0022
注:0022中第一位0代表特殊权限位,可以不设置。
umask的默认值,在root和普通用户下是不一样的,分别是022和002
为什么文件在root下创建就是644,在itheima下就是664
root : 666 - 022 = 644
itheima:666 - 002 = 664
☆ 临时修改(重启后失效)
# umask 002
777 - 002 = 775
☆ 永久修改
# vim ~/.bashrc
① 在文件末尾添加umask 002
② 保存退出
③ su切换用户则立即生效
Linux自有服务与软件包管理
服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客户发出请求,这些进程就自动为他们提供服务,windows系统中,把这些自动运行的进程,称为"服务"
举例:当我们使用SSH客户端软件连接linux的时候,我们的服务器为什么会对连接做出响应?是因为SSH服务开机就自动运行了。
所谓自有服务,简单来说,可以理解为Linux系统开机自动运行的服务(程序)。
CentOS6版本:
service命令(管理服务开启、停止以及重启)+ chkconfig(定义开机启动项)
# service network start|stop|restart
CentOS7版本:
systemctl命令 = system系统 + control控制(服务管理+开启启动项管理)
# systemctl start|stop|restart network
基本语法:
# systemctl [选项]
选项说明:
list-units --type service --all:列出所有服务(包含启动的和没启动的)
list-units --type service:列出所有启动的服务
案例:列出Linux系统中所有的服务(包含启动的和没启动的)
# systemctl list-units --type service --all
案例:只列出已经启动的Linux系统服务
# systemctl list-units --type service
案例:把systemctl显示系统服务与管道命令相结合,筛选我们想要的服务信息
# systemctl list-units --type service | grep sshd
☆ status查看状态
查看系统服务的状态
# systemctl status 系统服务的名称
案例:查询系统中网络服务的状态信息
# systemctl status network
案例:查询系统中sshd服务的状态信息
# systemctl status sshd
☆ stop停止服务
# systemctl stop 系统服务的名称
案例:使用systemctl命令停止network网络服务
# systemctl stop network
☆ start启动服务
# systemctl start 系统服务的名称
案例:使用systemctl命令启动network网络服务
# systemctl start network
☆ restart重启服务
# systemctl restart 系统服务的名称
等价于
# systemctl stop 系统服务的名称
# systemctl start 系统服务的名称
案例:使用systemctl命令重启crond计划任务的服务信息
# systemctl restart crond
☆ reload热重载技术
# systemctl reload 系统服务名称
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
有些服务,如Nginx,更改了配置文件,但是不能重启Nginx服务,只是想立即让我们配置文件的更改生效,则就可以使用热重载技术了。
案例:使用热重载技术重新加载crond服务
# systemctl reload crond
所谓服务持久化,就是服务在开机的时候,是否自动启动。
☆ 开机自启
# systemctl enable 系统服务的名称
案例:把network网络服务设置为开机自启动
# systemctl enable network
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network on
以上提示代表network.service不是一个本地的系统服务,所以想设置开机自启需要使用/sbin/chkconfig进行操作
# /sbin/chkconfig network on
案例:把crond计划任务的服务信息添加到开机自启动中
# systemctl enable crond
☆ 开机不自启
# systemctl disable 系统服务的名称
案例:把crond计划任务的服务信息从开机自启动中移除
# systemctl disable crond
运行级别全称(Running Level),代表Linux系统的不同运行模式
# vim /etc/inittab
0 系统关机状态 halt (Do NOT set initdefault to this)
1 单用户工作状态 Single user mode (类似Windows的安全模式,Linux忘记密码)
2 多用户状态(没有NFS) Multiuser, without NFS (The same as 3, if you do not have networking)
3 多用户状态(有NFS) Full multiuser mode (字符模式,服务基本都是此模式)
4 系统未使用,留给用户 unused
5 图形界面 X11 (图形模式,个人计算机都是此模式)
6 系统正常关闭并重新启动 reboot (Do NOT set initdefault to this)
runlevel --查看当前运行级别
0 shutdown.target 关机
1 emergency.target
2 rescure.target
3 multi-user.target 字符模式
4 无
5 graphical.target 图形模式
6 重启
# init 模式编号
案例:立即关机
# shutdown -h 0或now
或
# halt -p
或
# init 0
案例:立即重启
# reboot
或
# init 6
案例:把计算机切换到字符模式(黑窗口)
# init 3 3 运行 5 运行
案例:把计算机切换到图形模式(图形界面)
# init 5
问题:在CentOS6中,设置network开机启动时,系统要求使用chkconfig命令
# chkconfig network on
设置完成后,怎么查看network有没有随开机自动启动呢?
# chkconfig --list |grep network
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
0 关机模式
1 单用户模式
2 多用户模式(无NFS)
3 字符模式
4 自定义模式
5 图形模式
6 重启模式
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
工作场景:
公司开发了一个电商网站,由于访问量很大,网站后端由100台服务器组成集群。50台负责接收订单,50台负责安排发货,接收订单的服务器需要记录用户下订单的具体时间,把数据传给负责发货的服务器,由于100台服务器时间各不相同,记录的时间经常不一致,甚至会出现下单时间是明天,发货时间是昨天的情况。
问题:标准时间是哪里来的?
现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。
在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内
工作中,通常我们会直接使用各个组织提供的,现成的NTP服务器
备注:千万不要改Windows系统时间!
NTP授时网站:http://www.ntp.org.cn/pool.php
☆ 手工同步
基本语法:
# ntpdate NTP服务器的IP地址或域名
案例:查看Linux系统时间
# date
案例:从NTP服务器中同步系统时间
# ntpdate cn.ntp.org.cn
☆ 自动同步
基本语法:
① 启动ntpd服务
# systemctl start ntpd
② 把ntpd服务追加到系统开机启动项中
# systemctl enable ntpd
问题1:启动ntpd服务后,是不是时间就自动同步了?
启动后就自动同步了
问题2:需不需要让ntpd服务,开机自动运行?
需要
ntpd服务配置文件位置 /etc/ntp.conf
这是什么?
由以上图解可知,这个PCQQ2019.exe是Windows中的软件安装包。
所谓的Linux软件包就是Linux下软件的安装程序
① RPM软件包安装 => 软件名称.rpm 红帽系操作系统独有的
② YUM包管理工具 => yum install 软件名称 -y
③ 源码安装 => 下载软件的源代码 => 编译 => 安装(最麻烦的,但是也最稳定)
二进制包,也就是源码包经过成功编译之后产生的包。
二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:
RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写
作用:rpm 的作用类似于 华为应用市场,App Store,主要作用是对linux 服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装/更新。
a. 去官网去下载(http://rpm.pbone.net);
b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取;CentOS7.6*.iso
# rpm -qa |grep 要搜索的软件名称
选项说明:
-q :query,查询操作
-a :all,代表所有
案例1:查询计算机中已安装的rpm软件包
# rpm -qa
案例2:搜索计算机中已安装的firefox软件包
# rpm -qa |grep firefox
# rpm -e 软件名称 [选项] erase擦除
选项说明:
--nodeps :强制卸载
案例:把系统中的firefox浏览器进行卸载操作
# rpm -qa |grep firefox
firefox-60.2.2-1.el7.centos.x86_64
# rpm -e firefox-60.2.2-1.el7.centos.x86_64
基本语法:
# rpm -ivh 软件包的名称.rpm
选项说明:
-i:install,安装
-v:显示进度条
-h:表示以"#"形式显示进度条
第一步:在VMware虚拟机中加载CentOS7.6的安装光盘
第二步:使用 # lsblk(list block devices)或者df -T 查看块状设备的信息
# lsblk
[root@yunwei ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom /run/media/itheima/CentOS 7 x86_64
由以上图解可知,/dev/sr0代表光驱设备 => 挂载点 => /run/media/itheima/CentOS 7 x86_64文件夹
或
# df -T
Linux操作系统的中所有存储设备必须先挂载后使用
第三步:使用cd命令,切换到挂载目录
# cd /run/media/itheima/CentOS\ 7\ x86_64
第四步:使用cd命令,切换到Packages软件包中
# cd Packages
第五步:查询我们要安装的软件包
# ls |grep firefox
firefox-60.2.2-1.el7.centos.x86_64.rpm
第六步:使用rpm -ivh命令安装软件
# rpm -ivh firefox-60.2.2-1.el7.centos.x86_64.rpm
输入firefox + Tab,让其自动补全
基本语法:
# rpm -Uvh 升级后的软件包名称.rpm
选项说明:
-U :Update,更新操作
案例:使用rpm -Uvh对firefox-60.2.2版本进行升级
# rpm -Uvh firefox-68.4.1-1.el7.centos.x86_64.rpm
☆ 依赖关系
一个软件必须先有其他软件才能运行,例如之前xmind启动过程中提示的缺少DLL,称之为依赖
WAMP(Windows + Apache + MySQL + PHP)安装前必须先安装VC++ 2014 x86_64,这种情况就称之为有依赖关系。
60.8.0的firefox可以更新成功
下面我们尝试更新到68.4.1的版本
用法:rpm -Uvh 软件包名称
# rpm -Uvh firefox-68.4.1-1.el7.centos.x86_64.rpm
使用rpm命令,安装68.4.1版本的软件包
错误提示:
error:Failed dependencies:
提示安装68版本的firefox需要依赖nspr4.21的版本,nss的3.44的版本,这就是我们说的依赖关系。
为了解决依赖关系的问题,有另外一个管理工具叫做yum,后面我们会讲到。
A软件
A软件 => 需要依赖B软件
B软件 => 需要依赖C软件
C软件
依赖关系的解决:使用YUM软件包管理工具对其进行安装(自动解决依赖关系)
# yum install firefox -y
☆ 查看文件所属的包名
基本语法:f = file
# rpm -qf 文件名称
主要功能:判断某个文件所属的包名称
案例:查询/etc/ntp.conf 属于哪个软件包
# rpm -qf /etc/ntp.conf
ntp-4.2.6p5-28.el7.centos.x86_64
☆ 查询软件安装完成后,生成了哪些文件
基本语法:l = list,显示这个软件安装后生成了哪些文件
# rpm -ql 软件名称
案例1:查询firefox软件生成了哪些文件
# rpm -ql firefox
特别说明:软件安装完成后,一共生成了以下几类文件
配置文件类:/etc目录
程序文件本身,二进制文件命令:/usr/bin或/usr/sbin目录
文档手册:/usr/share/doc或man目录
案例2:查询openssh软件生成了哪些文件
# rpm -ql openssh
在Linux操作系统中,所有的存储设备都必须先挂载然后才能使用。
问题:为什么当我们直接访问/run/media/itheima/CentOS 7 x86_64就相当于访问光盘
答:主要原因就是因为CentOS7的操作系统自动把光驱设备挂载到此目录了,访问这个目录就相当于访问光盘。
☆ swp
#交换分区,开辟硬盘部分空间当做内存去用
物理内存大于64G就不建议设置交换分区
lsblk(list block devices)或者df -T 查看块状设备的信息
ro 只读
☆ 解挂
# cd ~
# umount /run/media/itheima/CentOS\ 7\ x86_64
常见问题:当我们执行以上命令时,系统提示target is busy!
出现以上问题的主要原因在于我们当前所在的目录为挂载目录。
☆ 挂载
# mount 设备文件 挂载目录
提示:光驱的设备文件为/dev/sr0
案例:把光驱挂载到/mnt/cdrom目录
# mkdir /mnt/cdrom
# mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
案例:把/mnt/cdrom进行解挂操作
# cd ~
# umount /mnt/cdrom
#vim /etc/fstab
防火墙:防范一些网络攻击。有软件防火墙(阿里)、硬件防火墙(华为,思科)之分。
防火墙选择让正常请求通过,从而保证网络安全性。
Windows防火墙:
Windows防火墙的划分与开启、关闭操作:
sshd
crond
ntpd
总结,d的意思daemon守护进程,后台运行程序,后台服务
CentOS5、CentOS6 => 防火墙 => iptables防火墙
CentOS7 => 防火墙 => firewalld防火墙
firewalld = fire火 wall墙 daemon守护进程
☆ 区域
firewalld增加了区域(zone)的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域。
常见区域及相应策略规则(规则:哪些端口或服务可以通过防火墙,哪些不能通过)
区域 默认策略
trusted 信任 允许所有数据包
home 拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过
internal 内部 等同于home
work 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过
public 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过
external 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
dmz 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
block 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作
drop 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作
案例:在Linux系统中安装httpd服务(Web服务),占用计算机的80端口
# yum install httpd -y
# systemctl start httpd
安装启动完成后,在浏览器中,输入http://服务器的IP地址/即可访问httpd服务页面
以上操作只能使用Google浏览器、360浏览器或者Firefox火狐浏览器,一定不要使用IE
以上问题的原因在于:firewalld防火墙已经把httpd(80端口)屏蔽了,所以没有办法访问这台服务器的80端口(httpd服务)
临时解决办法:
# systemctl stop firewalld
☆ 运行模式和永久模式
运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件
永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效。
firewalld默认采用运行模式
☆ 防火墙的启动、停止以及查看运行状态
查看运行状态
# systemctl status firewalld
停止防火墙(学习环境任意操作,生产环境一定不要停止防火墙)
# systemctl stop firewalld
记住:防火墙一旦停止,其设置的所有规则会全部失效!
启动防火墙
# systemctl start firewalld
☆ 防火墙重启与重载操作
重启操作
# systemctl restart firewalld
restart = stop + start,重启首先停止服务,然后在重新启动服务
重载操作
# systemctl reload firewalld
我们对防火墙的配置文件做了更改(永久模式),需要使用reload进行重载让其立即生效
reload并没有停止正在运行的防火墙服务,只是在服务的基础上变换了防火墙规则
☆ 把防火墙设置为开机启动与开机不启动
开机启动
# systemctl enable firewalld
开机不启动
# systemctl disable firewalld
☆ firewalld管理工具
基本语法:
# firewall-cmd [选项1] [选项2] [...N]
☆ 查看防火墙默认的区域(zone)
# firewall-cmd --get-default-zone
运行效果:
☆ 查看所有支持的区域(zones)
# firewall-cmd --get-zones
运行结果:
为什么要有区域的概念:其实不同的区域就是不同的规则
☆ 查看当前区域的规则设置
# firewall-cmd --list-all
☆ 查看所有区域的规则设置
# firewall-cmd --list-all-zones
运行结果:
☆ 添加允许通过的服务或端口(重点)
① 通过服务的名称添加规则
# firewall-cmd --zone=public --add-service=服务的名称
备注:服务必须存储在/usr/lib/firewalld/services目录中
firewall-cmd表示命令 --zone=public表示指定在哪个区域添加规则
案例:把http服务添加到防火墙的规则中,允许通过防火墙
# firewall-cmd --zone=public --add-service=http
扩展:把http服务从防火墙规则中移除,不允许其通过防火墙
# firewall-cmd --zone=public --remove-service=http
# firewall-cmd --list-all
② 通过服务的端口号添加规则
# firewall-cmd --zone=public --add-port=端口号/tcp
案例:把80/tcp添加到防火墙规则中,允许通过防火墙
# ss -naltp |grep httpd
httpd :::80
# 允许80端口通过firewalld防火墙
# firewall-cmd --zone=public --add-port=80/tcp
运行效果:
案例:从firewalld防火墙中把80端口的规则移除掉
# firewall-cmd --zone=public --remove-port=80/tcp
☆ 永久模式permanent
在Linux的新版防火墙firewalld中,其模式一共分为两大类:运行模式(临时模式)+ 永久模式。
运行模式:不会把规则保存到防火墙的配置文件中,设置完成后立即生效
永久模式:会把规则写入到防火墙的配置文件中,但是其需要reload重载后才会立即生效
# 根据服务名称添加规则(永久)
# firewall-cmd --zone=public --add-service=服务名称 --permanent
# firewall-cmd --reload
# 根据端口号添加规则(永久)
# firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent
# firewall-cmd --reload
案例:把80端口添加到firewalld防火墙规则中,要求永久生效
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
# systemctl status firewalld
# systemctl stop firewalld
# systemctl start firewalld
# systemctl restart firewalld
# systemctl reload firewalld
# systemctl enable firewalld
# systemctl disable firewalld
# firewall-cmd --get-default-zone
# firewall-cmd --get-zones
# firewall-cmd --list-all
# firewall-cmd --list-all-zones
# firewall-cmd --zone=public --add-service=服务的名称
# firewall-cmd --zone=public --remove-service=http
# firewall-cmd --zone=public --add-port=端口号/tcp
# firewall-cmd --zone=public --add-service=服务名称 --permanent
# firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent
查看端口号
netstat -naput |grep httpd
计算机网络参考模型
将信息转换成了电信号,靠电压来实现二进制数据的传输和识别的,5v 1 0v 0
总结:实现了比特流的传输
定义网卡地址:mac地址 48bit组成的,全球唯一
实现了:局域网内部主机和主机之间的通信
全球范围内实现了找到这台主机(可能在任何一个角落)
============================================================================
保证数据可靠:tcp协议:80
保证数据高效率传输:udp协议 :53
a-------------------b 通信
a发送方,一层一层封装这个数据,b会接收,解封装
http协议—>hello
tcp协议封装http协议—>hello
ip “tcp协议封装http协议—>hello”
二层协议 “ip tcp协议封装http协议—>hello”
物理层 “二层协议 ip tcp协议封装http协议—>hello”
应用层 针对特定应用的协议
表示层设备固有数据格式和网络标准数据格式的转换
会话层负责建立和断开通信连接
传输层负责端到端的数据传输
网络层地址管理和路由选择
数据链路层互连设备之间传输和识别数据帧
物理层比特流的传输
二、Linux中的计划任务
1、什么是计划任务
作用:操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动httpd=>阿帕奇),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。
在指定的时间执行指定的操作!
2、Windows中计划任务
开始 => 控制面板=> 管理工具
Windows10 => Windows键 + X
案例:在Windows中创建一个计划任务
第一步:创建基本任务
第二步:设置计划任务名称
第三步:创建任务触发器(什么时间触发这个任务)
第四步:设置具体的时间
第五步:可以做的工作
第六步:设置要启动的程序
3、Linux中的计划任务
启动服务:
systemctl status crond.service 如果服务没有运行就开启服务
systemctl start crond.service
基本语法:
# crontab [选项]
-l :list,显示目前已经设置的计划任务 管理员可以使用 -u username,去管理其他用户的计划任务
-e :使用vim编辑器编辑计划任务的文件
-r : 删除计划
案例:显示当前账号下的计划任务
# crontab -l
no crontab for root => root账号下没有创建计划任务
案例:编写计划任务
# crontab -e
4、计划任务的编辑
crontab -e进入计划任务编辑文件
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:
计划任务的规则语法格式,以行为单位,一行则为一个计划
分 时 日 月 周 要执行的命令(要求必须使用命令的完整路径,可以使用which查看)
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0 和 7 表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6
5、几个小案例
问题1:每月1、10、22 日的4:45 重启network 服务
第一步:定制格式
分 时 日 月 周 /usr/bin/systemctl restart network
第二步:定制时间
45 4 1,10,22 * * /usr/bin/systemctl restart network
问题2:每周六、周日的1:10 重启network 服务
第一步:定制格式
分 时 日 月 周 /usr/bin/systemctl restart network
第二步:定制时间
10 1 * * 6,7 /usr/bin/systemctl restart network
问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务
第一步:定制格式
分 时 日 月 周 /usr/bin/systemctl restart network
第二步:定制时间
*/30 18-23 * * * /usr/bin/systemctl restart network
问题4:每隔两天的上午8 点到11 点的第3 和第15 分钟执行一次重启
第一步:定制格式
分 时 日 月 周 /usr/sbin/reboot
第二步:定制时间
3,15 8-11 */2 * * /usr/sbin/reboot
案例:每1 分钟往 root 家目录中的 readme.txt 中输一个1,为了看到效果使用追加输出【输出使用echo 命令,语法:# echo 输出的内容】
# crontab -e
* * * * * /usr/bin/echo 1 >> /root/readme.txt
提示:为了看到计划任务的效果,你可以单独开一个选项卡,使用tail -f /root/readme.txt
6、计划任务
常见的一个操作:定时备份(定时把数据库中的数据导出到某个文件中)
Linux计划任务以及进程检测与控制
一、Linux计划任务
1、计划任务权限
☆ 黑名单
crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。
提出问题:如果我们想限定某个用户(如itheima)使用计划任务,如何处理呢?
答:可以使用计划任务的黑名单,黑名单文件路径 => /etc/cron.deny文件
案例:把普通账号itheima加入到cron.deny黑名单中,禁止其创建计划任务
第一步:切换到超级管理员root
# su - root
第二步:使用vim打开/etc/cron.deny文件
# vim /etc/cron.deny
第三步:把你需要禁止的用户名单,加入此文件(如itheima)
itheima
切换到itheima账号,测试是否可以使用crontab命令
☆ 白名单
在Linux的计划任务中,除了拥有黑名单以外,还有白名单。作用:允许哪些用户使用计划任务。
白名单文件的路径 => /etc/cron.allow,但是要特别注意,此文件需要手工创建。
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
2、查看计划任务的保存文件
问题:计划任务文件具体保存在哪里呢?
答:/var/spool/cron/用户名称,如果使用root用户编辑计划任务,则用户文件名为root
# ll /var/spool/cron
total 4
-rw-------. 1 itheima itheima 0 Mar 24 09:50 itheima
-rw-------. 1 root root 40 Mar 24 10:21 root
3、计划任务的日志程序
问题:在实际应用中,我们如何查看定时任务运行情况?
答:通过计划任务日志,日志文件位于/var/log/cron
案例:演示计划任务的日志程序
第一步:使用root账号创建一个计划任务
# su - root
# crontab -e
* * * * * echo 1 >> ~/readme.txt
第二步:使用tail -f命令监控/var/log/cron日志程序
# tail -f /var/log/cron
4、扩展内容:at命令
在Linux系统下,有两个命令可以实现计划任务:crontab与at(第三方需要额外安装)
crontab :每天定时执行计划任务(最小单元分钟)
at :一次性定时执行任务
☆ 安装at命令
CentOS7自带,其他版本可能需要手工安装
# yum install at -y
☆ 启动底层服务
# systemctl start atd
# systemctl enable atd
atd = at + d = at命令 + daemon缩写
☆ 案例演示
案例1:三天后下午5点执行/bin/ls
# at 5pm+3 days
at>/bin/ls >/root/readme.txt
at>按Ctrl+D
am = 上午、pm = 下午、3 days = 3天
案例2:明天17点,输出时间到指定的文件中
# at 17:00 tomorrow
at>date>/root/readme.txt
at>按Ctrl+D
tomorrow = 明天
案例3:使用atq查看没有执行的计划任务
# atq
atq = at + q = at命令 + query查询
案例4:删除指定的计划任务
# atq
# atrm 任务号
atrm = at + rm = at命令 + remove移除
二、Linux进程与程序
1、了解一下进程与程序的关系
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
简单来说,程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。进程是正在执行中的程序。
举例:谷歌浏览器是一个程序,当我们打开谷歌浏览器,就会在系统中看到一个浏览器的进程,当程序被执行时,程序的代码都会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。我们打开多个谷歌浏览器,就有多个浏览器子进程,但是这些进程使用的程序,都是chrome
PID = Process ID = 进程编号
2、Linux下的进程管理工作
进程查看,通过查看,判断健康状态
进程终止
进程优先级控制
三、Linux下进程管理命令
1、任务背景
工作场景:
小黑入职到一家公司,接到的第一项任务,就是监控生产服务器的性能,提到服务器性能,我们首先想到的就是CPU,内存和磁盘。
2、使用top命令动态监测CPU信息
基本语法:
# top
3、系统的整体情况
☆ 第一行
内 容 说 明
10:12:28 系统当前时间
up 13:05 系统的运行时间.本机己经运行 13 小时 05 分钟
3 users 当前登录了三个用户
load average: 0.00,0.01,0.05 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载
☆ 第二行
Tasks: 230 total 系统中的进程总数
1 running 正在运行的进程数
229 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程
☆ 第三行
内 容 说 明
Cpu(s): 0.1 %us 用户模式占用的 CPU 百分比
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id idle缩写,空闲 CPU 占用的 CPU 百分比
0.1%wa 等待输入/输出的进程占用的 CPU 百分比
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.1%si 软中断请求服务占用的 CPU 百分比
0.0%st st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
问题:如果我的机器有4核CPU,我想查看每一核心分别的负载情况怎能办?
答:交换快捷键 “1”
CPU负载测试 => cat /dev/urandom |md5sum
☆ 第四行
内 容 说 明
Mem: 1863252 total 物理内存的总量,单位为KB
829960 used 己经使用的物理内存数量
68352 free 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
96490 buff/cache 作为缓冲的内存数量
扩展:真正剩余内存 = free + buff/cache,真正使用内存 = used - buff/cache
☆ 第五行
内 容 说 明
Swap: 2097148 total 交换分区(虚拟内存)的总大小
3336 used 已经使用的交换分区的大小
2093812 free 空闲交换分区的大小
622420 avail Mem 可用内存
在Linux操作系统分区时,最少需要3个分区:
① /boot分区 : 系统分区
② swap交换分区 :一般情况下为内存的1~2倍,但是尽量不要超过2倍
③ /分区 :根分区,所有文件都存放于此
swap分区:就是当计算机的内存不足时,系统会自动从硬盘中划出一块区域充当内存使用。
我们通过 top 命令的整体信息部分,就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15 分钟的平均负载高于CPU核数,说明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。
问题:根据以上信息,目前我们的系统压力如何?
答:看CPU负载及内存的使用情况
问题:如果我们发现CPU负载过大,接下来怎么办?
答:如果1分钟、5分钟以及15分钟全部超过CPU的总核心数(必须引起警觉),这个时候就要查看底部的进程信息了。
经验之谈:如果一个总核数=8核心的CPU,理论上平均负载达到16,也还可以坚持很长一段时间。
4、系统的进程信息
PID 进程的 ID。
USER 该进程所属的用户。
PR 优先级,数值越小优先级越高。
NI NICE优先级,数值越小优先级越高,取值范围-20到19,默认都是0
VIRT 该进程使用的虚拟内存的大小,单位为 KB。
RES 该进程使用的物理内存的大小,单位为 KB。
SHR 共享内存大小,单位为 KB。计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
S 进程状态。其中S 表示睡眠,R 表示运行
%CPU 该进程占用 CPU 的百分比。 P
%MEM 该进程占用内存的百分比。 M
TIME+ 该进程共占用的 CPU 时间。
COMMAND 进程名
问题:如果我们发现CPU负载过大,接下来怎么办?
答:查看占用CPU最多的进程
问题:如何查看占用CPU最多的进程?
答:交互操作快捷键P,P(大写):,表示将结果按照CPU 使用率从高到低进行降序排列
问题:如果我们发现内存可用量很小,接下来怎么办?
答:查看占用内存最多的进程,使用交互快捷键M(大写):表示将结果按照内存(MEM)从高到低进行降序排列
问题:当我们查看完系统状态,需要做什么?
答:退出,使用q,按键盘上的q,就会回到#提示符的状态。
5、free查看内存使用情况
基本语法:
# free [选项] 1GB = 1024MB 1MB = 1024KB
选项说明:
-m : 以MB的形式显示内存大小
-h : 以人类可读的大小
案例:显示计算机的内存使用情况
# free -m
和Centos6相比,buffer和cached被合成一组,加入了一个available。
关于此available,即系统可用内存,用户不需要去计算buffer/cache,即可以看到还有多少内存可用,更加简单直观
6、df查看磁盘剩余空间
基本语法:
# df [选项]
-h :以较高的可读性显示磁盘剩余空间大小
-T : 加上文件系统类型
df = disk free = 磁盘 剩余
这几列依次是:
Filesystem 磁盘名称
Size 总大小
Used 被使用的大小
Avail 剩余大小
Use% 使用百分比
Mounted on 挂载路径(相当于Windows 的磁盘符)
7、ps查看系统进程信息
top : 动态查看系统进程的信息(每隔3s切换一次)
ps : 静态查看系统进程的信息(只能查询运行ps命令瞬间,系统的进程信息)
基本语法:
# ps [选项]
选项说明:
-e : 等价于“-A”,表示列出全部(all)的进程
-f : 表示full,显示全部的列(显示全字段)
案例:显示当前系统中所有进程的信息
# ps -ef
UID 该进程执行的用户ID
PID 进程ID
PPID 该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)
C Cpu的占用率,其形式是百分数
STIME 进程的启动时间
TTY 终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起
TIME 进程实际使用CPU的时间
CMD 该进程的名称或者对应的路径
经验之谈:我们在实际工作中使用ps命令其实主要用于查询某个进程的PID或PPID
工作场景
小黑用学到的命令,发现某个进程占用CPU很高,希望进一步查看这个简称的信息。
ps -ef 会列出全部进程,但是我们发现进程非常多,我们很难找到自己想要看的进程。这里需要使用过滤命令grep,来过滤掉我们不需要的信息。
基本语法:
用法:ps -ef |grep 想要看到的进程名
示例代码:
# ps -ef |grep crond
含义:查看crond进程的详细情况
注意:查询结果中,如果只有一条则表示没查到对应的进程(这1 条表示刚才ps 指令的自身)。只有查到的结果多余1 条,才表示有对应的进程。
案例:查询crond的进程信息
# ps -ef |grep crond
root 7102 1 0 Mar23 ? 00:00:04 /usr/sbin/crond -n
root 24752 12881 0 16:34 pts/2 00:00:00 grep --color=auto crond
问题:以上信息只有第一行是crond的进程,第二行,实际是管道命令发起时,grep所启动的进程,如何去掉?
# ps -ef |grep crond |grep -v "grep"
root 7102 1 0 Mar23 ? 00:00:04 /usr/sbin/crond -n
grep -v 需要去除的相关信息 : 去除包含指定关键词的那一行
扩展:ps aux命令
# ps aux
1 UNIX options, which may be grouped and must be preceded by a dash. ps -ef
2 BSD options, which may be grouped and must not be used with a dash. ps aux
USER:该 process 属于哪个使用者账号
PID :该 process 的ID
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令
8、netstat/ss查询网络访问信息
基本语法:
# netstat [选项] |grep 进程名称
选项说明:
-t:表示只列出tcp 协议的连接(tcp协议与udp协议)
-n:表示将地址从字母组合转化成ip 地址,将协议转化成端口号来显示 10.1.1.10:80
-l:表示过滤出"state(状态)"列中其值为LISTEN(监听)的连接
-p:表示显示发起连接的进程pid 和进程名称
-u:显示udp协议
-a:显示所有套接字 有a就不需要l
案例:查询Web Server(httpd)服务的端口信息
# netstat -tnlp |grep httpd
基本语法:
# ss -naltp |grep 进程名称
案例:查询sshd服务的端口信息
# ss -naltp |grep sshd
netstat与ss区别?① netstat信息比较简洁,ss更加丰富 ② ss执行效率比netstat略高一些
9、kill/killall杀死进程
☆ 根据pid杀掉进程
命令:kill
语法:kill [信号] PID
作用:kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作
经验:kill经常结合ps命令一起使用
kill命令用于杀死某个进程,这其实只是其一个功能。kill命令的实质是向进程发送信号
信号种类:
信号编号 含义
9 杀死进程,即强制结束进程。
15 正常结束进程,是 kill 命令的默认信号。
案例:使用kill命令杀死crond进程
# ps -ef |grep crond
7102
# kill 7102
备注:在互联网中,经常看到kill -9 进程PID,强制杀死某个进程,kill -9 pid
☆ 根据进程名称杀掉进程
基本语法:
# killall [信号编号] 进程名称
案例:使用killall命令杀死crond进程
# killall crond
案例:使用killall命令杀死httpd进程
# killall httpd
二、YUM
1、什么是YUM
在CentOS系统中,软件管理方式通常有三种方式:rpm安装、yum安装以及编译安装。
编译安装,从过程上来讲比较麻烦,包需要用户自行下载,下载的是源码包,需要进行编译操作,编译好了才能进行安装,这个过程对于刚接触Linux的人来说比较麻烦,而且还容易出错。好处在于是源码包,对于有需要自定义模块的用户来说非常方便。(就业班会着重讲解)
难度:编译安装 > rpm安装 > yum安装(有网络 + yum源支持)
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
基于rpm包管理,能够从指定的服务器(yum源)自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
rpm和yum区别?答:① yum底层也是基于rpm进行安装的(yum安装的软件,可以通过rpm -qa进行查询) ② yum相对于rpm最大的优势,可以解决依赖关系。
A => B => C
2、YUM源配置
YUM源配置文件所在路径 => /etc/yum.repos.d文件夹
-rw-r–r–. 1 root root 1991 Mar 28 2017 CentOS-Base.repo 网络yum源配置文件
-rw-r–r–. 1 root root 647 Mar 28 2017 CentOS-Debuginfo.repo 内核相关的更新包
-rw-r–r–. 1 root root 289 Mar 28 2017 CentOS-fasttrack.repo 快速通道
-rw-r–r–. 1 root root 630 Mar 28 2017 CentOS-Media.repo 本地yum源配置文件
-rw-r–r–. 1 root root 7989 Mar 28 2017 CentOS-Vault.repo 最近版本加入老本的YUM配置
扩展:在YUM镜像源中添加阿里云镜像源
第一步:备份CentOS-Base.repo这个源(更改后缀名.repo => .repo.bak)
# mv CentOS-Base.repo CentOS-Base.repo.bak
第二步:使用wget命令下载阿里云的镜像文件
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
选项说明:
-O :指定文件下载的位置以及名称
第三步:清理YUM缓存
# yum clean all
第四步:重新建立缓存(让新YUM源生效)
# yum makecache
3、yum命令详解
☆ 搜索要安装的软件
# yum search 软件名称的关键词
案例:搜索阿里云仓库中的vim软件
# yum search vim
案例:搜索firefox火狐浏览器
# yum search firefox
☆ 使用yum安装软件
基本语法:
# yum install 软件名称关键词 [选项]
选项:
-y :yes缩写,确认安装,不提示。
案例:使用yum命令安装vim编辑器
# yum install vim -y
案例:使用yum命令安装firefox浏览器
# yum install firefox -y
☆ 使用yum卸载软件
# yum remove 软件名称关键词 [选项]
选项:
-y :yes缩写,确认卸载,不提示。
案例:把firefox火狐浏览器进行卸载操作
# yum remove firefox -y
案例:把httpd软件进行强制卸载
# yum remove httpd -y
☆ 使用yum更新软件
基本语法:
# yum update 软件名称关键词 [选项]
选项:
-y :yes缩写,确认更新,不提示
案例:把vim编辑器进行更新操作
# yum update vim -y
案例:把firefox火狐浏览器进行更新操作
# yum update firefox -y
三、LAMP概述
1、什么是LAMP
LAMP:Linux + Apache + MySQL + PHP LAMP 架构(组合)
LNMP:Linux + Nginx + MySQL + php-fpm LNMP 架构(组合)
LNMPA:Linux + Nginx(80) + MySQL + PHP + Apache Nginx 代理方式
Apache:Apache是世界使用排名第一的Web服务器软件。
PHP:一种专门用于Web开发的编程语言。
MySQL:MySQL是一个关系型数据库管理系统,主要用于永久存储项目数据。
2、AMP三者之间的关系
Apache:用于接收用户的请求(输入网址,返回网页=>结果)
PHP:注册、登录、加入购物车、下单、支付等动态功能(有编程语言的支持)
MySQL:永久保存数据,比如你在网站上注册的用户和密码、你加入购物车的产品、你的产品订单
LAMP = Linux + APache + PHP + MySQL
四、阿里云详解
要想部署一个互联网上可以访问到的环境,必须先具备以下内容 :
服务器(IP、帐号密码、终端)、相应的软件、域名(备案、解析)、代码等。
代码:前端工程师 + 后端工程师进行开发提供的!
1、注册阿里云账号
阿里云官网:https://www.aliyun.com/
特别说明:云服务器的厂商特别多,你可以进行任意选择 => 阿里云、百度云、腾讯云、华为云…
注册时建议使用支付宝,方便快捷。最重要:付款方便
2、实名认证(上传身份证照片)
第一步:单击账号下方的实名认证(选择个人认证)
第二步:选择支付宝授权认证(及时开通,无需等待)
第三步:勾选同意,点击提交
第四步:使用手机支付宝扫描二维码,进行授权
第五步:填写相关信息(住址)
填写完毕,即可完成认证。
3、购买阿里云的ECS云服务器
第一步:回到阿里云首页,找到弹性计算 => ECS云服务器
第二步:单击立即购买,购买ECS服务器(选区域、选配置)
第三步:选择付费模式、选择CPU与内存的配置
第四步:选择镜像(CentOS7.6)与云盘(硬盘)
第四步:设置网络、公网IP以及安全组(重要)
用户 => 阿里云安全组 => firewalld防火墙 => Linux服务器
第五步:设置root账号密码(一定要选择自定义密码)
8 - 30 个字符,必须同时包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号),其中 Windows 实例不能以斜线号(/)为首字符
第六步:设置释放时间 => 什么时候删除这台服务器(不收钱)
特别说明:只有个人购买的ECS服务器可以设置释放时间,生产环境一定不要设置释放时间,否则后果自负!!!
第七步:进入管理控制台,找到我们刚才购买的ECS服务器,如下图所示:
使用MX软件,直接连接公网IP + root账号 + 自定义的密码即可连接
4、使用MX连接ECS服务器
5、使用yum安装sl小工具
安装过程:
# yum install sl -y
使用sl命令:
# sl