目录
8.3.2 应用案例给 milan 指定密码passwd milan
13.3 查看 windows 环境的中 VMnet8 网络配置 (ipconfig 指令)
13.8.3 应用实例: 用户在浏览器输入了[www.baidu.com]
23.3.1 内核地址:https😕/www.kernel.org/ 查看
25 Linux 可视化管理-webmin 和 bt 运维工具
25.2.4 如果bt 的用户名,密码忘记了,使用 bt default 可以查看
26.1 分析日志t.log(访问量),将各个ip 地址截取,并统计出现次数,并按从大到小排序(腾讯)
26.2 统计连接到服务器的各个 ip 情况,并按连接数从大到小排序 (腾讯)
26.3 问题:如忘记了mysql5.7 数据库的 ROOT 用户的密码,如何找回? (滴滴)
26.4 写出指令:统计 ip 访问情况,要求分析nginx 访问日志(access.log),找出访问页面数量在前 2 位的 ip(美团)
26.5 使用 tcpdump 监听本机, 将来自ip 192.168.200.1,tcp 端口为 22 的数据,保存输出到
26.7 如果你是系统管理员,在进行Linux 系统权限划分时,应考虑哪些因素?(腾讯)
26.9 说明 Centos7 启动流程,并说明和CentOS6 相同和不同的地方(腾讯)
26.10 问题:列举 Linux 高级命令,至少 6 个(百度)
26.11 问题:Linux 查看内存、io 读写、磁盘存储、端口占用、进程查看命令是什么?(瓜子)
26.12 使用 Linux 命令计算 t2.txt 第二列的和并输出 (美团)
26.13 Shell 脚本里如何检查一个文件是否存在?并给出提示(百度)
26.14 用shell 写一个脚本,对文本 t3.txt 中无序的一列数字排序, 并将总和输出(百度)
26.15 请用指令写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符 “cat” 的文件名称(金山)
26.16 请写出统计/home 目录下所有文件个数和所有文件总行数的指令(在金山面试题扩展)
26.18 每天晚上 10 点 30 分,打包站点目录/var/spool/mail 备份到/home 目录下(每次备份按时间生成不同的备份包 比如按照 年月日时分秒)(滴滴)
26.19 如何优化Linux 系统, 说出你的方法 (瓜子)
此领域是传统 linux 应用薄弱的环节,近些年来随着 ubuntu、fedora [fɪˈdɔ:rə] 等优秀桌面环境的兴起,linux 在个人桌面领域的占有率在逐渐的提高。

linux 在服务器领域的应用是最强的。
linux 免费、稳定、高效等特点在这里得到了很好的体现,尤其在一些高端领域尤为广泛(c/c++/php/java/python/go)。
linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点, 使其近些年来在嵌入式领域的应用得到非常大的提高
主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域。以后在物联网中应用会更加广泛。

Linus Torvalds
Linux 之父
Git 创作者
世界著名黑客
Linux 主要的发行版:
Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE



学习 Linux 需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个 Centos 系统来学习

一定要下载16。15.5版本与win11不兼容,一启动虚拟机就蓝屏重启
百度网盘
链接:https://pan.baidu.com/s/1PaMDT8IIogoyueVQWFZIOQ
vmware官网(推荐)
首页:https://www.vmware.com
下载链接:https://www.vmware.com/cn/products/workstation-pro.html


学习 Linux 需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个 Centos 系统来学习。
如果你已经安装了一台 linux 操作系统,你还想再更多的,没有必要再重新安装,你只需要克隆就可以。
方式 1:直接拷贝一份安装好的虚拟机文件
方式 2:使用 vmware 的克隆操作,注意, 克隆时,需要先关闭 linux 系统
如果你在使用虚拟机系统的时候(比如 linux),你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware 也提供了这样的功能,就叫快照管理 。


虚拟系统安装好了,它的本质就是文件(放在文件夹的)。因此虚拟系统的迁移很方便,你可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外位置使用。删除也很简单,用 vmware 进行移除,再点击菜单->从磁盘删除即可,或者直接手动删除虚拟系统对应的文件夹即可。


基本介绍
为了方便,可以设置一个共享文件夹,比如 d:/myshare
具体步骤
菜单->vm->setting, 如图设置即可注意:设置选项为 always enable ,这样可以读写了
windows 和 centos 可共享 d:/myshare 目录可以读写文件了
共享文件夹在 centos 的 /mnt/hgfs/ 下
注意事项和细节说明
windows 和 contos 就可以共享文件了,但是在实际开发中,文件的上传下载是需要使用 远程方式完成的
远程方式登录


/bin [常用]
(/usr/bin 、 /usr/local/bin)是 Binary 的缩写, 这个目录存放着最经常使用的命令
/sbin
(/usr/sbin 、 /usr/local/sbin)s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
/home [常用]
存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
/root [常用]
该目录为系统管理员,也称作超级权限者的用户主目录
/lib
系统开机所需要最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/etc [常用]
所有的系统管理所需要的配置文件和子目录, 比如安装 mysql 数据库 my.conf
/usr [常用]
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与 windows 下的 program files 目录。
/boot [常用]
存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc [不能动]
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv [不能动]
service 缩写,该目录存放一些服务启动之后需要提取的数据
/sys [不能动]
这是 linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs =》【别动】
/tmp
这个目录是用来存放一些临时文件的
/dev
类似于 windows 的设备管理器,把所有的硬件用文件的形式存储
/media [常用]
linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下
/mnt [常用]
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就 可以查看里的内容了。 d:/myshare
/opt
这是给主机额外安装软件所存放的目录。如安装 ORACLE 数据库就可放到该目录下。默认为空
/usr/local [常用]
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
/var [常用]
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux
[security-enhanced linux]SELinux 是一种安全子系统,它能控制程序只能访问特定文件, 有三种工作模式,可以自行设置.
linux 服务器是开发小组共享
正式上线的项目是运行在公网
因此程序员需要远程登录到 Linux 进行项目管理或者开发
画出简单的网络拓扑示意图(帮助理解)
远程登录客户端有 Xshell6, Xftp6 , 我们学习使用 Xshell 和 Xftp6 , 其它的远程工具大同小异
示意图

下载 free-for-home-school 版本
地址: https://www.xshell.com/zh/free-for-home-school/

是一个基于 windows 平台的功能强大的 SFTP、FTP 文件传输软件。使用了 Xftp 以后,windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。

如何处理 Xftp 中文乱码问题

