第一章 Linux 基础篇- VM 和 Linux 的安装
1.1、安装 vm 和 Centos
学习 Linux 需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个 Centos 系统来学习
- 先安装 virtual machine 15.5
- 再安装 Linux (CentOS 7.6/centOS8.1)
- 原理示意图 [画]
1.2、 vmware15.5 下载
- 官方地址:https://www.vmware.com/cn.html
- 其它地址:https://www.nocmd.com/windows/740.html
1.3 、VM 安装的步骤
- 去 BIOS 里修改设置开启虚拟化设备支持(f2, f10)
- 安装虚拟机软件(vm15.5), 演示一把,1. 在 BIOS 开启 CPU 虚拟化支持
- https://jingyan.baidu.com/article/ab0b56305f2882c15afa7dda.html 然后再安装
1.4 、Centos 下载地址
- CentOS-7-x86_64-DVD-1810.iso CentOS 7.6 DVD 版 4G (目前主流的生产环境)
http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso - CentOS-8.1.1911-x86_64-dvd1.iso CentOS 8.1 DVD 版 8G (未来的主流.)
https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso
1.5 、CentOS 安装的步骤
- 创建虚拟机 [演示]
- 开始安装系统(CentOS7.6)的步骤 [演示] 提示生成复杂码:https://suijimimashengcheng.51240.com/
- CentOS 安装难点-网络连接方式理解 [示意图 ]
1.6、安装虚拟机和 CentOS
自行百度吧,有手就行
1.7、虚拟机克隆
方式 1:直接拷贝一份安装好的虚拟机文件
方式 2:使用 vmware 的克隆操作,注意, 克隆时,需要先关闭 linux 系统
1.8、虚拟机快照
如果你在使用虚拟机系统的时候(比如 linux),你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware 也提供了这样的功能,就叫快照管理 。
1.9、虚拟机迁移和删除
虚拟系统安装好了,它的本质就是文件(放在文件夹的)。因此虚拟系统的迁移很方便,你可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外位置使用。删除也很简单,用 vmware 进行移除,再点击菜单->从磁盘删除即可,或者直接手动删除虚拟系统对应的文件夹即可。
1.10、安装 vmtools
- 进入 centos
- 点击 vm 菜单的->install vmware tools
- centos 会出现一个 vm 的安装包, xx.tar.gz
- 拷贝到 /opt
- 使用解压命令 tar, 得到一个安装文件
cd /opt [进入到 opt 目录]
tar -zxvf xx.tar.gz - 进入该 vm 解压的目录 , /opt 目录下
cd vmware… - 安装 ./vmware-install.pl
- 全部使用默认设置即可, 就可以安装成功
- 注意:安装 vmtools 需要有 gcc . gcc -v
1.10.1 设置共享文件夹
基本介绍
为了方便,可以设置一个共享文件夹,比如 d:/myshare
具体步骤
-
菜单->vm->setting, 如图设置即可注意:设置选项为 always enable ,这样可以读写了
-
windows 和 centos 可共享 d:/myshare 目录可以读写文件了
-
共享文件夹在 centos 的 /mnt/hgfs/ 下
注意事项和细节说明
- windows 和 contos 就可以共享文件了,但是在实际开发中,文件的上传下载是需要使用 远程方式完成的
- 远程方式登录,我们后面会具体讲解示意图
第 二章 Linux 基础篇-目录结构
2.1、 Linux 目录结构
2.1.1、基本介绍
- linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
- 记住一句经典的话:在 Linux 世界里,一切皆文件(!!)
2.1.2、Linux的目录结构
-
/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 服务器
3.1、远程登录 Linux-Xshell6
- Xshell 是目前最好的远程登录到 Linux 操作的软件,流畅的速度并且完美解决了中文乱码的问题, 是目前程序员首选的软件。
- Xshell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。
- Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
3.2、下载 free-for-home-school 版本
地址: https://www.netsarang.com/en/free-for-home-school/
3.3、远程上传下载文件-Xftp6
地址: https://www.netsarang.com/en/free-for-home-school/
3.4、Xftp解决乱码问题
第 四 章 Linux 实操篇- Vi 和 Vim 编辑器
4.1、vi 和 vim 常用的三种模式
1、正常模式
以 vim 打开一个档案就直接进入一般模式了(这是 默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。
2、插入模式
按下 i, I, o, O, a,A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可.
3、命令行模式
输入 esc 再输入:冒号,在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
wq表示写入并退出
q表示退出
!q表示强制退出,并且不保存
4.1.2、vi 和 vim 快捷键
- 拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(输入 p)。5yy,拷贝当前行向下的 5 行 yy5,拷贝当前行五次
- 删除当前行 dd , 删除当前行向下的 5 行 5dd 5dd,删除当前行向下的 5 行 dd删除当前行
- 在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]
- 设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]
- 编辑 /etc/profile 文件,在一般模式下, 使用快捷键到该文档的最末行[G]和最首行[gg]
- 在一个文件中输入 “hello” ,在一般模式下, 然后又撤销这个动作 u
- 编辑 /etc/profile 文件,在一般模式下, 并将光标移动到 , 输入 20,再输入 shift+g 快速指定到某行
- 更多的看整理的文档
- 快捷键的键盘对应图
第 五 章 Linux 实操篇-开机、重启和用户登录注销
5.1、关机命令shutdown
关机命令shutdown直接写shutdown表示shudown -h 1
命令 | 解释 |
---|---|
shutdown –h now | 立该进行关机 |
shudown -h 1 | “hello, 1 分钟后会关机了” |
shutdown –r now | 现在重新启动计算机,等同于reboot |
halt | 关机,作用和上面一样 |
reboot | 现在重新启动计算机 |
sync | 把内存的数据同步到磁盘 |
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中
目前的 shutdown/reboot/halt 等命令均已经在关机前进行了 sync
第 六章 Linux 实操篇-用户管理
6.1、用户登录和注销
登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.记住-后面有空格
在提示符下输入 logout 即可注销用户
logout 注销指令在图形运行级别无效,在运行级别 3 下才有效.
在当前用户下再执行logout命令则,退出该系统
6.2、用户管理
Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
6.2.1、添加用户
useradd 用户名
默认该用户的家目录在 /home/用户名
useradd -d 【指定目录】【 新用户名】 (可以创建指定目录)
useradd -d /home/test king (添加了king为名称的用户,指定该用户在/home/test目录下!)
useradd -g 【指定所在组 】 【用户名】
没有指定组的话,系统会自动创建名称相同的组名!
6.2.2、修改密码
passwd 用户名
如果不添加用户名,默认则修改当前用户下的密码
6.2.3、删除用户
userdel 用户名
删除必须要有管理员权限,且不能自己删除自己!
删除分两种:
- 删除用户但不删除目录
userdel 用户名
- 删除用户且删除目录(一定要慎重考虑)
userdel -r 用户名
6.2.4、查询用户信息
id 用户名
会查询的到该用户下所在的组,uid、gid
6.2.5、切换用户
su - 用户名 -后面 是带空格的!
从权限高的用户,切换到低权限的用户,不需要密码!反之低到高,就需要
6.2.6、查看当前用户信息
whoami
who am I I这里的i是大写的!
6.3、用户组
类似于AD域,可以对该域中的多个角色进行统一管理
6.3.1、新增组
groupadd 组名
6.3.2、删除组
groupdel 组名
6.3.3、添加用户时直接添加上组名
useradd -g 用户组 用户名
6.3.4、修改用户组
usermod -g 用户组 用户名
6.4、用户和组相关文件
- /etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
- /etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
第 七 章 Linux 实操篇-实用指令
7.1、常用的命令
7.1.1、指定运行级别
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
命令 init 运行级别
常用运行级别是 3 和 5 ,也可以指定默认运行级别
在 centos7 以前, /etc/inittab 文件中 . 进行了简化 ,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
当前运行的级别
systemctl get-default
设置默认的启动级别
systemctl set-default multi-user.target
7.2、找回密码
首页启动系统,在进入开机界面中按"e"进入编辑模式
进入编辑界面,使用键盘上下键将光标往下移,找到Linux16开头所在的位置
在最后面输入 init=/bin/sh
接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式。
接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图
在新的一行最后面输入:passwd, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(密码长度最好8位以上**,**但不是必须的), 密码修改成功后,会显示passwd…的样式,说明密码修改成功
接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效了
7.3、帮助指令
7.3.1、man [命令或配置文件]
man 【指令名】
获取帮助信息
隐藏文件是以点开头的
7.3.2、help指令
获取shell内置命令的帮助信息
help 【命令】
7.4、文件目录类
7.4.1、pwd指令:显示当前工作目录的绝对路径
pwd
7.4.2、ls指令:显示当前目录的文件
ls 【选项】 【目录/文件】
常用选项
-a:显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的形式进行展示
-lh:以列表的形式进行展示,且文件大小以单位来计算
7.4.3、cd指令:切换到指定目录下
cd ~ 或者 cd 回到自己的家目录下
cd …/ 回到当前目录的上一级
7.4.4、mkdir指令:创建指令
mkdir 【选项】 要创建的目录
-p :创建多级目录
#创建一个目录
mkdir /home/dog
#创建多级目录
mkdir -p /home/dog/demo
7.4.5、rmdir指令:删除空目录
rmdir 【选项】 要删除的空目录
#删除空的一个目录
rmdir /home/dog
#删除一个非空目录
rm -rf /home/dog
7.4.6、touch指令:创建空文件
touch 文件名
#创建一个空文件
touch a.txt
7.4.7、cp指令:拷贝文件到指定目录
cp 【选项】 拷贝文件的目录 拷贝到哪里去
-r 递归复制整个文件夹
#将/home/hello.txt文件拷贝到 /home/zwj 目录下
cp /home/hello.txt /home/zwj
强制覆盖不提示的方法!
cp【选项】 拷贝文件的目录 拷贝到哪里去
7.4.8、rm指令: 删除指定目录或文件
rm 【选项】 要删除的目录或文件
-r :递归删除整个文件夹
-f :强制删除不提示
#将/hoem/hello.txt删除
rm -f /hoem/hello.txt
强制删除且不提示 【选项】带上-f参数
7.4.9、mv指令:移动文件与目录或者重命名
mv 旧文件名字 新文件名字
mv 旧文件地址 新文件地址
7.4.10、cat指令:查看文件内容
cat 【选项】要查看文件名
-n 显示行数
#显示a.txt文件内容,并显示行数 cat -n a.txt
cat只能用来浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
7.4.11、more指令:
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),
more 要查看的文件
#显示a.txt文件内容,并显示行数
cat -n a.txt | more more a.txt
7.4.12、less指令
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
less 要查看的文件
7.4.13、echo指令:输出内容到控制台
echo 【选项】 【输出内容】
#输出环境变量,比如$PATH $HOSTNAME
echo $PATH
#输出内容到控制台,如Hello,world
echo "Helllo,world"
7.4.14、head指令
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
head 文件路径或名字
head -n 5 文件路径或名字 (查看文件头5行内容,5可以是任意行数)
head -n 5 /etc/profile
7.4.15、tail指令:输出文件中尾部的内容
默认情况下tail指令显示文件的前十行
tail 【文件】
tail -n 5 【文件】 (查看文件尾的5行内容,5可以是任意数)
tail -f 【文件】 (实时追踪该文档的所有更新)
#查看/etc/profile 最后五行的代码
tail -n 5 /etc/profile
#实时监控mydate.txt,看到文件有变化时,是否看到实时的追加日期
tail -f /home/mydate.txt
7.4.16、>指令和>>指令
>输出重定向
>>追加内容,保留原来的内容,复制内容到指定路径
ls -l > 文件 (列表的内容写入到文件a.txt中,覆盖写)
ls -al >> 文件 (列表的内容追加到文件的内容的末尾)
cat 文件1 > 文件2 (将文件1的内容覆盖到文件2中)
echo “内容” >> 文件 (控制台输出的内容追加到文件末尾去)
#将 /home 目录下的文件列表 写入到 /home/info.txt 中, 覆盖写入
ls -l /home > /home/info.txt
#将当前日历信息 追加到 /home/mycal.txt 文件中
cal >> /home/mycal.txt
7.4.17、ln指令:软连接也称符号链接
类似于Windows里的快捷方式,主要存放了链接其他文件的路径
ln -s 【原文件】 【软连接名】 (给原文件创建一个软连接)
#在/home目录下创建一个软连接myroot,连接到/root目录
ln -s /root/ /myroot
#删除软连接myroot
rm /home/myroot
7.4.17、history指令:查看已经指向过的历史命令,也可以指向历史指令
#显示所有的历史指令
history
#显示最近使用过的10个指令
history 10
#执行历史编号为5的指令
!5
7.5、时间日期类
7.5.1、date指令:显示当前日期
date (显示当前时间)
date +%Y (显示当前年份)
date +%m (显示当前月份)
date +%d (显示当前是哪一天)
date “+%Y-%m-%d %H:%M:%S” (显示年月日时分秒)
+号后面不需要空格!
如何设置日期呢?
date -s 字符串时间
7.5.2、cal指令:查看日历指令
cal 【选项】
默认显示本月日历
#显示当前日期
cal
#显示2020年日历
cal 2020
7.6、搜索查找类
7.6.1、find指令:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find 【范围】 【选项】
-name<查询方式> (按照指定的文件名查询模式查找文件)
-user<用户名> (查找属于指定用户名所有文件)
-size<文件大小> (按照指定的文件大小查找文件)
#按文件名:根据名称查找/home 目录下的 hello.txt 文件
find /home -name hello.txt
#按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
find /opt -user nobody
#查找整个 linux 系统下大于 200M 的文件(+n 大于 -n 小于 n 等于, 单位有 k,M,G)
find / -size +200M
7.6.2、locate指令:搜索文件
locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。
Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻
locate 搜索文件
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
#第一次执行locate指令需要先执行这段命令
updatedb
#检索文件
locate hello.txt
7.6.3、which指令:查看某个指令在哪个目录下
which 【指令】
7.6.4、grep指令:过滤查找
grep 【选项】【查找内容】 【源文件】
-n (显示匹配行)
-i (忽略字母大小写)
# 在hello.txt文件中查找“yes”所在行,并显示行号
grep -n "yes" hello.txt cat /home/hello.txt | grep "yes"
#检索文件
locate hello.txt
7.7、压缩和解压类
7.7.1、gzip/gunzip指令:压缩/解压
gzip 【文件】 (压缩文件,只能将文件压缩*.gz文件)
gunzip 【文件.gz】 (解压缩文件命令)
# gzip压缩,将/home下的hello.txt文件进行压缩
gzip hello.txt
#gunzhip压缩,将/home下的hello.txt.gz 文件进行解压缩
gunzip hello.txt.gz
7.7.2、zip/unzip指令:压缩/解压
zip 【选项】 【压缩文件名.zip】 【将要压缩的文件或目录】
-r (递归压缩)
unzip 【选项】【将要解压缩的文件或目录】
-d<目录> (指定解压后文件的存放目录)
# 将/home下的所有文件进行压缩成myhome.zip
zip -r myhome.zip /home/
#将myhome.zip解压到 /opt/tmp 目录下
mkdir /opt/tmp unzip -d/opt/tmp /home/myhome.zip
7.7.3、tar指令:打包
最后打包后的文件是.tar.gz的文件
tar 【选项】 【文件名.tar.gz】 【打包的文件】
-c (产生.tar打包文件)
-v(显示详细信息)
-f(指定压缩后的文件名)
-z(打包同时进行压缩)
-x(解包.tar文件)
#压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pc.tar.gz pig.txt cat.txt
#将/home 的文件夹 压缩成 myhome.tar.gz
tar -zcvf myhome.tar.gz /home
#将 pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz
#将myhome.tar.gz 解压到 /opt/tmp2目录下
tar -zxvf pc.tar.gz -c /opt/tmp2
第 八 章Linux 实操篇-组管理和权限管理
8.1、Linux 组基本介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。
8.1.1、所有者
查看文件的所有者
ls -ahl
修改文件所有者
chown 【用户名】 【文件名】
#使用root创建一个文件apple.txt,然后将其所有者修改为zwj
touch apple.txt chown zwj apple.txt
8.1.2、所在组
组的创建
group 【组名】
#创建一个组monster,创建一个用户fox并放入monster组中
groupadd monster
useradd -g monster fox
查看所在组
ls -ahl
ll
8.1.3、修改文件所在的组
chgrp 【组名】 【文件名】
#使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组。
groupadd zwj
touch orange.txt
ls -alh
chgrp fruit oranfe.txt
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在的组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用rroot权限可以改变某个用户所在的组
usermod -g 【新组名】 【用户名】(改变用户所在的组)
usermod -d 【目录名】 【用户名】 (改变该用户登录的初始目录)
#将zwj这个用户从原来的组,修改稿wudang组
groupadd wudang
usermod -g wudang zwj
id zwj #查询有没有这个用户
第 九 章Linux 实操篇-组管理和权限管理
9.1、权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
- 第 0 位确定文件类型(d, - , l , c , b)
- - 是文件,相当于普通的文件
- l 是链接,相当于 windows 的快捷方式
- d 是目录,相当于 windows 的文件夹
- c 是字符设备文件,鼠标,键盘
- b 是块设备,比如硬盘
- 第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User
- 第 4-6 位确定所属组(同用户组的)拥有该文件的权限,—Group
- 第 7-9 位确定其他用户拥有该文件的权限 —Other
rwx 作用到文件
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被执行
rwx 作用到目录
- [ r ]代表可读(read): 可以读取,ls 查看目录内容
- [ w ]代表可写(write): 可以修改, 对目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
案例:-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 (文件名)
-是没有权限的意思
9.2、修改权限 chmod
通过chmod指令可以修改文件或目录的权限
9.2.1、第一种方式: +、-、=变更权限
u:所有者、g:所有组、o:其他人、a:所有人
- chmod u=rwx,g=rx,o=x 【文件/目录名】 (给该文件的所有者赋予读、写、执行权限,所有组赋予读、写权限,给其他人赋予执行权限)
- chmod o+w 【文件/目录名】 (给其他人赋予写权限)
- chmod a-x 【文件/目录名】 (给所有人取消执行权限)
#给 abc.txt 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
chmod u=rwx,g=rx,o=rx abc.txt
#给 abc.txt 文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc.txt
#给 abc.txt 文件的所有用户添加读的权限
chmod a+r abc.txt
9.2.2、第二种方式:通过数字变更权限
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 757 /home/abc.txt
x: 表示可以进入到该目录, 比如 cd
r: 表示可以 ls , 将目录的内容显示
w: 表示可以在该目录,删除或者创建文件
9.2.3、修改文件所有者
chown 【新的所有者】 【文件/目录】 (改变所有者)
chown 【所有者】:【所在组】 【文件/目录】(改变所有者和所在组)
-R 如果是目录 则使其下所有子文件或目录递归生效
#请将 /home/abc.txt 文件的所有者修改成 zwj
chown zwj /home/abc.txt
#请将 /home/test 目录下所有的文件和目录的所有者都修改成zwj
chown -R zwj /home/test
9.2.4、修改文件/目录所在组 chgrp
chgrp 【修改组名】 【文件/目录】 (改变所在组)
#请将 /home/abc.txt 文件的所在组修改成 shaolin (少林)
chgrp shaolin /home/abc.txt
# 请将 /home/test 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
chgrp -R shaolin /home/test
9.3、权限操作思考题
- 用户 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)?
第 十 章Linux 实操篇-定时任务调度
10.1、crond任务调度
任务调度是指系统在某个时间执行的特定的命令或程序
crontab 【选项】
-e (编辑crontab定时任务)
-l (查询crontab任务)
-r (删除当前用户所有的crontab任务)
service crond restart (重启任务调度)
#每小时的每分钟执行ls -l /etc/ > /zwj/to.txt
crontab -e
*/1 * * * * ls -l /etc/ >/zwj/to.txt
10.1.1、参数细节说明
5 个占位符的说明
特殊符号的说明
特殊时间执行案例
#每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中
vim mycal.sh
#在mycal.sh里写
date >> /home/mycal
cal >> /home/mycal
#写完,再写一个定时任务
crontab -e
*/1 * * * * /home/mycal.sh
#每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
crontab -e
*/1 * * * * date >> /tmp/mydate
#每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中。
#提示: 指令为
mysqldump -u root -p 密码 数据库 > /home/db.bak
crontab -e
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
10.2、at定时任务
at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
默认情况下,atd 守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在使用 at 命令的时候,一定要保证 atd 进程的启动 , 可以使用相关指令来查看
ps -ef | grep atd (可以检测 atd 是否在运行)
at 【选项】 【时间】 CTRL+D 结束at命令的输入
atq 命令来查看系统中没有执行的工作任务
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(明天)来指定完成命令的时间。
#2 天后的下午 5 点执行 /bin/ls /home
ps -ef | grep atd
at 5pm + 2days
/bin/ls /home
#atq 命令来查看系统中没有执行的工作任务
atq
#明天 17 点钟,输出时间到指定文件内 比如 /root/date100.log
at 5pm tomorrow
date > /root/date100.log
#2 分钟后,输出时间到指定文件内 比如 /root/date200.log
at new + 2minutes
date > /root/date200.log
#删除已经设置的任务 , atrm 编号
atq
atrm 1
atrm 2
atrm 3
第 十一 章Linux 实操篇-Linux 磁盘分区、挂载
11.1、Linux分区
对于Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
硬盘说明:
- Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
- 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
- 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样,x为a、b、c对应于1、2、3块硬盘 ,~代表为这块硬盘的第几个分区
11.1.1、查看所有设备挂载情况 lsblk
lsblk 或者 lsblk -f
11.1.2、 分区指令fdisk
fdisk 【哪个区】
开始对/sdb 分区
fdisk /dev/sdb
m 显示命令列表
p 显示磁盘分区 同 fdisk –l
n 新增分区
d 删除分区
w 写入并退出
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w
写入分区并退出,若不保存退出输入 q。
还需要格式化!
mkfs -t 【文件类型】 【硬盘名称】
一般文件类型为ext4
还需要挂载目录!
mount 【磁盘名称】 【挂载目录名】
用命令行挂载,重启后会失效
如果需要卸载
umount 【磁盘名称】 【挂载目录名】
注意: 用命令行挂载,重启后会失效
永久挂载硬盘步骤
永久挂载: 通过修改/etc/fstab 实现挂载
添加完成后 执行 mount –a 即刻生效或者重启也可以
[root@huang /]# vim /etc/fstab
11.2、磁盘情况查询
11.2.1 查询系统整体磁盘使用情况
基本语法
df -h
11.2.2、查询指定目录的磁盘占用情况
基本语法
du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
#查询 /opt 目录的磁盘占用情况,深度为 1
du -h --max-depth=1 /opt
11.2.3、磁盘情况-工作实用指令
- 统计/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 安装
tree /opt
第 十二 章Linux 实操篇-网络配置
12.1、Linux 网络配置原理图
12.1.1、查看网络 IP 和网关
查看虚拟网络编辑器和修改 IP 地址
查看 windows 环境的中 VMnet8 网络配置 (ipconfig 指令)
查看 linux 的网络配置 ifconfig
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
12.2、inux 网络环境配置
12.2.1、指定 ip
编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33
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.2.130
#网关
GATEWAY=192.168.2.2
#域名解析器
DNS1=192.168.2.2
还需要重新设置vm的虚拟网络编辑器
重启网络服务或者重启系统生效
service network restart 、reboot
12.3、设置主机名和 hosts 映射
12.3.1、 设置主机名
- 为了方便记忆,可以给 linux 系统设置主机名, 也可以根据需要修改主机名
- 指令 hostname : 查看主机名
- 修改文件在 /etc/hostname 指定
- 修改后,重启生效
12.3.2、 设置 hosts 映射
思考:如何通过 主机名能够找到(比如 ping) 某个 linux 系统?
windows
在 C:\Windows\System32\drivers\etc\hosts 文件指定即可
案例: 192.168.2.130 huang
linux
在 /etc/hosts 文件 指定
案例: 192.168.2.130 huang
12.3.3、主机名解析过程分析(Hosts、DNS)
Hosts 是什么
一个文本文件,用来记录 IP 和 Hostname(主机名)的映射关系
DNS
DNS,就是 Domain Name System 的缩写,翻译过来就是域名系统是互联网上作为域名和 IP 地址相互映射的一个分布式数据库
12.3.4、应用实例: 用户在浏览器输入了 www.baidu.com
浏览器先检查浏览器缓存中有没有该域名解析 IP 地址,有就先调用这个 IP 完成解析;如果没有,就检查 DNS 解析器缓存,如果有直接返回 IP 完成解析。这两个缓存,可以理解为 本地解析器缓存
一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的 IP 地址(DNS 解析记录).如 在 cmd 窗口中输入
ipconfig /displaydns //DNS 域名解析缓存
ipconfig /flushdns //手动清理 dns 缓存
如果本地解析器缓存没有找到对应映射,检查系统中 hosts 文件中有没有配置对应的域名 IP 映射,如果有,则完成解析并返回。
如果 本地 DNS 解析器缓存 和 hosts 文件 中均没有找到对应的 IP,则到域名服务 DNS 进行解析域。
第 十三章Linux 实操篇-进程管理
13.1、基本介绍
- 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。=>windows => linux
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程
则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。 - 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
- 示意图
13.2、显示系统执行的进程
13.2.1、基本介绍
ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消CPU时间 |
CMD | 正在执行的进程名 |
![]() |
13.2.2、ps 详解
- 指令:ps –aux|grep xxx ,比如我看看有没有 sshd 服务
- 指令说明
System V 展示风格
USER:用户名称
PID:进程号
%CPU:进程占用 CPU 的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
TT:终端名称,缩写 . STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R- 正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
STARTED:进程的启动时间
TIME:CPU 时间,即进程使用 CPU 的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
13.2.3、应用
要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息
ps -ef 是以全格式显示当前所有的进程
-e 显示所有进程。-f 全格式
ps -ef|grep sshd
是 BSD 风格
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
13.3、终止进程 kill 和 killall
13.3.1、介绍:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
13.3.2、基本语法
- kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
- killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项
-9 :表示强迫进程立即停止
案例 1:踢掉某个非法登录用户
kill 进程号 , 比如 kill 11421
[root@huang ~]# ps -aux | grep sshd
[root@huang ~]kill 11421
案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
kill sshd 对应的进程号; /bin/systemctl start sshd.service
#重启 sshd 服务
/bin/systemctl start sshd.service
案例 3: 终止多个 gedit , 演示killall [应用名称]
killall gedit
案例 4:强制杀掉一个终端, 指令 kill -9 【进程号】
kill -9 6092
13.4、 服务(service)管理
13.4.1、介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd防火墙等),因此我们又称为守护进程。
13.4.2、service 管理指令
- service 服务名 [start | stop | restart | reload | status] 启动、结束、重启、重载、状态
- 在 CentOS7.0 后 很多服务不再使用 service ,而是 systemctl
- service 指令管理的服务在 /etc/init.d 查看
service 管理指令案例
请使用 service 指令,查看,关闭,启动 network [注意:在虚拟系统演示,因为网络连接会关闭]
指令:
#查看network服务状态
service network status
#停止network服务
service network stop
#启动network服务
service network start
13.4.3、查看服务名:
方式 1:
使用 setup -> 系统服务 就可以看到全部。
setup
tab键进行退出、带星号是自启动的,不带不是自启动的,改自启动,按空格键即可!
方式 2:
/etc/init.d/ 看到 service 指令管理的服务
#查看所有的管理指令
ls -l /etc/init.d/
13.4.4、服务的运行级别(runlevel):
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
开机的流程说明:
13.4.5、CentOS7 后运行级别说明
在 /etc/initab
进行了简化 ,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
init 0
#查看现在的运行级别
systemctl get-default
#设置对应的级别
systemctl set-default TARGET.target
13.4.6、chkconfig 指令
通过 chkconfig 命令可以给服务的各个运行级别设置自 启动/关闭
chkconfig 指令管理的服务在 /etc/init.d 查看
注意: Centos7.0 后,很多服务使用 systemctl 管理
chkconfig 基本语法
查看服务 chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
案例演示 : 对 network 服务 进行各种操作, 把 network 在 3 运行级别,关闭自启动
#给运行级别3的network服务关闭
chkconfig --level 3 network off
#给运行级别3的network服务开启
chkconfig --level 3 network on
使用细节
chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 生效
13.4.7 systemctl 管理指令
基本语法: systemctl [start | stop | restart | status] 服务名,启动、结束、重启、重载、状态
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
13.4.8、systemctl 设置服务的自启动状态
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] 服务名
systemctl enable sshd
13.4.9、打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080 等。
firewall 指令
#打开端口:
firewall-cmd --permanent --add-port=端口号/协议
#关闭端口:
firewall-cmd --permanent --remove-port=端口号/协议
#重新载入,才能生效 :
firewall-cmd --reload
#查询端口是否开放:
firewall-cmd --query-port=端口/协议
应用案例:
启用防火墙, 测试 111 端口是否能 telnet , 不行
#开放 111 端口
firewall-cmd --permanent --add-port=111/tcp
#还需要重载
firewall-cmd --reload
再次关闭 111 端口
#关闭 111 端口
firewall-cmd --permanent --remove-port=111/tcp
#还需要重载
firewall-cmd --reload
13.5、动态监控进程
13.5.1、介绍:
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。默认是三秒刷新,这里查看的是正在运行的进程而不是服务。
13.5.2、基本语法
top [选项]
交互操作:
应用实例
监视特定用户, 比如我们监控 tom 用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可
终止指定的进程, 比如我们要结束 tom 登录
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程 ID 号
指定系统状态更新的时间(每隔 10 秒自动更新), 默认是 3 秒
top -d 10
13.6、监控网络状态
13.6.1、查看系统网络情况 netstat
基本语法
netstat [选项]
选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
应用案例
请查看服务名为 sshd 的服务的信息。
netstat -anp | grep sshd
13.6.2、检测主机连接命令 ping:
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。
如: ping 对方 ip 地址
第 十四 章Linux 实操篇-RPM 与 YUM
14.1、rpm 包的管理
14.1.1、介绍
rpm 用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
14.1.2、rpm 包的简单查询指令
查询已安装的 rpm 列表 rpm –qa|grep xx
举例: 看看当前系统,是否安装了 firefox
rpm -qa | grep firefox
14.1.3、rpm 包名基本格式
一个 rpm 包名:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统: el7.centos.x86_64
表示 centos7.x 的 64 位系统
如果是 i686、i386 表示 32 位系统,noarch 表示通用
14.1.4、rpm 包的其它查询指令:
rpm -qa :查询所安装的所有 rpm 软件包
#查询所安装的所有 rpm 软件包并分页
rpm -qa | more
#查询firefox软件包
rpm -qa | grep firefox
#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
14.1.5、卸载 rpm 包:
基本语法
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
14.1.6、安装 rpm 包
基本语法
rpm -ivh RPM 包全路径名称
参数说明
i=install 安装
v=verbose 提示
h=hash 进度条
应用实例
演示卸载和安装 firefox 浏览器
#卸载firefox
rpm -e firefox
#安装firefox
rpm -ivh firefox
14.2、yum
14.2.1、介绍:
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
14.2.2、yum 的基本指令
查询 yum 服务器是否有需要安装的软件
yum list|grep xx 软件列表
14.2.3、安装指定的 yum 包
yum install xxx 下载安装
14.2.4 yum、应用实例:
案例:请使用 yum 的方式来安装 firefox
#卸载firefox
rpm -e firefox
#查找firefox软件包
yum list | grep firefox
#安装firefox软件包
yum install firefox
至此,基础完结!