1、了解yum软件包管理器
基于centos操作,使用的软件包管理器yum
1、yum简介:
yum(全称 Yellowdog Updater, Modified)是一种基于 RPM 包管理器的软件包管理器,主要用于管理 Red Hat 及其衍生发行版(如 CentOS、Fedora 等)的软件包。yum 基于命令行使用,可以轻松下载、安装、更新和删除软件包及其依赖关系。
2、命令格式:
yum [选项] [参数]
比如下载安装一个Apache web服务器命令:
yum install httpd
更新所有已安装软件包:
yum update
更新指定软件:
yum update openssl
删除软件包:
yum remove httpd
清除所有缓存:
yum clean all
查询软件:
yum search php
还有很多参数可以选择。如 list、deplist、check-update等
3、yum源管理
进入/etc/yum.repos.d目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8A7kJCoD-1680438374310)(en-resource://database/1113:1)]
目录下CentOS-Base.repo,它会根据机器所在的ip提供一个最近的服务器供下载软件。
配置源
这个源有时会略慢,影响工作效率,这样我们可以下载一个国内的镜像源
阿里云开源镜像站:https://mirrors.aliyun.com/repo/Centos-7.repo
网易开源镜像站:https://mirrors.163.com/repo/Centos-7.repo
中科大开源镜像站:https://mirrors.ustc.edu.cn/repo/Centos-7.repo
清华开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
下载一个源。然后替换/etc/yum.repos.d目录下的CentOS-Base.repo
wget https://mirrors.aliyun.com/repo/Centos-7.repo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHPnGiiQ-1680438374311)(en-resource://database/1115:1)]
备份默认的源,将下载的镜像源替换为yum源
mv CentOS-Base.repo CentOS-Base.repo.bat
mv Centos-7.repo CentOS-Base.repo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HE990Dwv-1680438374312)(en-resource://database/1117:1)]
2、文件管理系统相关
2.1、磁盘(硬盘)
2.1.1 df 命令:
df(disk free) 是Linux系统中常用的一个查看命令。它用于显示磁盘分区使用情况,包括文件系统类型、磁盘分区大小、已用空间,可用空间和挂载点等信息
命令格式 :
df [选项] [文件或目录]
常用的选项包括:
-h:展示可读的格式显示磁盘空间;
-T:显示文件系统类型;
-i:显示 inode 使用情况。(inode 是指索引节点,是 Linux 文件系统中的一个重要概念)
-a:显示特殊文件系统
比如如果要查看当前系统中所有的文件系统使用情况,可以直接在终端中输入:
df -h
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 11G 25G 31% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
这个命令将显示所有文件系统的使用情况,其中包括文件系统类型、磁盘分区大小、已用空间、可用空间和挂载点等信息
如果只想查看某个特定的文件系统的使用情况,可以指定文件或目录作为参数,在终端输入:
df -h /dev/sda1
[root@localhost /]# df -h /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1014M 150M 865M 15% /boot
这个命令将显示/dev/sda1 文件系统的使用情况
2.1.2 文件incode查看命令
incode是什么?
Linux 文件系统中的每个文件都有一个 inode,用来存储文件的元数据信息。inode 是文件系统中的一个数据结构,它包含了文件的大小、创建时间、所有者、权限等信息,同时也包含了指向文件实际数据存储位置的指针。
可以使用stat (最详细)或者ls -i或者df -i查看文件incode信息
[root@localhost bin]# stat /usr/bin/znew
File: ‘/usr/bin/znew’
Size: 5343 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 100984133 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-04-11 08:01:18.000000000 +0800
Modify: 2018-04-11 08:01:18.000000000 +0800
Change: 2020-11-29 23:18:31.407000707 +0800
Birth: -
[root@localhost bin]# ls -i /usr/bin/znew
100984133 /usr/bin/znew
[root@localhost bin]# df -i /usr/bin/znew
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 18411520 257359 18154161 2% /
2.1.3、du命令
du(disk usage)命令是Linux系统中常用的一个磁盘空间查看命令。它用于显示指定文件或目录占用的磁盘空间大小。
命令格式:
du [选项] [文件或目录]
常用选项包括:
-h:显示文件或目录的磁盘空间占用情况;
-s:只显示总计信息;
-a:显示每个文件或目录的磁盘空间占用情况;
-c:同时显示所有文件或目录的磁盘空间占用总计信息。
如果要查看当前目录下所有文件和目录的大小,可以直接在终端中输入:
du -h
[root@localhost /]# du -h
0 ./boot/efi/EFI/centos
0 ./boot/efi/EFI
0 ./boot/efi
2.4M ./boot/grub2/i386-pc
3.2M ./boot/grub2/locale
2.5M ./boot/grub2/fonts
8.0M ./boot/grub2
4.0K ./boot/grub
118M ./boot
0 ./dev/net
0 ./dev/vfio
0 ./dev/snd
0 ./dev/hugepages
0 ./dev/mqueue
0 ./dev/centos
0 ./dev/disk/by-uuid
0 ./dev/disk/by-id
.....内容太多展示不完
这个命令将显示当前目录下所有文件和目录的磁盘空间占用情况
如果只想查看某个特定的文件或目录的大小,可以指定文件或目录作为参数,可以直接在终端中输入:
du -h /var/log
[root@localhost /]# du -h /var/log
40K /var/log/tuned
12M /var/log/audit
0 /var/log/chrony
1.9M /var/log/anaconda
0 /var/log/rhsm
1.4M /var/log/sa
84K /var/log/jenkins
18M /var/log
这个命令将显示 /var/log 目录的磁盘空间占用情况
如果想同时查看多个文件或目录的大小,可以指定多个参数,可以直接在终端中输入:
du -h /var/log /etc
[root@localhost /]# du -h /var/log /etc
40K /var/log/tuned
12M /var/log/audit
0 /var/log/chrony
1.9M /var/log/anaconda
0 /var/log/rhsm
1.4M /var/log/sa
84K /var/log/jenkins
18M /var/log
72K /etc/grub.d
60K /etc/pki/rpm-gpg
164K /etc/pki/ca-trust/extracted/java
260K /etc/pki/ca-trust/extracted/openssl
396K /etc/pki/ca-trust/extracted/pem
824K /etc/pki/ca-trust/extracted
0 /etc/pki/ca-trust/source/anchors
0 /etc/pki/ca-trust/source/blacklist
4.0K /etc/pki/ca-trust/source
836K /etc/pki/ca-trust
0 /etc/pki/java
12K /etc/pki/tls/certs
24K /etc/pki/tls/misc
个命令将同时显示 /var/log 和 /etc 目录的磁盘空间占用情况
如果想查看所有文件或目录的磁盘空间占用总计信息,可以使用 -s 和 -c 选项,可以直接在终端中输入:
du -sh /var/log /etc
du -sch /var/log /etc
第一个命令将显示 /var/log 和 /etc 目录的磁盘空间占用总计信息,第二个命令将同时显示每个目录的磁盘空间占用情况和总计信息。
2.1.4 fdisk命令
fdisk 命令是Linux系统中用于对磁盘进行分区和管理 分区的命令之一,它可以创建、删除、移动和调整磁盘分区,同时也能查看硬盘的分区信息
格式
fdisk [选项] [设备文件]
其中,选项包括:
-l:列出所有可用的磁盘分区信息;
-s:显示指定分区的大小(单位:扇区);
-t:更改指定分区的文件系统类型;
-n:创建一个新分区;
-d:删除一个分区;
-p:显示当前分区表的信息;
-w:将分区表写入磁盘。
1、显示磁盘分区信息
fdisk -l
[root@localhost /]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8f52
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
Disk /dev/mapper/centos-root: 37.7 GB, 37706792960 bytes, 73646080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
2、创建、删除、修改分区
命令:
fdisk /dev/sda
输入后会进入 fdisk 命令的交互式界面
可以使用 n 命令创建新的分区,然后输入分区的起始扇区和结束扇区来指定分区的大小。创建完毕后可以使用 w 命令将分区表写入磁盘。
可以使用 d 命令删除指定的分区。删除完毕后可以使用 w 命令将分区表写入磁盘。
可以使用 t 命令修改指定分区的文件系统类型。修改完毕后可以使用 w 命令将分区表写入磁盘。
上述三个操作完成,都要输入w 保存退出,才能真正的保存到磁盘
fdisk 命令是 Linux 系统中非常重要的磁盘分区和管理命令之一,它可以帮助管理员对磁盘进行分区和管理分
3、新增分区实战
本地虚拟机增加了一个20G的硬盘,在新地硬盘上作分区
使用fdisk -l查询信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8f52
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
Disk /dev/mapper/centos-root: 37.7 GB, 37706792960 bytes, 73646080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
从上面可以看出,硬盘1是Disk /dev/sda,硬盘2是Disk /dev/sdb
在Linux中,我们不断强调“一切皆为文件”,一般的硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配)所以第一块是/dev/sda,第二块是/dev/sdb
使用fdisk命令对/dev/sdb新增分区
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2). //欢迎使用
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. //会更改硬盘,使用请三思
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x78b3ca53.
Command (m for help): n //对话,请输入,输入n表示新增分区
Partition type:
p primary (0 primary, 0 extended, 4 free) //主分区(0主分区,0扩展分区,4空闲)表示可以扩展4个分区
e extended //扩展分区
Select (default p): p //对话:选择p,主分区
Partition number (1-4, default 1): 1 //对话:选择1,分出一个分区
First sector (2048-41943039, default 2048): //对话:设置第一个扇区大小,没输入,默认2048
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G //对话:设置分区大小,设置了1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p //对话:p 打印分区表
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x78b3ca53
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
上面内容分区了分区 /dev/sdb1/,主分区或扩展分区的编号从1开始,到4结束。逻辑分区从编号5开始。
记住,如果是直实的分区的话,应该加上对话,w : 保存退出
再使用fdisk -l查询一次
[root@localhost ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8f52
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
Disk /dev/mapper/centos-root: 37.7 GB, 37706792960 bytes, 73646080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe8606b69
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
2.1.5 mkfs命令
在 Linux 中,mkfs 命令用于创建文件系统。mkfs 命令可以根据指定的文件系统类型,对指定的设备进行格式化并创建相应的文件系统。
注意,mkfs 命令会将指定设备上的所有数据都清除,所以在使用 mkfs 命令之前,需要备份设备上的所有数据,以免造成数据丢失。
格式:
mkfs [选项]
#指定文件类型,格式化
mkfs -t [文件系统类型] [设备名]
选项有:
-t :选项指定要创建的文件系统类型。
-f :强制格式化设备,即不进行任何确认提示,直接执行格式化操作。
-n :不进行实际的格式化操作,而是模拟操作并显示格式化后的文件系统信息。
-c :对设备进行坏块检查,即检查设备是否有坏道,并在格式化过程中跳过坏道。
-b :块大小:指定文件系统中的块大小,默认为 4096 字节。
-i :inode 大小:指定文件系统中 inode 的大小,默认为 256 字节。
-L :卷标:为文件系统指定一个卷标,方便识别和管理。
举例:
[root@localhost bin]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
2.1.6、mount命令
1、mount命令介绍
monut命令是Linux系统中常用的命令之一,用于将一个文件系统连到系统的目录结构中的一个目录上,以例在该目录下访问该文件系统中的文件。本质上,mount命令会将一个文件系统添加到Linux文件系统树中。
格式:
mount [-t 文件系统类型] [-o 挂载选项] 设备文件名 挂载点
常用选项
-t:指定文件系统类型;例如 ext4、ntfs、nfs
-o:指定挂载选项,例如 ro(只读)、rw(可读可写)、noexec(不允许运行程序文件)、nosuid(不允许设置 setuid 位)、noatime(不更新文件的访问时间)等等;
-a:将 /etc/fstab 文件中列出的所有文件系统挂载到挂载点;
-r:以只读方式挂载文件系统;
-w:以可读可写方式挂载文件系统。
设备文件名指定要挂载的设备,例如 /dev/sdb1、/dev/cdrom 等等;挂载点指定要将设备挂载到的目录,例如 /mnt、/media 等等。除了常规挂载方式外,mount 命令还可以用于挂载网络文件系统,例如 NFS(Network File System)和 CIFS(Common Internet File System)。
在使用 mount 命令时,需要注意以下几点:
在挂载前需要创建挂载点,即一个目录用来挂载文件系统;
挂载点不能是一个已经存在的非空目录;
可以将挂载命令写入 /etc/fstab 文件中,这样系统启动时会自动进行挂载。
2、mount命令实战
实战内容:将前面新分区 /dev/sdb1 挂在到 /sdb1目录下),下面分为临时挂载与永久挂载
先查用df -h 查看文件系统情况,发现/dev/sdb1没有挂载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5B1Y5l7-1680438374313)(en-resource://database/1123:1)]
a、临时挂载
新增/sdb1目录
mkdir /sdb1
将/dev/sdb1/挂到/sdb1目录下
mount -t xfs /dev/sdb1/ /sdb1/
操作如下:
[root@localhost /]# mkdir /sdb1
[root@localhost /]# ls
bin data etc lib media opt root sbin srv tmp var
boot dev home lib64 mnt proc run sdb1 sys usr
[root@localhost /]# mount -t xfs /dev/sdb1/ /sdb1/
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.2G 0 4.2G 0% /dev
tmpfs 4.2G 0 4.2G 0% /dev/shm
tmpfs 4.2G 12M 4.2G 1% /run
tmpfs 4.2G 0 4.2G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 11G 25G 31% /
/dev/sda1 1014M 150M 865M 15% /boot
overlay 36G 11G 25G 31% /var/lib/docker/overlay2/070d915273c8c170211c7946f30d6c377fd3915988be1a7a65332aeebf945568/merged
tmpfs 844M 0 844M 0% /run/user/0
/dev/sdb1 1014M 33M 982M 4% /sdb1
[root@localhost /]#
挂载成功后,使用df -h查看了文件系统 ,发现/dev/sdb1挂载到了/sdb1下了,这便挂载成功了,但这个是临时的,只要重启系统,这个挂载便不在了,如果需要开启后也生效。可以使用永久挂载
在学习永久挂载前先,reboot(重启)下系统,让临时挂载失效
b、永久挂载
前面的注意的第三点里面说明了,可以将挂载命令写入 /etc/fstab 文件中,这样系统启动时会自动进行挂载。所以永久挂载便是将挂载命令写入/etc/fstab文件中,这类似windows的启动项
操作如下:
vim /etc/fstab
在里面添加
/dev/sdb1 /sdb1 xfs defaults 0 0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IebCBYiG-1680438374313)(en-resource://database/1125:1)]
:wq退出后,reboot重启系统,重启成功后再使用df -f命令检查
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WbWpwiBU-1680438374314)(en-resource://database/1127:0)]
3、用户管理
3.1、用户简介
用户是指使用系统的人或程序。在系统中,每个用户都被分配了一个唯一的用户 ID(UID),用于标识用户的身份。同时,每个用户还被分配了一个组 ID(GID),用于标识用户所属的组。系统管理员可以通过创建、修改和删除用户和组来管理系统的访问控制和资源分配。
1、用户分类
Linux 系统中的用户分为两类:系统用户、普通用户、程序用户。
系统用户是系统内部使用的用户,通常用于运行系统服务和守护进程等,这些用户的 UID 一般较小,例如 root 用户的 UID 为 0。系统用户的账户信息保存在 /etc/passwd 文件中,密码信息保存在 /etc/shadow 文件中。
普通用户是指系统中的一般用户,用于执行日常任务和使用系统资源。这些用户的 UID 一般较大,例如从第 1000 开始。普通用户的账户信息也保存在 /etc/passwd 文件中,密码信息保存在 /etc/shadow 文件中。
程序用户的账户信息通常保存在 /etc/passwd 文件中,但是不需要为其设置登录 Shell,因为它们不需要交互式地登录到系统中。程序用户通常被用来运行服务和守护进程,这些进程需要访问某些系统资源,例如网络端口、文件和设备等,因此程序用户需要相应的权限和访问控制。
2、管理用户与用户组的命令:
useradd:创建新用户账户;
usermod:修改已有用户账户;
userdel:删除用户账户;
groupadd:创建新用户组;
groupmod:修改已有用户组;
groupdel:删除用户组。
3、管理用户的文件
文件:/etc/passwd
它包含了一个 Linux 系统中所有用户的账户信息。每一行都代表一个用户账户,这些账户的信息以冒号 :分隔,格式如下:
username:password:UID:GID:comment:home_directory:shell
各字段的含义如下:
username:账户名,用于登录系统;
password:密码占位符,现在已经不再使用,因为密码信息已经移动到 /etc/shadow 文件中;
UID:用户 ID,是一个数字,唯一标识了该用户;
GID:用户所属组的组 ID;
comment:注释信息,可以为空;
home_directory:用户的主目录,通常是 /home/username;
shell:用户的默认 Shell 程序,用于交互式登录时使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnpW4EOx-1680438374314)(en-resource://database/1129:0)]