Linux 系统会内置 vi 文本编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可.
输入 esc 再输入:在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
使用 vim 开发一个 Hello.java 程序, 保存.步骤说明和演示




Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
useradd 用户名
案例 1:添加一个用户 milan, 默认该用户的家目录在 /home/milan
passwd 用户名
显示当前用户所在的目录 pwd
userdel 用户名
建议保留家目录
id 用户名
案例:请查询 root 信息
id root
当用户不存在时,返回无此用户
在操作 Linux 中,如果当前用户的权限不够,可以通过 **su - ** 指令,切换到高权限用户root
su - 切换用户名(注意短横线两边都有空格)
创建一个用户 jack, ,指定密码,然后切换到 jack
whoami/ who am I
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ToUJrYy2-1657979400768)(../../../Pictures/Linux/wps111.png)]](https://1000bd.com/contentImg/2022/08/02/091046972.png)
指令 : groupadd 组名
指令(基本语法): groupdel 组名
增加用户时直接加上组
指令(基本语法) : useradd –g 用户组 用户名
增加一个用户 zwj, 直接将他指定到 wudang
groupadd wudang
useradd -g wudang zwj
案例演示
创建一个组 mojiao
把 zwj 放入到 mojiao
指令: usermod -g mojiao zwj
用户(user)的配置文件,记录用户的各种信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NScTW0dY-1657979400768)(../../../Pictures/Linux/wps113.png)]](https://1000bd.com/contentImg/2022/08/02/091047128.png)
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
root : x : 0 : 0 : root : /root : /bin/bash
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
组(group)的配置文件
记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,也可以指定默认运行级别
命令:init [0123456] 应用案例: 通过 init 来切换不同的运行级别,比如动 5-3 , 然后关机。
在 centos7 以前, /etc/inittab 文件中 .
进行了简化 ,如下:
multi-user.target: analogous to runlevel 3 graphical.target: analogous to runlevel 5 # To view current default target, run: systemctl get-default
# To set a default target, run:
systemctl set-default TARGET.target
如何找回 root 密码

进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh。如图
接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式。
接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图


接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)
继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效了
基本语法:man [命令或配置文件](功能描述:获得帮助信息) 案例:查看 ls 命令的帮助信息 man ls
在 linux 下,隐藏文件是以 .开头 , 选项可以组合使用 比如 ls -al, 比如 ls -al /root
基本语法:help 命令 (功能描述:获得 shell 内置命令的帮助信息)
案例:查看 cd 命令的帮助信息
基本语法:ls [选项] [目录或是文件]
常用选项
-a :显示当前目录所有的文件和目录,包括隐藏的。
-l :以列表的方式显示信息
应用案例:查看当前目录的所有内容信息
基本语法:cd [参数] (功能描述:切换到指定目录)
理解:绝对路径和相对路径
mkdir 指令用于创建目录
基本语法:mkdir [选项] 要创建的目录
常用选项
-p :创建多级目录
应用实例
案例 1:创建一个目录 /home/dog mkdir /home/dog
案例 2:创建多级目录 /home/animal/tiger mkdir -p /home/animal/tiger
基本语法
rmdir [选项] 要删除的空目录
应用实例
案例:删除一个目录 /home/dog
使用细节
rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录比如: rm -rf /home/animal
touch 指令创建空文件
基本语法
touch 文件名称
应用实例
案例: 在/home 目录下 , 创建一个空文件 hello.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15rIxl69-1657979400770)(../../../Pictures/Linux/wps120.png)]](https://1000bd.com/contentImg/2022/08/02/091048382.png)
cp 指令拷贝文件到指定目录
基本语法
cp [选项] source dest
常用选项
-r :递归复制整个文件夹
应用实例
案例 1: 将 /home/hello.txt 拷贝到 /home/bbb 目录下
cp hello.txt /home/bbb
案例 2: 递归复制整个文件夹,举例, 比如将 /home/bbb 整个目录, 拷贝到 /opt
cp -r /home/bbb /opt
使用细节
强制覆盖不提示的方法:\cp
\cp -r /home/bbb /opt
rm 指令移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
-r :递归删除整个文件夹
-f : 强制删除不提示
应用实例
案例 1: 将 /home/hello.txt 删除
rm /home/hello.txt
案例 2: 递归删除整个文件夹 /home/bbb
rm -rf /home/bbb [删除整个文件夹,不提示]
使用细节
强制删除不提示的方法:带上 -f 参数即可
mv 移动文件与目录或重命名
基本语法
mv oldNameFile newNameFile(功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
应用实例
cat 查看文件内容
基本语法
cat [选项] 要查看的文件
常用选项
-n :显示行号
应用实例
案例 1: /etc/profile 文件内容,并显示行号
使用细节
cat 只能浏览文件,而不能修改文件,
为了浏览方便,一般会带上管道命令 | more
cat -n /etc/profile | more [进行交互]
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),详见操作说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTPX7iBJ-1657979400770)(../../../Pictures/Linux/wps123.png)]](https://1000bd.com/contentImg/2022/08/02/091048507.png)
more 要查看的文件操作说明,如图
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
基本语法
less 要查看的文件操作说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvBem1w9-1657979400771)(../../../Pictures/Linux/wps125.png)]](https://1000bd.com/contentImg/2022/08/02/091048651.png)
应用实例
案例: 采用 less 查看一个大文件文件 /opt/杂文.txt less /opt/杂文.txt
echo 输出内容到控制台
基本语法
echo [选项] [输出内容]
应用实例
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
基本语法
head 文件 (功能描述:查看文件头 10 行内容)
head -n 5 文件 (功能描述:查看文件头 5 行内容,5 可以是任意行数)
应用实例
查看/etc/profile 的前面 5 行代码
head -n 5 /etc/profile
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的前 10 行内容。
基本语法
应用实例
案例 1: 查看/etc/profile 最后 5 行的代码
tail -n 5 /etc/profile
案例 2: 实时监控 mydate.txt , 看看到文件有变化时,是否看到, 实时的追加 hello,world
tail -f /home/mydate.txt
> 输出重定向和 >> 追加
基本语法
ls -l >文件 (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
ls -al >>文件 (功能描述:列表的内容追加到文件 aa.txt 的末尾)
cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
echo “内容”>> 文件 (追加)
应用实例
案例 1: 将 /home 目录下的文件列表 写入到 /home/info.txt 中,
覆盖写入ls -l /home > /home/info.txt [如果 info.txt 没有,则会创建]
案例 2: 将当前日历信息 追加到 /home/mycal 文件中
指令为: cal >> /home/mycal
软链接也称为符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
应用实例
案例 1: 在/home 目录下创建一个软连接 myroot,连接到 /root 目录
ln -s /root /home/myroot
案例 2: 删除软连接 myroot rm /home/myroot
细节说明
当我们使用 pwd 指令查看目录时,仍然看到的是软链接所在目录。
查看已经执行过历史命令,也可以执行历史指令
基本语法
history (功能描述:查看已经执行过历史命令)
应用实例
案例 1: 显示所有的历史命令
history
案例 2: 显示最近使用过的 10 个指令。
history 10
案例 3:执行历史编号为 5 的指令
!5
基本语法
date (功能描述:显示当前时间)
date +%Y (功能描述:显示当前年份)
date +%m(功能描述:显示当前月份)
date +%d (功能描述:显示当前是哪一天)
date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)
应用实例
案例 1: 显示当前时间信息
date
案例 2: 显示当前时间年月日
date “+%Y-%m-%d”
案例 3: 显示当前时间年月日时分秒
date “+%Y-%m-%d %H:%M:%S”
基本语法
date -s 字符串时间
应用实例
案例 1: 设置系统当前时间 , 比如设置成 2020-11-03 20:02:10
date -s “2020-11-03 20:02:10”
查看日历指令 cal
基本语法
cal [选项] (功能描述:不加选项,显示本月日历)
应用实例
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法
find [搜索范围] [选项]
选项说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TxcCY9cL-1657979400771)(../../../Pictures/Linux/wps131.png)]](https://1000bd.com/contentImg/2022/08/02/091048758.png)
应用实例
案例 1: 按文件名:根据名称查找/home 目录下的 hello.txt 文件
find /home -name hello.txt
案例 2:按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
find /opt -user nobody
案例 3:查找整个 linux 系统下大于 200M 的文件(+n 大于 -n 小于 n 等于, 单位有 k,M,G)
find / -size +200M
locate 指令可以快速定位文件路径。
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。
Locate 指令无需遍历整个文件系统,查询速度较快。
为了保证查询结果的准确度,管理员必须定期更新 locate 时刻
基本语法
locate 搜索文件
特别说明
由于 locate 指令基于数据库进行查询,所以第一次运行前必须使用 updatedb 指令创建 locate 数据库。
应用实例
案例 1: 使用 locate 指令快速定位 hello.txt 文件所在目录
which 指令,可以查看某个指令在哪个目录下,比如 ls 指令在哪个目录
which ls
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-seS4C8EW-1657979400771)(../../../Pictures/Linux/wps133.png)]](https://1000bd.com/contentImg/2022/08/02/091048913.png)
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法
常用选项
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kabZ2fad-1657979400772)(../../../Pictures/Linux/wps134.png)]](https://1000bd.com/contentImg/2022/08/02/091049023.png)
应用实例
案例 1: 请在 hello.txt 文件中,查找 “yes” 所在行,并且显示行号
写法 1: cat /home/hello.txt | grep “yes”
写法 2: grep -n “yes” /home/hello.txt
gzip 用于压缩文件, gunzip 用于解压的
基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
应用实例
案例 1: gzip 压缩, 将 /home 下的 hello.txt 文件进行压缩
gzip /home/hello.txt
案例 2: gunzip 压缩, 将 /home 下的 hello.txt.gz 文件进行解压缩
gunzip /home/hello.txt.gz
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iogrEVsg-1657979400772)(../../../Pictures/Linux/wps136.png)]](https://1000bd.com/contentImg/2022/08/02/091049163.png)
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
基本语法
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
zip 常用选项
应用实例
案例 1: 将 /home 下的 所有文件/文件夹进行压缩成 myhome.zip
zip -r myhome.zip /home/ [将 home 目录及其包含的文件和子文件夹都压缩]
案例 2: 将 myhome.zip 解压到 /opt/tmp 目录下
mkdir /opt/tmp
unzip -d /opt/tmp /home/myhome.zip
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
基本语法
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wqhHqQ8h-1657979400772)(../../../Pictures/Linux/wps138.png)]](https://1000bd.com/contentImg/2022/08/02/091049325.png)
应用实例
案例 1: 压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
案例 2: 将/home 的文件夹 压缩成 myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
案例 3: 将 pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz
案例4: 将myhome.tar.gz 解压到 /opt/tmp2 目录下
mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
在 linux 中的每个用户必须属于一个组,不能独立于组外。
在 linux 中每个文件有所有者、所在组、其它组的概念。
所有者
所在组
其它组
改变用户所在的组
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBTPWyeu-1658074522673)(../../../Pictures/Linux/wps140.png)]](https://1000bd.com/contentImg/2022/08/02/091049465.png)
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
指令:ls –ahl
应用实例
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8VvaAOCM-1658074522674)(../../../Pictures/Linux/wps142.png)]](https://1000bd.com/contentImg/2022/08/02/091049581.png)
指令:chown 用户名 文件名
应用案例
要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
touch apple.txt
chown tom apple.txt
groupadd 组名
创建一个组 monster groupadd monster
创建一个用户 fox,并放入到monster 组中 useradd -g monster fox
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。
基本指令 ls –ahl
应用实例, 使用 fox 来创建一个文件,看看该文件属于哪个组?
-rw-r–r–. 1 fox monster 0 11 月 5 12:50 ok.txt
基本指令
chgrp 组名 文件名
应用实例
使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组。
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
usermod –g 新组名 用户名
usermod –d 目录名 用户名 改变该用户登陆的初始目录。
特别说明:用户需要有进入到新目录的权限。
将 zwj 这个用户从原来所在组,修改到 wudang 组
usermod -g wudang zwj
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
第 0 位确定文件类型(d, - , l , c , b)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User
第 4-6 位确定所属组(同用户组的)拥有该文件的权限,—Group
第 7-9 位确定其他用户拥有该文件的权限 —Other
[ r ]代表可读(read): 可以读取,查看
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,
删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
[ x ]代表可执行(execute):可以被执行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QsiAla3Y-1658074522675)(../../../Pictures/Linux/wps147.png)]](https://1000bd.com/contentImg/2022/08/02/091049693.png)
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么第一个字符代表文件类型: - l d c b
其余字符每 3 个一组(rwx) 读® 写(w) 执行(x)
第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7 , 数字可以进行组合
其它说明
1 文件:硬连接数或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示 4096 字节
Feb 2 09:39 最后修改日期
abc 文件名
通过 chmod 指令,可以修改文件或者目录的权限。
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
案例演示
给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
chmod u=rwx,g=rx,o=rx abc
给 abc 文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
给 abc 文件的所有用户添加读的权限
chmod a+r abc
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x
文件目录名相当于:chmod 751 文件/目录名
案例演示
要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
chmod 755 /home/abc.txt
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
-R 如果是目录 则使其下所有子文件或目录递归生效
案例演示
请将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
请将 /home/test 目录下所有的文件和目录的所有者都修改成 tom
chown -R tom /home/test
chgrp newgroup 文件/目录 【 改变所在组】
police bandit
jack, jerry:警察
xh, xq:土匪
创建组
groupadd police
groupadd bandit
创建用户
useradd -g police jack;
useradd -g police jerry useradd -g bandit xh;
useradd -g bandit xq;
jack 创建一个文件,自己可以读 r 写 w,本组人可以读,其它组没人任何权限
首先 jack 登录
vim jack.txt;
chmod 640 jack.txt;
jack 修改该文件,让其它组人可以读, 本组人可以读写
chmod o=r,
g=r jack.txt
xh 投靠 警察,看看是否可以读写. usermod -g police xh
测试,看看 xh 是否可以读写,xq 是否可以,
小结论:就是如果要对目录内的文件进行操作,需要要有对该目录的相应权限
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GcuXtMb-1658074522675)(../../../Pictures/Linux/wps151.png)]](https://1000bd.com/contentImg/2022/08/02/091049824.png)
练习文件权限管理[课堂练习], 完成如下操作.
建立两个组(神仙(sx),妖怪(yg))
建立四个用户(唐僧,悟空,八戒,沙僧)
设置密码
把悟空,八戒放入妖怪 唐僧 沙僧 在神仙
用悟空建立一个文件 (monkey.java 该文件要输出 i am monkey)
给八戒一个可以 r w 的权限
八戒修改 monkey.java 加入一句话( i am pig)
唐僧 沙僧 对该文件没有权限
把 沙僧 放入妖怪组
让沙僧 修改 该文件 monkey, 加入一句话 (“我是沙僧,我是妖怪!”);
对文件夹 rwx 的细节讨论和测试!!!
x: 表示可以进入到该目录, 比如 cd
r: 表示可以 ls , 将目录的内容显示
w: 表示可以在该目录,删除或者创建文件
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzQyTlr7-1658074522675)(../../../Pictures/Linux/wps154.png)]](https://1000bd.com/contentImg/2022/08/02/091050050.png)
crontab 进行 定时任务的设置
任务调度:是指系统在某个时间执行的特定的命令或程序。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PducPCMf-1658136470825)(../../../Pictures/Linux/wps156.png)]](https://1000bd.com/contentImg/2022/08/02/091050191.png)
任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。示意图
crontab [选项]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBkTM01u-1658136470826)(../../../Pictures/Linux/wps157.png)]](https://1000bd.com/contentImg/2022/08/02/091050300.png)
设置任务调度文件:/etc/crontab
设置个人任务调度。执行 crontab –e 命令。接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
5 个占位符的说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmnyaIMR-1658136470827)(../../../Pictures/Linux/wps159.png)]](https://1000bd.com/contentImg/2022/08/02/091050503.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cqMD1u10-1658136470827)(../../../Pictures/Linux/wps160.png)]](https://1000bd.com/contentImg/2022/08/02/091050644.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaWk2GBW-1658136470827)(../../../Pictures/Linux/wps162.png)]](https://1000bd.com/contentImg/2022/08/02/091051003.png)
案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
*/1 * * * * date >> /tmp/mydate
案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中步骤:
(1) vim /home/my.sh 写入内容 date >> /home/mycal 和 cal >> /home/mycal
(2) 给 my.sh 增加执行权限,chmod u+x /home/my.sh
(3) crontab -e 增加 */1 * * * * /home/my.sh
案例 3: 每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中。提示: 指令为
mysqldump -u root -p 密码 数据库 > /home/db.bak
步骤(1) crontab -e
步骤(2) 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
conrtab –r:终止任务调度。
crontab –l:列出当前有那些任务调度
service crond restart [重启任务调度]
at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
默认情况下,atd 守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在使用 at 命令的时候,一定要保证 atd 进程的启动 , 可以使用相关指令来查看
ps -ef | grep atd //可以检测 atd 是否在运行
画一个示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZAbldOV-1658136470828)(../../../Pictures/Linux/wps164.png)]](https://1000bd.com/contentImg/2022/08/02/091051113.png)
at [选项] [时间]
Ctrl + D 结束 at 命令的输入, 输出两次
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBDeab4K-1658136470828)(../../../Pictures/Linux/wps166.png)]](https://1000bd.com/contentImg/2022/08/02/091051284.png)
at 指定时间的方法:
接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
例如:04:00
使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。
例如:12pm
指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
使用相对计时法。
指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。
例如:now + 5 minutes
直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。
更多操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5DZ1dy3-1658136470828)(../../../Pictures/Linux/wps167.png)]](https://1000bd.com/contentImg/2022/08/02/091051441.png)
案例 1:2 天后的下午 5 点执行 /bin/ls /home
案例 2:atq 命令来查看系统中没有执行的工作任务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkZVqg63-1658136470828)(../../../Pictures/Linux/wps169.png)]](https://1000bd.com/contentImg/2022/08/02/091051566.png)
案例 3:明天 17 点钟,输出时间到指定文件内 比如 /root/date100.log
案例 4:2 分钟后,输出时间到指定文件内 比如 /root/date200.log
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KL9MVqxi-1658136470829)(../../../Pictures/Linux/wps170.png)]](https://1000bd.com/contentImg/2022/08/02/091051675.png)
案例 5:删除已经设置的任务 , atrm 编号
atrm 4 //表示将 job 队列,编号为 4 的 job 删除.
Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZ46oOBR-1658136470829)(../../../Pictures/Linux/wps172.png)]](https://1000bd.com/contentImg/2022/08/02/091051816.png)
Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
对于 IDE 硬盘,驱动器标识符为“hdx~”,
“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。
“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),
“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。
例:
hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,
hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDhZx32K-1658136470829)(../../../Pictures/Linux/wps174.png)]](https://1000bd.com/contentImg/2022/08/02/091052003.png)
对于 SCSI 硬盘则标识为“sdx~”,
SCSI 硬盘是用“sd”来表示分区所在设备的类型的,
其余则和 IDE 硬盘的表示方法一样
命令 :lsblk 或者 lsblk -f
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aXBf8wxJ-1658136470830)(../../../Pictures/Linux/wps175.png)]](https://1000bd.com/contentImg/2022/08/02/091052128.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tXWOXVL7-1658136470830)(../../../Pictures/Linux/wps176.png)]](https://1000bd.com/contentImg/2022/08/02/091052378.png)
以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。
虚拟机添加硬盘
分区
格式化
挂载
设置可以自动挂载
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXFItwO3-1658136470830)(../../../Pictures/Linux/wps178.png)]](https://1000bd.com/contentImg/2022/08/02/091052519.png)
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
分区命令 fdisk /dev/sdb
开始对 /sdb 进行分区
m 显示命令列表
p 显示磁盘分区 同 fdisk –l
n 新增分区
d 删除分区
w 写入并退出
说明:
开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。
两次回车默认剩余全部空间。
最后输入 w 写入分区并退出,若不保存退出输入 q。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QRg7hbmK-1658136470830)(../../../Pictures/Linux/wps180.png)]](https://1000bd.com/contentImg/2022/08/02/091052675.png)
格式化磁盘(生成UUID)
分区命令:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型
挂载: 将一个分区与一个目录联系起来
mount 设备名称 挂载目录
例如: mount /dev/sdb1 /newdisk
卸载:umount 设备名称 或者 挂载目录
例如: umount /dev/sdb1 或者
umount /newdisk
注意: 用命令行挂载,重启后会失效
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x01xAauo-1658136470831)(../../../Pictures/Linux/wps182.png)]](https://1000bd.com/contentImg/2022/08/02/091052847.png)
永久挂载: 通过修改 /etc/fstab 实现挂载添加完成后 执行 mount –a 即刻生效
最后两个数字,第一个数字:0/1=备份/不备份,第二个数字:2/1/0=根目录/其他目录文件检查/不检查
基本语法
df -h
应用实例
查询系统整体磁盘使用情况
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ypGQdhH2-1658136470831)(../../../Pictures/Linux/wps183.png)]](https://1000bd.com/contentImg/2022/08/02/091052986.png)
基本语法
du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
应用实例
查询 /opt 目录的磁盘占用情况,深度为 1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLaIN1Fo-1658136470831)(../../../Pictures/Linux/wps185.png)]](https://1000bd.com/contentImg/2022/08/02/091053133.png)
统计/opt 文件夹下文件的个数
ls -l /opt | grep “^-” | wc -l
统计/opt 文件夹下目录的个数
ls -l /opt | grep “^d” | wc -l
统计/opt 文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep “^-” | wc -l
统计/opt 文件夹下目录的个数,包括子文件夹里的
ls -lR /opt | grep “^d” | wc -l
以树状显示目录结构 tree 目录
注意,如果没有 tree ,则使用 yum install tree 安装
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34bKbvL7-1658136470831)(../../../Pictures/Linux/wps187.png)]](https://1000bd.com/contentImg/2022/08/02/091053270.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3SqH3jDP-1658136470832)(../../../Pictures/Linux/wps189.png)]](https://1000bd.com/contentImg/2022/08/02/091053424.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLk4iDpr-1658136470832)(../../../Pictures/Linux/wps191.jpg)]](https://1000bd.com/contentImg/2022/08/02/091053549.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4xCxCKH-1658136470832)(../../../Pictures/Linux/wps192.png)]](https://1000bd.com/contentImg/2022/08/02/091053721.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VwQIY7WS-1658136470832)(../../../Pictures/Linux/wps194.png)]](https://1000bd.com/contentImg/2022/08/02/091053830.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHEGvxyp-1658136470833)(../../../Pictures/Linux/wps195.png)]](https://1000bd.com/contentImg/2022/08/02/091053992.png)
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
测试当前服务器是否可以连接百度
ping www.baidu.com
说明:登陆后,通过界面的来设置自动获取ip,
特点:linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4vbaImBa-1658136470833)(../../../Pictures/Linux/wps197.png)]](https://1000bd.com/contentImg/2022/08/02/091054164.png)
说明:
直接修改配置文件来指定 IP,并可以连接到外网(程序员推荐)
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将 ip 地址配置的静态的,比如: ip 地址为 192.168.200.130
ifcfg-ens33 文件说明
DEVICE=eth0 #接口名(设备,网卡)
HWADDR=00:0C:2x:6x:0x:xx #MAC 地址
TYPE=Ethernet #网络类型(通常是 Ethemet)
UUID=926a57ba-92c6-4231-bacb-f27e5e6a9f44 #随机 id
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT=yes
# IP 的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配 IP|BOOTP 协议|DHCP 协议)
BOOTPROTO=static
#IP 地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2
重启网络服务或者重启系统生效
service network restart、reboot
思考:如何通过 主机名能够找到(比如 ping) 某个 linux 系统?
windows
在 C:\Windows\System32\drivers\etc\hosts 文件指定即可案例: 192.168.200.130 PangHu
linux
在 /etc/hosts 文件 指定
案例: 192.168.200.1 PangHu-PC
一个文本文件,用来记录 IP 和 Hostname(主机名)的映射关系
DNS,就是 Domain Name System 的缩写,
翻译过来就是域名系统是互联网上作为域名和 IP 地址相互映射的一个分布式数据库
浏览器先检查浏览器缓存中有没有该域名解析 IP 地址,
有就先调用这个 IP 完成解析;
如果没有,就检查 DNS 解析器缓存。
这两个缓存,可以理解为 本地解析器缓存
一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的 IP 地址(DNS 解析记录).如 在 cmd 窗口中输入
ipconfig /displaydns //DNS 域名解析缓存
ipconfig /flushdns //手动清理 dns 缓存
如果本地解析器缓存没有找到对应映射,检查系统中 hosts 文件中有没有配置对应的域名 IP 映射,
如果有,则完成解析并返回。
如果 本地 DNS 解析器缓存 和 hosts 文件 中均没有找到对应的 IP,则到域名服务 DNS 进行解析域
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwSXPsWn-1658136470833)(../../../Pictures/Linux/wps200.png)]](https://1000bd.com/contentImg/2022/08/02/091054305.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRXDF2BR-1658231560417)(../../../Pictures/Linux/wps203.png)]](https://1000bd.com/contentImg/2022/08/02/091054471.png)
![ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CSAk0NXt-1658231560418)(../../../Pictures/Linux/wps204.png)]](https://1000bd.com/contentImg/2022/08/02/091054649.png)
ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cid8L1N-1658231560418)(../../../Pictures/Linux/wps206.png)]](https://1000bd.com/contentImg/2022/08/02/091054836.png)
指令:ps –aux | grep xxx ,比如我看看有没有 sshd 服务 ps –aux | grep sshd
指令说明
要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息
是 BSD 风格
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
-9 :表示强迫进程立即停止
案例 1:踢掉某个非法登录用户
kill 进程号 , 比如 kill 11421
案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
kill sshd 对应的进程号; /bin/systemctl start sshd.service
案例 3: 终止多个 gedit
killall gedit
案例 4:强制杀掉一个终端,
kill -9 bash 对应的进程号
pstree [选项] ,可以更加直观的来看进程信息
-p :显示进程的 PID
-u :显示进程的所属用户
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vnItd1fM-1658231560419)(../../../Pictures/Linux/wps210.png)]](https://1000bd.com/contentImg/2022/08/02/091055039.png)
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYEvvIYQ-1658231560419)(../../../Pictures/Linux/wps211.png)]](https://1000bd.com/contentImg/2022/08/02/091055305.png)
请使用 service 指令,查看,关闭,启动 network
[注意:在虚拟系统演示,因为网络连接会关闭]
指令:
service network status
service network stop
service network start
方式 1:使用 setup -> 系统服务 就可以看到全部。
setup
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BLkZ7iiY-1658231560419)(../../../Pictures/Linux/wps213.png)]](https://1000bd.com/contentImg/2022/08/02/091055430.png)
方式 2: /etc/init.d 看到 service 指令管理的服务
ls -l /etc/init.d
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
开机的流程说明:

在 /etc/initab
进行了简化 ,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5 init 0
# To view current default target, run:
systemctl get-default
# To set a default target, run:
systemctl set-default TARGET.target
通过 chkconfig 命令可以给服务的各个运行级别设置自 启动/关闭
chkconfig 指令管理的服务在 /etc/init.d 查看

注意: Centos7.0 后,很多服务使用 systemctl 管理
chkconfig 基本语法
案例演示 :
对 network 服务进行各种操作, 把 network 在 3 运行级别,关闭自启动
chkconfig --level 3 network off
chkconfig --level 3 network on
使用细节
chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 生效.
基本语法:
systemctl [start | stop | restart | status] 服务名
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态, grep 可以进行过滤)
systemctl enable 服务名 (设置服务开机启动)
systemctl disable 服务名 (关闭服务开机启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service
systemctl status firewalld;
systemctl stop firewalld;
systemctl start firewalld
关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可]
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用 systemctl [enable|disable] 服务名
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080 等
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YH4otTiu-1658231560420)(../../../Pictures/Linux/wps219.png)]](https://1000bd.com/contentImg/2022/08/02/091055821.png)
netstat -anp|more 查看端口号协议
top [选项]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Qq7nTC7-1658231560420)(../../../Pictures/Spring/wps221.png)]](https://1000bd.com/contentImg/2022/08/02/091055992.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fgnGGUzU-1658231560421)(../../../Pictures/Spring/wps222.png)]](https://1000bd.com/contentImg/2022/08/02/091056133.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FU5TMy8-1658231560421)(../../../Pictures/Linux/wps224.png)]](https://1000bd.com/contentImg/2022/08/02/091056258.png)
netstat -anp | grep sshd
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DFDvwQGv-1658231560421)(../../../Pictures/Linux/wps226.png)]](https://1000bd.com/contentImg/2022/08/02/091057052.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iKt8c3KC-1658231560422)(../../../Pictures/Spring/wps227.png)]](https://1000bd.com/contentImg/2022/08/02/091057224.png)
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。
如: ping 对方 ip 地址
rpm 用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
查询已安装的 rpm 列表 rpm –qa|grep xx
举例: 看看当前系统,是否安装了 firefox 指令: rpm -qa | grep firefox
一个 rpm 包名:firefox-60.2.2-1.el7.centos.x86_64
表示 centos7.x 的 64 位系统。如果是 i686、i386 表示 32 位系统,noarch 表示通用
rpm -qa :查询所安装的所有 rpm 软件包
rpm -q 软件包名 : 查询软件包是否安装案例:
rpm -q firefox
rpm -qi 软件包名:查询软件包信息案例:
rpm -qi firefox
rpm -ql 软件包名 :查询软件包中的文件比如:
rpm -ql firefox
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd rpm -qf /root/install.log
基本语法
rpm -e RPM 包的名称 //erase
应用案例
删除 firefox 软件包
rpm -e firefox
细节讨论
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
$ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1
如果我们就是要删除 foo 这个 rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
$ rpm -e --nodeps foo
基本语法
rpm -ivh RPM 包全路径名称
参数说明
i=install 安装
v=verbose 提示
h=hash 进度条
应用实例
演示卸载和安装 firefox 浏览器
rpm -e firefox rpm -ivh firefox
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFH3ggq4-1658231560422)(../../../Pictures/Linux/wps231.png)]](https://1000bd.com/contentImg/2022/08/02/091057365.png)
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
查询 yum 服务器是否有需要安装的软件
yum list|grep xx 软件列表
yum install xxx 下载安装
案例:请使用 yum 的方式来安装 firefox
yum list | grep firefox
yum install firefox
/var/log/ 目录就是系统日志文件的保存位置,看张图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9c31xraq-1658413990859)(../../../Pictures/Spring/wps318.png)]](https://1000bd.com/contentImg/2022/08/02/091057646.png)
系统常用的日志
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufZ3H6n2-1658413990861)(../../../Pictures/Linux/wps319.png)]](https://1000bd.com/contentImg/2022/08/02/091057810.png)
应用案例
使用 root 用户通过 xshell6 登陆, 第一次使用错误的密码,第二次使用正确的密码登录成功看看在日志文件/var/log/secure 里有没有记录相关信息
CentOS7.6 日志服务是 rsyslogd , CentOS6.x 日志服务是 syslogd 。rsyslogd 功能更强大。rsyslogd 的使用、日志文件的格式,和 syslogd 服务兼容的。原理示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dy0aUZYx-1658413990861)(../../../Pictures/Linux/wps321.png)]](https://1000bd.com/contentImg/2022/08/02/091057966.png)
查询 Linux 中的 rsyslogd 服务是否启动
ps aux | grep “rsyslog” | grep -v “grep”
查询 rsyslogd 服务的自启动状态
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf
编辑文件时的格式为: . 存放日志文件其中第一个代表日志类型,第二个代表日志级别
日志类型分为:
auth ##pam 产生的日志
authpriv ##ssh、ftp 等登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to nuix copy 主机之间相关的通信
local 1-7 ##自定义的日志设备
日志级别分为:
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少
由日志服务 rsyslogd 记录的日志文件,日志文件的格式包含以下 4 列:
日志如何查看实例
查看一下 /var/log/secure 日志,这个日志中记录的是用户验证和授权方面的信息 来分析如何查看
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5IdOlG72-1658413990861)(../../../Pictures/Spring/wps324.png)]](https://1000bd.com/contentImg/2022/08/02/091058122.png)
日志管理服务应用实例
在/etc/rsyslog.conf 中添加一个日志文件/var/log/hsp.log,
当有事件发送时(比如 sshd 服务相关事件),该文件会接收到信息并保存.
日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除
centos7 使用 logrotate 进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中“dateext” 参数:
如果配置文件中有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如 “secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名, 只需要指定保存日志个数,删除多余的日志文件即可。
如果配置文件中没有“dateext”参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志, 用来保存新的日志。当第二次进行日志轮替时,“secure.1” 会自动改名为“secure.2”, 当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。
/etc/logrotate.conf 为 logrotate 的全局配置文件
- # rotate log files weekly, 每周对日志文件进行一次轮替
- weekly
- # keep 4 weeks worth of backlogs, 共保存 4 份日志文件,当建立新的日志文件时,旧的将会被删除
- rotate 4
- # create new (empty) log files after rotating old ones, 创建新的空的日志文件,在日志轮替后
- create
- # use date as a suffix of the rotated file, 使用日期作为日志轮替文件的后缀
- dateext
- # uncomment this if you want your log files compressed, 日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
- #compress
- #RPM packages drop log rotation information into this directory
- include /etc/logrotate.d
- # 包含 /etc/logrotate.d/ 目录中所有的子配置文件。也就是说会把这个目录中所有子配置文件读取进来,
-
- #下面是单独设置,优先级更高。
- no packages own wtmp and btmp -- we'll rotate them here
- /var/log/wtmp {
- monthly #每月对日志文件进行一次轮替
- create 0664 root utmp #建立的新日志文件,权限是 0664,所有者是 root,所属组是 utmp 组
- minsize 1M #日志文件最小轮替大小是1MB.也就是日志一定要超过1MB才会轮替,否则就算时间达到一个月,也不进行日志转储
- rotate 1 #仅保留一个日志备份.也就是只有wtmp和wtmp.1日志保留而已
- }
- /var/log/btmp {
- missingok #如果日志不存在,则忽略该日志的警告信息
- monthly
- create 0600 root utmp rotate 1
- }
ü 参数说明
第一种方法是直接在/etc/logrotate.conf 配置文件中写入该日志的轮替策略
第二种方法是在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“include”到主配置文件中,所以也可以把日志加入轮替。
推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写 入/etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。
在/etc/logrotate.d/ 配置轮替文件一览
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ui7PNmAZ-1658413990862)(../../../Pictures/Spring/wps329.png)]](https://1000bd.com/contentImg/2022/08/02/091058451.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gYAtHBcc-1658413990862)(../../../Pictures/Spring/wps330.png)]](https://1000bd.com/contentImg/2022/08/02/091058608.png)
看一个案例, 在/etc/logrotate.conf 进行配置, 或者直接在 /etc/logrotate.d/ 下创建文件 hsplog 编写如下内容, 具体轮替的效果 可以参考 /var/log 下的 boot.log 情况.
日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在 /etc/cron.daily/目录,就会发现这个目录中是
有 logrotate 文件(可执行),logrotate 通过这个文件依赖定时任务执行的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYVDXt2m-1658413990863)(../../../Pictures/Spring/wps332.png)]](https://1000bd.com/contentImg/2022/08/02/091058861.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2eumLiqP-1658413990863)(../../../Pictures/Linux/wps333.png)]](https://1000bd.com/contentImg/2022/08/02/091059039.png)
journalctl 可以查看内存日志, 这里我们看看常用的指令
注意: journalctl 查看的是内存日志, 重启清空演示案例:
使用 journalctl | grep sshd 来看看用户登录清空, 重启系统,再次查询,看看日志有什么变化没有
通过裁剪现有 Linux 系统(CentOS7.6),创建属于自己的 min Linux 小系统,可以加深我们对 linux 的理解。老韩利用 centos7.6,搭建一个小小 linux 系统, 很有趣。
启动流程介绍:
制作 Linux 小系统之前,再了解一下 Linux 的启动流程:
在 Linux 的启动流程中,加载内核文件时关键文件:
1)kernel 文件: vmlinuz-3.10.0-957.el7.x86_64
2)initrd 文件: initramfs-3.10.0-957.el7.x86_64.img
在现有的 Linux 系统(centos7.6)上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。需要明确的是,现在加的这个硬盘在现有的 Linux 系统中是/dev/sdb,但是,当我们把东西全部设置好时,要把这个硬盘拔除,放在新系统上,此时,就是/dev/sda
在/dev/sdb 硬盘上,将其打造成独立的 Linux 系统,里面的所有文件是需要拷贝进去的
作为能独立运行的 Linux 系统,内核是一定不能少,要把内核文件和 initramfs 文件也一起拷到/dev/sdb 上
以上步骤完成,我们的自制 Linux 就完成, 创建一个新的 linux 虚拟机,将其硬盘指向我们创建的硬盘,启动即可
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1x4F9Zlg-1659016464931)(../../../Pictures/Linux/wps337.png)]](https://1000bd.com/contentImg/2022/08/01/164934787.png)
操作步骤
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Edgyugcy-1659016464933)(../../../Pictures/Linux/wps1-16590160625644.jpg)]](https://1000bd.com/contentImg/2022/08/01/164934990.jpeg)

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIG9BUdl-1659016464933)(../../../Pictures/Linux/wps3-16590160625632.jpg)]](https://1000bd.com/contentImg/2022/08/01/164935316.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxrDRrX4-1659016464933)(../../../Pictures/Linux/wps4-16590160625643.jpg)]](https://1000bd.com/contentImg/2022/08/01/164935496.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LmvNxczU-1659016464934)(../../../Pictures/Linux/wps5-16590160625645.jpg)]](https://1000bd.com/contentImg/2022/08/01/164935698.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-37wWXZmh-1659016464934)(../../../Pictures/Linux/wps6.jpg)]](https://1000bd.com/contentImg/2022/08/01/164935880.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAfeKdgK-1659016464934)(../../../Pictures/Linux/wps7.jpg)]](https://1000bd.com/contentImg/2022/08/01/164936054.jpeg)
点击完成,就OK了, 可以使用 lsblk 查看,需要重启
- 1 [root@localhost ~]# fdisk /dev/sdb
- 2 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
- 3 Building a new DOS disklabel with disk identifier 0x4fde4cd0.
- 4 Changes will remain in memory only, until you decide to write them.
- 5 After that, of course, the previous content won't be recoverable.
- 6
- 7
- 8 Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- 9
- 10
- 11 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
- 12 switch off the mode (command 'c') and change display units to
- 13 sectors (command 'u').
- 14 15 16 Command (m for help): n
- 17 Command action
- 18 e extended
- 19 p primary partition (1-4)
- 20 p
- 21 Partition number (1-4): 1
- 22 First cylinder (1-2610, default 1):
- 23 Using default value 1
- 24 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): ***\*+\*******\*5\*******\*00M\****
- 25
- 26
- 27 Command (m for help): n
- 28 Command action29 e extended
- 30 p primary partition (1-4)
- 31 p
- 32 Partition number (1-4): 2
- 33 First cylinder (15-2610, default 15):
- 34 Using default value 15
- 35 Last cylinder, +cylinders or +size{K,M,G} (15-2610, default 2610):
- 36 Using default value 261037 #查看分区38 Command (m for help): p
- 39
- 40
- 41 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
- 42 255 heads, 63 sectors/track, 2610 cylinders
- 43 Units = cylinders of 16065 * 512 = 8225280 bytes
- 44 Sector size (logical/physical): 512 bytes / 512 bytes
- 45 I/O size (minimum/optimal): 512 bytes / 512 bytes
- 46 Disk identifier: 0x4fde4cd0
- 47
- 48
- 49 Device Boot Start End Blocks Id System
- 50 /dev/sdb1 1 14 112423+ 83 Linux
- 51 /dev/sdb2 15 2610 20852370 83 Linux
- 52 #保存并退出
- 53 Command (m for help): w
- 54 The partition table has been altered!
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
#mkdir -p /mnt/boot /mnt/sysroot
#mount /dev/sdb1 /mnt/boot
#mount /dev/sdb2 /mnt/sysroot/
#grub2-install --root-directory=/mnt /dev/sdb
#我们可以来看一下二进制确认我们是否安装成功
#hexdump -C -n 512 /dev/sdb
#cp -rf /boot/* /mnt/boot/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OSRjCOhS-1659016464934)(…/…/…/Pictures/Linux/wps8.jpg)] 在grub.cfg文件中 , 红色部分用 上面 sdb1 的 UUID替换,蓝色部分用 sdb2的UUID来替换, 紫色部分是添加的,表示selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiyfO80L-1659016464935)(../../../Pictures/Linux/QQ%E5%9B%BE%E7%89%8720220728215211.png)]](https://1000bd.com/contentImg/2022/08/01/164936297.png)
#mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
#cp /lib64/. /mnt/sysroot/lib64/
#cp /bin/bash /mnt/sysroot/bin/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2SixoQJN-1659016464935)(../../../Pictures/Linux/wps9.jpg)]](https://1000bd.com/contentImg/2022/08/01/164936721.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hFhRSA2-1659016464935)(../../../Pictures/Linux/wps10.jpg)]](https://1000bd.com/contentImg/2022/08/01/164937126.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bd9jIKxF-1659016464935)(../../../Pictures/Linux/wps11.jpg)]](https://1000bd.com/contentImg/2022/08/01/164937723.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1paMP4bO-1659016464936)(../../../Pictures/Linux/wps12.jpg)]](https://1000bd.com/contentImg/2022/08/01/164937912.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0R1ziBTC-1659016464936)(../../../Pictures/Linux/wps13.jpg)]](https://1000bd.com/contentImg/2022/08/01/164938105.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B99lSfuy-1659016464936)(../../../Pictures/Linux/wps14.jpg)]](https://1000bd.com/contentImg/2022/08/01/164938300.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XxXA3Eog-1659016464937)(../../../Pictures/Linux/wps15.jpg)]](https://1000bd.com/contentImg/2022/08/01/164938501.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VYebY6ka-1659016464937)(../../../Pictures/Linux/wps16.jpg)]](https://1000bd.com/contentImg/2022/08/01/164938797.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3L320UJR-1659016464937)(../../../Pictures/Linux/wps17.jpg)]](https://1000bd.com/contentImg/2022/08/01/164939013.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTb4l5FP-1659016464937)(../../../Pictures/Linux/wps18.jpg)]](https://1000bd.com/contentImg/2022/08/01/164939165.jpeg)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7BNVp37-1659016464938)(../../../Pictures/Linux/wps19.jpg)]](https://1000bd.com/contentImg/2022/08/01/164939323.jpeg)
这时,很多指令都不能使用,比如 ls , reboot 等,可以将需要的指令拷贝到对应的目录即可
如果要拷贝指令,*重新进入到原来的 linux系统拷贝相应的指令即可*,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin
root@hspedu100 ~]# mount /dev/sdb2 /mnt/sysroot/
[root@hspedu100 ~]# cp /bin/ls /mnt/sysroot/bin/
[root@hspedu100 ~]# cp /bin/systemctl /mnt/sysroot/bin/
[root@hspedu100 ~]# cp /sbin/reboot /mnt/sysroot/sbin/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6W6868xA-1659016464938)(../../../Pictures/Linux/wps20.jpg)]](https://1000bd.com/contentImg/2022/08/01/164939506.jpeg)
爱好,就是喜欢 linux(黑客精神)
想深入理解 linux 底层运行机制,对操作系统有深入理解
阅读 Linux 内核,你会对整个计算机体系有一个更深刻的认识。作为开发者,不管你从事的是驱动开发,应用开发还是后台开发,你都需要了解操作系统内核的运行机制,这样才能写出更好的代码。
作为开发人员不应该只局限在自己的领域,你设计的模块看起来小,但是你不了解进程的调用机制,你不知道进程为什么会阻塞、就绪、执行几个状态。那么很难写出优质的代码。
找工作面试的需要
作为有追求的程序员,还是应该深入的了解一个操作系统的底层机制,(比如 linux/unix) 最好是源码级别的,这样你写多线程高并发程序,包括架构,优化,算法等,高度不一样的,当然老韩也不是要求小伙伴儿把一个非常庞大的 Linux 内核每一行都读懂。我觉得。你至少能看几个核心的模块。
Linux 的内核源代码可以从网上下载, 解压缩后文件一般也都位于 linux 目录下。内核源代码有很多版本,可以从
linux0.01 内核入手,总共的代码 1w 行左右, 最新版本 5.9.8 总共代码超过 700w 行,非常庞大.
内核地址:https://www.kernel.org/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIU0ytsk-1659016464938)(../../../Pictures/Linux/wps340.png)]](https://1000bd.com/contentImg/2022/08/01/062250268.png)
很多人害怕读 Linux 内核,Linux 内核这样大而复杂的系统代码,阅读起来确实有很多困难,但是也不象想象的那么高不可攀。老韩建议可以从 linux0.01 入手。
阅读内核源码技巧
linux0.01 的阅读需要懂 c 语言
阅读源码前,应知道 Linux 内核源码的整体分布情况。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux 内核源码的各个目录大致与此相对应.
在阅读方法或顺序上,有纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。它们经常结合在一起进行。
对于 Linux 启动的代码可顺着 Linux 的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。实际上这是一个反复的过程,不可能读一遍就理解
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zhFH9LKi-1659016464938)(../../../Pictures/Spring/wps341.png)]](https://1000bd.com/contentImg/2022/08/01/062250561.png)
linux 内核源码阅读&目录介绍&main.c 说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEwPtui8-1659016464938)(../../../Pictures/Linux/wps343.png)]](https://1000bd.com/contentImg/2022/08/01/062250860.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ho3gnSl-1659016464939)(../../../Pictures/Spring/wps344.png)]](https://1000bd.com/contentImg/2022/08/01/062251010.png)
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.16.tar.gz tar -zxvf linux-5.8.16.tar.gz
将 Centos 系统从 7.6 内核升级到 7.8 版本内核(兼容性问题)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2QaR1wc-1659016464939)(../../../Pictures/Spring/wps346.png)]](https://1000bd.com/contentImg/2022/08/01/062251239.png)
uname -a // 查看当前的内核版本
yum info kernel -q //检测内核版本,显示可以升级的内核yum update kernel //升级内核
yum list kernel -q //查看已经安装的内核
实体机无法做快照,如果系统出现异常或者数据损坏,后果严重, 要重做系统,还会造成数据丢失。所以我们可以使用备份和恢复技术
linux 的备份和恢复很简单 , 有两种方式:
把需要的文件(或者分区)用 TAR 打包就行,下次需要恢复的时候,再解压开覆盖即可
使用 dump 和 restore 命令
示意图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SzXnNUL-1659188700912)(../../../Pictures/Spring/wps348.png)]](https://1000bd.com/contentImg/2022/08/02/091059196.png)
如果 linux 上没有 dump 和 restore 指令,需要先按照
yum -y install dump yum -y install restore
dump 支持分卷和增量备份(所谓增量备份是指备份上次备份后 修改/增加过的文件,也称差异备份)。
dump [ -cu] [-123456789] [ -f <备份后文件名>] [-T <日期>] [ 目录或文件系统] dump []-wW
-c : 创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
-0123456789: 备份的层级。0 为最完整备份,会备份所有文件。若指定 0 以上的层级,则备份至上一次备份以来修改或新增的文件, 到 9 后,可以再次轮替.
-f <备份后文件名>: 指定备份后文件名
-j : 调用 bzlib 库压缩备份文件,也就是将备份后的文件压缩成 bz2 格式,让文件更小
-T <日期>: 指定开始备份的时间与日期
-u : 备份完毕后,在/etc/dumpdares 中记录备份的文件系统,层级,日期与时间等。
-t : 指定文件名,若该文件已存在备份文件中,则列出名称
-W :显示需要备份的文件及其最后一次备份的层级,时间 ,日期。
-w :与-W 类似,但仅显示需要备份的文件。
将/boot 分区所有内容备份到/opt/boot.bak0.bz2 文件中,备份层级为“0”
dump -0uj -f /opt/boot.bak0.bz2 /boot
在/boot 目录下增加新文件,备份层级为“1”(只备份上次使用层次“0”备份后发生过改变的数据), 注意比较看看这次生成的备份文件 boot1.bak 有多大
dump -1uj -f /opt/boot.bak1.bz2 /boot
通过 dump 命令在配合 crontab 可以实现无人值守备份

显示需要备份的文件及其最后一次备份的层级,时间 ,日期
cat /etc/dumpdates

前面我们在备份分区时,是可以支持增量备份的,如果备份文件或者目录,不再支持增量备份, 即只能使用 0 级别备份
案例, 使用 dump 备份 /etc 整个目录
dump -0j -f /opt/etc.bak.bz2 /etc/ #下面这条语句会报错,提示 DUMP: Only level 0 dumps are allowed on a subdirectory dump -1j -f /opt/etc.bak.bz2 /etc/
如果是重要的备份文件, 比如数据区,建议将文件上传到其它服务器保存,不要将鸡蛋放在同一个篮子.
restore 命令用来恢复已备份的文件,可以从 dump 生成的备份文件中恢复原文件
restore [模式选项] [选项]
说明下面四个模式, 不能混用,在一次命令中, 只能指定一种。
-C :使用对比模式,将备份的文件与已存在的文件相互对比。
-i:使用交互模式,在进行还原操作时,restors 指令将依序询问用户
-r:进行还原模式
-t : 查看模式,看备份文件有哪些文件
选项
-f <备份设备>:从指定的文件中读取备份数据,进行还原操作
restore 命令比较模式,比较备份文件和原文件的区别测试
mv /boot/hello.java /boot/hello100.java
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eYr0kWm7-1659188700917)(../../../Pictures/Spring/wps354.png)]](https://1000bd.com/contentImg/2022/08/02/091059633.png)
restore -C -f boot.bak1.bz2 //注意和 最新的文件比较
mv /boot/hello100.java /boot/hello.java restore -C -f boot.bak1.bz2
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gypctw7z-1659188700918)(../../../Pictures/Linux/wps355.png)]](https://1000bd.com/contentImg/2022/08/02/091059742.png)
restore 命令查看模式,看备份文件有哪些数据/文件
测试
restore -t -f boot.bak0.bz2
restore 命令还原模式, 注意细节: 如果你有增量备份,需要把增量备份文件也进行恢复, 有几个增量备份文件, 就要恢复几个,按顺序来恢复即可。
测试
mkdir /opt/boottmp cd /opt/boottmp
restore -r -f /opt/boot.bak0.bz2 //恢复到第 1 次完全备份状态
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3ZKKJFw-1659188700919)(../../../Pictures/Linux/wps357.png)]](https://1000bd.com/contentImg/2022/08/02/091059884.png)
restore -r -f /opt/boot.bak1.bz2 //恢复到第 2 次增量备份状态
restore 命令恢复备份的文件,或者整个目录的文件基本语法: restore -r -f 备份好的文件
测试
[root@hspedu100 opt]# mkdir etctmp [root@hspedu100 opt]# cd etctmp/
[root@hspedu100 etctmp]# restore -r -f /opt/etc.bak0.bz2


下载地址 : http://download.webmin.com/download/yum/ , 用下载工具下载即可
也可以使用 wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm
安装: rpm -ivh webmin-1.700-1.noarch.rpm
重置密码 /usr/libexec/webmin/changepass.pl /etc/webmin root test
root 是 webmin 的用户名,不是 OS 的 , 这里就是把 webmin 的 root 用户密码改成了 test
vim /etc/webmin/miniserv.conf # 修改端口
将 port=10000 修改为其他端口号,如 port=6666
重启 webmin
http://ip:6666 可以访问了

用 root 账号和重置的新密码 test
比如修改 语言设置,IP 访问控制,查看进程, 修改密码, 任务调度,mysql 等.

bt 宝塔 Linux 面板是提升运维效率的服务器管理软件,支持一键 LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA 等多项服务器管理功能。
安装 : yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装成功后控制台会显示登录地址,账户密码,复制浏览器打开登录,
比如可以登录终端, 配置,快捷安装运行环境和系统工具, 添加计划任务脚本
http://192.168.200.130:8888/2e673418/


http://192.168.200.10/index1.html
http://192.168.200.10/index2.html
http://192.168.200.20/index1.html
http://192.168.200.30/index1.html
http://192.168.200.40/index1.html
http://192.168.200.30/order.html
http://192.168.200.10/order.html
答案: cat t.txt | cut -d ‘/’ -f 3 | sort | uniq -c | sort -nr
netstat -an | grep ESTABLISHED | awk -F " " ‘{print $5}’ | cut -d “:” -f 1 | sort | uniq -c| sort -nr
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S46PcsaN-1659189039193)(../../../Pictures/Spring/wps370.png)]](https://1000bd.com/contentImg/2022/08/02/091100956.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qf2iZvbs-1659189039195)(../../../Pictures/Linux/wps372.png)]](https://1000bd.com/contentImg/2022/08/02/091101206.png)
cat access.log | awk -F " " ‘{print $1}’ | sort | uniq -c | sort -nr | head -2
tcpdump.log , 用做将来数据分析(美团) >>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g4ZJhICp-1659189039195)(../../../Pictures/Spring/wps373.png)]](https://1000bd.com/contentImg/2022/08/02/091101394.png)
tcpdump -i ens33 host 192.168.200.1 and port 22 >> /home/tcpdump.log
rewrite 模块,实现重写功能
access 模块:来源控制
ssl 模块:安全加密
ngx_http_gzip_module:网络传输压缩模块ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module 模块实现定义后端服务器列表
ngx_cache_purge 实现缓存清除功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3CPuqgte-1659189039196)(../../../Pictures/Spring/wps375.png)]](https://1000bd.com/contentImg/2022/08/02/091101544.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmLWS9NO-1659189039197)(../../../Pictures/Linux/wps376.png)]](https://1000bd.com/contentImg/2022/08/02/091101800.png)
需要操作时再打开。【演示 比如: 锁定 /etc/passwd 让任何用户都不能随意 useradd,除非解除锁定】
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AxjKyUL2-1659189039197)(../../../Pictures/Spring/wps378.png)]](https://1000bd.com/contentImg/2022/08/02/091101956.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBBlSDjO-1659189039198)(../../../Pictures/Linux/wps379.png)]](https://1000bd.com/contentImg/2022/08/02/091102144.png)
用户 tom 对目录 /home/test 有执行 x 和读 r 写 w 权限,/home/test/hello.java 是只读文件,问 tom 对 hello.java 文件能读吗(ok)? 能修改吗(no)?能删除吗?(ok)
用户tom 对目录 /home/test 只有读写权限,/home/test/hello.java 是只读文件,问tom 对 hello.java 文件能读吗(no)? 能修改吗(no)?能删除吗(no)?
用户 tom 对目录 /home/test 只有执行权限 x,/home/test/hello.java 是只读文件,问 tom 对 hello.java 文件能读吗(ok)? 能修改吗(no)?能删除吗(no)?
用户 tom 对目录 /home/test 只有执行和写权限,/home/test/hello.java 是只读文件,问 tom 对 hello.java 文件能读吗(ok)? 能修改吗(no)?能删除吗(ok)?
netstat //网络状态监控 top //系统运行状态 lsblk //查看硬盘分区 find
ps -aux //查看运行进程 chkconfig //查看服务启动状态 systemctl //管理系统服务器
top, iotop, df -lh , netstat -tunlp , ps -aux | grep 关心的进程
张三 40
李四 50
王五 60
cat t2.txt | awk -F " " ‘{sum+=$2} END {print sum}’
if [ -f 文件名 ] then echo “存在” else echo “不存在” fi
9 8 7 6 5 4 3 2 10
sort -nr t3.txt | awk '{sum+=$0; print $0} END {print "和="sum}
grep -r “cat” /home |cut -d “:” -f 1
find /home/test -name “.” | wc -l
find /home/test -name “.” | xargs wc -l
Nginx Haproxy Keepalived LVS

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMAvijWs-1659189039199)(../../../Pictures/Spring/wps383.png)]](https://1000bd.com/contentImg/2022/08/02/091102378.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8S0VsEkG-1659189039200)(../../../Pictures/Spring/wps385.png)]](https://1000bd.com/contentImg/2022/08/02/091102956.png)