实操篇 Linux 磁盘分区、挂载

分区基础知识
分区的方式:
mbr 分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR 最大只支持 2TB,但拥有最好的兼容性

gpt分区
1.支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
3.win7 64位以后支持gpt

windows 下的磁盘分区

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 硬盘的表示方法一样。

lsblk 列出块设备信息
[root@localhost xuebiao]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
sda               8:0    0   50G  0 disk
├─sda2            8:2    0   49G  0 part
│ ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
│ └─centos-root 253:0    0 45.1G  0 lvm  /
└─sda1            8:1    0    1G  0 part /boot

挂载硬盘

#查看磁盘信息
[root@xuebiao ~]# fdisk -l磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x47ff07a2设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a284b设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM磁盘 /dev/mapper/centos-root:50.5 GB, 50457477120 字节,98549760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节#查看磁盘格式
[root@xuebiao ~]# df -T
文件系统                类型        1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root xfs      49250820 1028068 48222752    3% /
devtmpfs                devtmpfs   928968       0   928968    0% /dev
tmpfs                   tmpfs      941048       0   941048    0% /dev/shm
tmpfs                   tmpfs      941048    9040   932008    1% /run
tmpfs                   tmpfs      941048       0   941048    0% /sys/fs/cgroup
/dev/sda1               xfs       1038336  148420   889916   15% /boot
tmpfs                   tmpfs      188212       0   188212    0% /run/user/0#分区的初始化
[root@xuebiao ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助):先输入n表示设定新的硬盘分割区再输入p表示设置的是主要分割区输入回车表示选择默认,所以分区号默认选择1起始扇区选择默认2048最后的扇区选择默认1048575999输入w保存另外附上命令介绍: 1. 输入 m 显示所有命令列示。2. 输入 p 显示硬盘分割情形,打印分区表。3. 输入 a 设定硬盘启动区。4. 输入 n 设定新的硬盘分割区。4.1. 输入 e 硬盘为[延伸]分割区(extend)。4.2. 输入 p 硬盘为[主要]分割区(primary)。5. 输入 t 改变硬盘分割区属性。          t:分区系统id号L:82:linux swap83:linux86:NTFS window分区6. 输入 d 删除硬盘分割区属性。7. 输入 q 结束不存入硬盘分割区属性。8. 输入 w 结束并写入硬盘分割区属性#对创建的分区进行格式化
#查看刚刚分配的磁盘号
fdisk -l设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux
格式化磁盘:
mkfs -t ext4 /dev/sdb1
-t 表示指定格式化磁盘的文件系统类型为ext4,默认不指定为ext2(比较老的linux文件系统类型)#挂载硬盘
创建目录/xhome
挂载磁盘,将/dev/sdb1磁盘挂载(mount)到文件系统的/homework目录上
[root@xuebiao ~]# mount /dev/sdb1 /xhome
#查看挂载情况
[root@xuebiao ~]# df -HT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        51G  1.1G   50G    3% /
devtmpfs                devtmpfs  952M     0  952M    0% /dev
tmpfs                   tmpfs     964M     0  964M    0% /dev/shm
tmpfs                   tmpfs     964M  9.3M  955M    1% /run
tmpfs                   tmpfs     964M     0  964M    0% /sys/fs/cgroup
/dev/sda1               xfs       1.1G  152M  912M   15% /boot
tmpfs                   tmpfs     193M     0  193M    0% /run/user/0
/dev/sdb1               ext4       22G   47M   20G    1% /xhome#设置开机启动自动挂载磁盘分区
编辑/etc/fstab文件(防止系统重启后挂载丢失)/etc/fstab是在开机引导的时候自动挂载到linux的文件系统
[root@xuebiao ~]# vi /etc/fstab #
# /etc/fstab
# Created by anaconda on Wed Mar 31 17:59:34 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=eb8a555d-2d71-4eeb-a2ae-4b60e5acc0f5 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1               /xhome                  ext4    defaults        0 0重启系统验证是否成功输入reboot重启,输入df -HT查看磁盘情况
[root@xuebiao ~]# df -HT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        51G  1.1G   50G    3% /
devtmpfs                devtmpfs  952M     0  952M    0% /dev
tmpfs                   tmpfs     964M     0  964M    0% /dev/shm
tmpfs                   tmpfs     964M  9.3M  955M    1% /run
tmpfs                   tmpfs     964M     0  964M    0% /sys/fs/cgroup
/dev/sdb1               ext4       22G   47M   20G    1% /xhome
/dev/sda1               xfs       1.1G  152M  912M   15% /boot
tmpfs                   tmpfs     193M     0  193M    0% /run/user/0成功

卸载硬盘

临时卸载,重启机器之后又恢复到挂载状态
umount /dev/sdc
永久卸载
vim /etc/fstab
把添加的磁盘信息删除即可。重启机器查看是否卸载

磁盘情况查询

查询系统整体磁盘使用情况
基本语法
df -h
应用实例
查询系统整体磁盘使用情况

[root@localhost xuebiao]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G  8.6M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G  5.4G   40G   12% /
/dev/sda1               1014M  147M  868M   15% /boot
tmpfs                    394M     0  394M    0% /run/user/0
[root@localhost xuebiao]#

查询指定目录的磁盘占用情况
基本语法
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
应用实例
查询 /opt 目录的磁盘占用情况,深度为 1

磁盘情况

#统计某个文件夹下文件的个数
[root@localhost xuebiao]# ls
mysql.txt  test.sh  test.txt  xue
[root@localhost xuebiao]# ll /home/xuebiao/ | grep "^-" | wc -l
3
#统计/home 文件夹下目录的个数
[root@localhost xuebiao]# ll /home/xuebiao/ | grep "^d" | wc -l
1
#统计/home 文件夹下文件的个数,包括子文件夹里的
[root@localhost xuebiao]# ll -R /home/ | grep "^-" | wc -l
602
#统计文件夹下目录的个数,包括子文件夹里的
[root@localhost xuebiao]# ll -R /home/ | grep "^d" | wc -l
17
wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

实操篇 进程管理

进程的基本介绍
1)在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号。
2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。
3)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程的指令是 ps ,一般来说使用的参数是 ps -aux

ps 指令详解

ps –aux|grep xxx #显示的东西多一点
ps -ef | more
ps -ef是以全格式显示当前所有的进程(和aux的区别就是显示的少一点,打印方式不一样)
-e 显示所有进程
-f 全格式
[root@localhost tom]# ps -ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:21 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 14:21 ?        00:00:00 [kthreadd]
root         4     2  0 14:21 ?        00:00:00 [kworker/0:0H]
[root@localhost tom]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 128600  7260 ?        Ss   14:21   0:02 /usr/lib/systemd/systemd --switched-root --system --des
root         2  0.0  0.0      0     0 ?        S    14:21   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   14:21   0:00 [kworker/0:0H]
root         5  0.0  0.0      0     0 ?        S    14:21   0:00 [kworker/u2:0]F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍
NI 这个是 Nice 值,在下一小节我们会持续介绍
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
USER:该 process 属于那个使用者账号的
PID :该 process 的号码
%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:该程序的实际指令

终止进程 kill 和 killall
介绍:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9 :表示强迫进程立即停止

[root@localhost ~]# gedit 111
[root@localhost ~]# killall gedit
kill -15 pid # 相对安全

查看进程树 pstree

pstree [选项] 可以更加直观的来看进程信息
-p 显示PID
-u 显示进程所属用户
[root@localhost ~]# pstree -p
systemd(1)─┬─ModemManager(735)─┬─{ModemManager}(754)│                   └─{ModemManager}(758)├─NetworkManager(783)─┬─dhclient(5077)│                     ├─{NetworkManager}(789)│                     └─{NetworkManager}(792)├─abrt-watch-log(703)├─abrt-watch-log(724)├─abrtd(702)├─agetty(1130)├─alsactl(740)├─atd(1132)├─auditd(673)─┬─audispd(675)─┬─sedispatch(677)│             │              └─{audispd}(678)│             └─{auditd}(674)├─avahi-daemon(745)───avahi-daemon(761)├─chronyd(752)├─crond(4496)├─cupsd(1107)├─dbus-daemon(708)───{dbus-daemon}(719)├─dnsmasq(1377)───dnsmasq(1381)├─firewalld(772)───{firewalld}(910)├─gssproxy(737)─┬─{gssproxy}(746)│               ├─{gssproxy}(747)│               ├─{gssproxy}(748)│               ├─{gssproxy}(749)│               └─{gssproxy}(750)├─ksmtuned(776)───sleep(6820)├─libvirtd(1121)─┬─{libvirtd}(1142)│                ├─{libvirtd}(1143)│                ├─{libvirtd}(1144)│                ├─{libvirtd}(1145)│                ├─{libvirtd}(1146)│                ├─{libvirtd}(1147)│                ├─{libvirtd}(1148)│                ├─{libvirtd}(1149)│                ├─{libvirtd}(1150)│                ├─{libvirtd}(1151)│                ├─{libvirtd}(1183)│                ├─{libvirtd}(1184)│                ├─{libvirtd}(1185)│                ├─{libvirtd}(1186)│                ├─{libvirtd}(1187)│                └─{libvirtd}(1216)├─lsmd(722)├─lvmetad(503)├─master(1575)─┬─pickup(5616)│              └─qmgr(1585)├─nginx(2055)───nginx(2073)├─packagekitd(3996)─┬─{packagekitd}(3997)│                   └─{packagekitd}(3998)├─polkitd(707)─┬─{polkitd}(716)│              ├─{polkitd}(720)│              ├─{polkitd}(723)│              ├─{polkitd}(725)│              ├─{polkitd}(726)│              └─{polkitd}(728)├─rngd(704)├─rpcbind(712)├─rsyslogd(1112)─┬─{rsyslogd}(1120)│                └─{rsyslogd}(1124)├─smartd(706)├─sshd(1109)─┬─sshd(5106)───bash(5110)│            └─sshd(6691)───bash(6695)───pstree(6828)├─systemd-journal(486)├─systemd-logind(742)├─systemd-udevd(523)└─tuned(1111)─┬─{tuned}(1514)├─{tuned}(1515)├─{tuned}(1520)└─{tuned}(1523)
[root@localhost ~]#

系统服务管理
介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点.
在 CentOS7.0 后 不再使用 service ,而是 systemctl

systemctl(选项)(参数)
service 参数 选项
systemctl命令 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
启动服务 service httpd start systemctl start httpd.service
停止服务 service httpd stop systemctl stop httpd.service
重启服务 service httpd restart systemctl restart httpd.service
重载服务 service httpd reload systemctl reload httpd.service

开机的流程说明

chkconfig 指令介绍
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭查看服务 chkconfig --list | grep xxx

[root@localhost ~]# chkconfig --list注:该输出结果只显示SysV服务,并不包含原生systemd服务。SysV配置数据可能被原生 systemd 配置覆盖。要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。
netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关
network         0:关 1:关 2:开 3:开 4:开 5:开 6:关chkconfig    服务名 --list
[root@localhost ~]# chkconfig network --list
注:该输出结果只显示SysV服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。
network         0:关 1:关 2:开 3:开 4:开 5:开 6:关chkconfig    --level 5   服务名 on/off
请将 sshd 服务在运行级别为    5 的情况下,不要自启动。(centos7中这个命令很多已经改了,找不到了)
[root@localhost ~]# chkconfig  --level 4 netconsole on
[root@localhost ~]# chkconfig  --list
注:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。
netconsole      0:关 1:关 2:关 3:关 4:开 5:关 6:关
network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

使用细节:chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效.

动态监控进程
介绍:
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。

top [选项]
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。

应用实例:
监视特定用户
top -u 用户名

结束进程
top回车,按k,输入要关闭的进程号

指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒):
top -d 10

查看系统网络情况 netstat(重要)
netstat [选项]
netstat -anp
• 选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
• 应用案例

[root@localhost ~]# netstat -anp | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      708/rpcbind
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1374/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1111/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1109/cupsd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1569/master
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1592/sshd: root@pts
tcp        0     52 192.168.0.73:22         192.168.0.178:52639     ESTABLISHED 1592/sshd: root@pts
tcp6       0      0 :::111                  :::*                    LISTEN      708/rpcbind
tcp6       0      0 :::22                   :::*                    LISTEN      1111/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1109/cupsd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1569/master
tcp6       0      0 ::1:6010                :::*                    LISTEN      1592/sshd: root@pts
#请查看服务名为 sshd 的服务的信息。
[root@localhost ~]# netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1111/sshd
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1592/sshd: root@pts
tcp        0     52 192.168.0.73:22         192.168.0.178:52639     ESTABLISHED 1592/sshd: root@pts
tcp6       0      0 :::22                   :::*                    LISTEN      1111/sshd
tcp6       0      0 ::1:6010                :::*                    LISTEN      1592/sshd: root@pts
unix  3      [ ]         STREAM     CONNECTED     21127    1111/sshd
unix  2      [ ]         DGRAM                    24324    1592/sshd: root@pts

实操篇 RPM 和 YUM

RPM

rpm是一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。

简单查询命令
查询已安装的rpm列表
rpm -qa
查询当前系统有没有安装firefox
[root@localhost ~]# rpm -qa | grep firefox
firefox-78.6.1-1.el7.centos.x86_64rpm 包名基本格式:
一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统: el6.centos.x86_64表示 centos6.x 的 64 位系统
如果是 i686、i386 表示 32 位系统,noarch表示通用rpm -qi  软件包名 :查询软件包信息
[root@localhost ~]# rpm -qi firefox
Name        : firefox
Version     : 78.6.1
Release     : 1.el7.centos
Architecture: x86_64
Install Date: 2021年01月22日 星期五 15时44分05秒
Group       : Unspecified
Size        : 257336409
License     : MPLv1.1 or GPLv2+ or LGPLv2+
Signature   : RSA/SHA256, 2021年01月15日 星期五 23时30分10秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : firefox-78.6.1-1.el7.centos.src.rpm
Build Date  : 2021年01月14日 星期四 23时19分48秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : https://www.mozilla.org/firefox/
Summary     : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.rpm -qf 文件全路径名 查询文件所属的软件包
[root@localhost ~]# rpm -qf /etc/passwd
setup-2.8.71-11.el7.noarch卸载 rpm 包:
rpm -e RPM 包的名称
[root@localhost ~]# rpm -q firefox
firefox-78.6.1-1.el7.centos.x86_64
[root@localhost ~]# rpm -e firefox
[root@localhost ~]# rpm -q firefox
未安装软件包 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
带上 --nodeps  就是强制删除。安装 rpm 包:
rpm -ivh    RPM包全路径名称
i=install 安装
v=verbose 提示
h=hash 进度条

yum

yum(Yellow dog Updater Modified)的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header 包括了rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些header 并加以分析,才能自动化地完成余下的任务。

yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。

yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。

yum 可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。

yum 的基本指令
yum list | grep xxx 查询yum服务器有没有这个软件
[root@localhost media]# yum list | grep firefox
firefox.i686                                78.6.1-1.el7.centos        updates
firefox.x86_64                              78.6.1-1.el7.centos        updates  yum install -y xxx 下载并安装某个软件
-y 安装过程的所有判断全部yes
[root@localhost media]# yum install -y xorg-x11-drv-openchrome-devel.x86_64yum 的基础安装包包括:yum  //RPM installer/updater
yum-fastestmirror  //Yum plugin which chooses fastest repository from a mirrorlist
yum-metadata-parser  //A fast metadata parser for yum
其他安装包根据自己需要安装。yum 配置yum 的配置文件分为两部分:main 和repositorymain 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。
repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。
yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。# cat /etc/yum.conf
[main]cachedir=/var/cache/yum//yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yumkeepcache=0//安装完成后是否保留软件包,0为不保留(默认为0),1为保留debuglevel=2//Debug 信息输出等级,范围为0-10,缺省为2logfile=/var/log/yum.log//yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。pkgpolicy=newest//包的策略。一共有两个选项,newest 和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository 中同时存在,yum 应该安装哪一个,如果是newest,则yum 会安装最新的那个版本。如果是last,则yum 会将服务器id 以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
distroverpkg=redhat-release//指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm 包。tolerant=1//有1和0两个选项,表示yum 是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum 不会出现错误信息。默认是0。exactarch=1//有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包,例如,yum 不会将i686的软件包安装在适合i386的系统中。默认为1。retries=6//网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6.
obsoletes=1//这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。plugins=1//是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum# Note: yum-RHN-plugin doesn't honor this.metadata_expire=1hinstallonly_limit = 5# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d除了上述之外,还有一些可以添加的选项,如:exclude=selinux*  // 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。gpgcheck=1  // 有1和0两个选择,分别代表是否是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的。这个选项如果设置在[main]部分,则对每个repository 都有效。默认值为0。四、配置本地yum源1、挂载系统安装光盘# mount /dev/cdrom /mnt/cdrom/2、配置本地yum源# cd /etc/yum.repos.d/# ls会看到四个repo 文件CentOS-Base.repo 是yum 网络源的配置文件CentOS-Media.repo 是yum 本地源的配置文件修改CentOS-Media.repo# cat CentOS-Media.repo# CentOS-Media.repo## This repo is used to mount the default locations for a CDROM / DVD on#  CentOS-5.  You can use this repo and yum to install items directly off the#  DVD ISO that we release.## To use this repo, put in your DVD and use it with the other repos too:#  yum --enablerepo=c5-media [command]#  # or for ONLY the media repo, do this:##  yum --disablerepo=\* --enablerepo=c5-media [command][c5-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/file:///mnt/cdrom/file:///media/cdrecorder/gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5在baseurl 中修改第2个路径为/mnt/cdrom(即为光盘挂载点)将enabled=0改为13、禁用默认的yum 网络源将yum 网络源配置文件改名为CentOS-Base.repo.bak,否则会先在网络源中寻找适合的包,改名之后直接从本地源读取。4、执行yum 命令# yum install postgresql关于repo 文件的格式所有repository 服务器设置都应该遵循如下格式:[serverid]name=Some name for this serverbaseurl=url://path/to/repository/serverid 是用于区别各个不同的repository,必须有一个独一无二的名称;
name 是对repository 的描述,支持像releaseverbasearch这样的变量;
baseurl 是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
baseurl=url://server1/path/to/repository/url://server2/path/to/repository/url://server3/path/to/repository/其中url 支持的协议有 http:// ftp:// file:// 三种。baseurl 后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl 只能有一个,也就是说不能像如下格式:baseurl=url://server1/path/to/repository/baseurl=url://server2/path/to/repository/baseurl=url://server3/path/to/repository/其中url 指向的目录必须是这个repository header 目录的上一级,它也支持releaseverbasearch 这样的变量。
url 之后可以加上多个选项,如gpgcheck、exclude、failovermethod 等,比如:[updates-released]name=Fedora Core releasever−basearch - Released Updatesbaseurl=http://download.atrpms.net/mirrors/fedoracore/updates/releasever/basearchhttp://redhat.linux.ee/pub/fedora/linux/core/updates/releasever/basearchhttp://fr2.rpmfind.net/linux/fedora/core/updates/releasever/basearchgpgcheck=1exclude=gaimfailovermethod=priority其中gpgcheck,exclude 的含义和[main] 部分相同,但只对此服务器起作用,failovermethode 有两个选项roundrobin 和priority,意思分别是有多个url可供选择时,yum 选择的次序,roundrobin 是随机选择,如果连接失败则使用下一个,依次循环,priority 则根据url 的次序从第一个开始。如果不指明,默认是roundrobin。五、配置国内yum源系统默认的yum 源速度往往不尽人意,为了达到快速安装的目的,在这里修改yum源为国内源。上海交通大学yum源a. 修改/etc/yum.repos.d/CentOS-Base.repo为:# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to the client.  You should use this for CentOS updates# unless you are manually picking other mirrors.## If the mirrorlist= does not work for you, as a fall back you can try the# remarked out baseurl= line instead.##[base]name=CentOS-$releasever - Base#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=osbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/os/basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#released updates[updates]name=CentOS-$releasever - Updates#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=updatesbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/updates/basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#additional packages that may be useful[extras]name=CentOS-$releasever - Extras#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=extrasbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/extras/basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#additional packages that extend functionality of existing packages[centosplus]name=CentOS-$releasever - Plus#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=centosplusbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/centosplus/basearch/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#contrib - packages by Centos Users[contrib]name=CentOS-$releasever - Contrib#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=contribbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/contrib/basearch/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5关于变量$releasever:代表发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch:cpu体系,如i686,athlon等
$basearch:cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
b. 导入GPG KEYyum 可以使用gpg 对包进行校验,确保下载包的完整性,所以我们先要到各个repository 站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如RPM-GPG-KEY-CentOS-5 之类的纯文本文件,把它们下载下来,然后用rpm --import RPM-GPG-KEY-CentOS-5 命令将key 导入。c. 执行yum 命令其他国内yum源列表如下:1. 企业贡献:
搜狐开源镜像站:http://mirrors.sohu.com/
网易开源镜像站:http://mirrors.163.com/2. 大学教学:
北京理工大学:
http://mirror.bit.edu.cn (IPv4 only)
http://mirror.bit6.edu.cn (IPv6 only)
北京交通大学:
http://mirror.bjtu.edu.cn (IPv4 only)
http://mirror6.bjtu.edu.cn (IPv6 only)
http://debian.bjtu.edu.cn (IPv4+IPv6)
兰州大学:http://mirror.lzu.edu.cn/
厦门大学:http://mirrors.xmu.edu.cn/
清华大学:
http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6)
http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only)
http://mirrors.4.tuna.tsinghua.edu.cn/ (IPv4 only)
天津大学:http://mirror.tju.edu.cn/
中国科学技术大学:
http://mirrors.ustc.edu.cn/ (IPv4+IPv6)
http://mirrors4.ustc.edu.cn/
http://mirrors6.ustc.edu.cn/
东北大学:
http://mirror.neu.edu.cn/ (IPv4 only)
http://mirror.neu6.edu.cn/ (IPv6 only)
电子科技大学:http://ubuntu.uestc.edu.cn/六、使用第三方软件库Centos/RHEL默认的yum软件仓库非常有限,仅仅限于发行版本那几张盘里面的常规包和一些软件包的更新,利用RpmForge,可以增加非常多的第三方rpm软件包。RpmForge库现在已经拥有超过10000种的CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个第三方软件库。1、安装yum-priorities插件这个插件是用来设置yum在调用软件源时的顺序的。因为官方提供的软件源,都是比较稳定和被推荐使用的。因此,官方源的顺序要高于第三方源的顺序。如何保证这个顺序,就需要安装yum-priorities这插件了。# yum -y install yum-priorities2、安装完yum-priorities插件后需要设置/etc/yum.repos.d/ 目录下的.repo相关文件(如CentOS-Base.repo),在这些文件中插入顺序指令:priority=N (N为1到99的正整数,数值越小越优先)一般配置[base], [addons], [updates], [extras] 的priority=1,[CentOSplus], [contrib] 的priority=2,其他第三的软件源为:priority=N (推荐N>10)以CentOS-Base.repo 为例:[base]name=CentOS-$releasever - Base#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=osbaseurl=http://ftp.sjtu.edu.cn/centos/releasever/os/basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5priority=13、下载与安装相应rpmforge的rpm文件包# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm4、安装DAG的PGP Key# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt5、验证rpmforge的rpm文件包# rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm6、安装rpmforge的rpm文件包# rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm7、设置/etc/yum.repos.d/rpmforge.repo文件中源的级别[root@TS-DEV yum.repos.d]# cat rpmforge.repo ### Name: RPMforge RPM Repository for RHEL 5 - dag### URL: http://rpmforge.net/[rpmforge]name = RHEL $releasever - RPMforge.net - dagbaseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforgemirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforgeenabled = 1protect = 0gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-daggpgcheck = 1priority=128、测试安装# yum install htop参考 http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b其他第三方软件库如 EPEL(Extra Packages for Enterprise Linux ) 和 RPMFusion 的安装与使用和RPMForge类似,可自行查找资料安装。

实战演习:

第一步:查看yum 源配置文件配置阿里云的yum源#ls /etc/yum.repos.d/
第二布:修改yum配置文件#vi /etc/yum.repos.d/CentOS-Base.repo
第三步:修改部分为红色# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever - Basebaseurl=http://mirrors.aliyun.com/centos/releasever/os/basearch/     #配置为阿里云的yum源gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=updates&infra=$infra   #注释掉原来的默认配置
baseurl=http://mirrors.aliyun.com/centos/releasever/updates/basearch/         #配置为阿里云的yum源
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=extras&infra=$infra     #注释掉原来的默认配置
baseurl=http://mirrors.aliyun.com/centos/releasever/extras/basearch/    #配置为阿里云的yum源
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=centosplus&infra=$infra    #注释掉原来的默认配置
baseurl=http://mirrors.aliyun.com/centos/releasever/centosplus/basearch/   #配置为阿里云的yum源  现在我们的yum配置好了我们安装一个工具,我刚下好的系统连一个查看网卡的工具都没安装我们安装一个net-tools  和 openssh 工具,否则我们很难操作我刚安装好的这一台原始机。第四步:运行yum命令#yum install net-tools输入:y看到Complete! OK net-tools 安装完毕第五步:检测net-tools安装情况
工具正常我们yum到此就安装结束。现在我们的系统还不能远程登陆因为系统缺少ssh服务插件,我们要安装一个远程服务的插件我们使用 openssh 这个远程插件

yum upgrade和yum update的区别

yum -y update升级所有包同时也升级软件和系统内核yum -y upgrade只升级所有包,不升级软件和系统内核实验分别测试 yum -y upgrade和yum -y update升级前系统版本: centos5.5
内核版本: 2.6.18-194.el5
升级前做过简单配置文件修改yum -y upgrade 升级后系统版本: centos5.7
内核版本: 2.6.18-194.el5
yum -y update 升级后系统版本: centos5.7
内核版本: 2.6.18-238.el5yum update不删除旧包
yum upgrade删除旧包
在生产环境中最好使用yum update,防止因旧软件包依赖而出现问题。

Linux重定向用法详解

复制粘贴数据的时候,如果是打开文件进行复制粘贴,就不可避免的需要较多的鼠标与键盘的操作,就会比较繁琐。重定向是一种高效的方法,无需大量的鼠标与键盘操作就可以完成数据的转移。重定向可以分为输入重定向以及输出重定向这两种类型。由于所有程序都有输入或者输出,因此输入和输出的重定向是任何编程语言或脚本语言都自带的功能。

Linux中的数据流

  • 输入信息会从 stdin 中读取(标准输入,通常是键盘或鼠标)。
  • 输出信息会被输出到 stdout (标准输出,一个文本文件或者数据流)。
  • 错误信息会被输出到 stderr。

在 Linux 系统中,标准输入,标准输出以及标准错误都作为文件存在。 你可以在 /dev 目录下看到它们

重定向输出

在 Linux 系统中,使用 > 字符表示重定向输出。例如,将 ls 命令的输出重定向到一个文件中

[root@k8s-master01 xuebiao]# ls > c.txt
[root@k8s-master01 xuebiao]# cat c.txt
a.txt
b.txt
c.txt
my.sh
test.sh
w1.png
w.png
yes.log
[root@k8s-master01 xuebiao]# ls
a.txt  b.txt  c.txt  my.sh  test.sh  w1.png  w.png  yes.log
[root@k8s-master01 xuebiao]#

执行以上命令后,屏幕上并不会显示 ls 命令的输出信息,因为输出信息已经被重定向至c.txt 文件中了。

除此之外,重定向还有许多用途,它还可以用于复制文件的内容,而且不限于复制文本文件,二进制文件也可以复制:

[root@k8s-master01 xuebiao]# ls
a.txt  b.txt  c.txt  my.sh  test.sh  w1.png  w.png  yes.log
[root@k8s-master01 xuebiao]# cat w.png > w2.png
[root@k8s-master01 xuebiao]# ls
a.txt  b.txt  c.txt  my.sh  test.sh  w1.png  w2.png  w.png  yes.log
[root@k8s-master01 xuebiao]# 

如果你想要将一个文件的内容复制到另一个文件的末尾,你只需将 > 字符换成 >> 字符串即

[root@k8s-master01 xuebiao]# cat a.txt
qwe
[root@k8s-master01 xuebiao]# cat b.txt
123
[root@k8s-master01 xuebiao]# cat c.txt
zxc
[root@k8s-master01 xuebiao]# cat a.txt>>b.txt
[root@k8s-master01 xuebiao]# cat b.txt
123
qwe
[root@k8s-master01 xuebiao]# 

重定向输入

输入重定向可以将输入信息重定向至命令中作为参数使用。该功能可能比较少用,但是,当命令需要一个参数列表时,而这些参数都存在一个文件中,然后你想快速地将它们从文件中复制粘贴到终端,这时这个功能就能派上用场了。

例如:a.txt里记录了你需要用的命令,而你想要打印他们

[root@k8s-master01 xuebiao]# cat a.txt
qwe
[root@k8s-master01 xuebiao]# echo $(<a.txt)
qwe
[root@k8s-master01 xuebiao]# 

输入重定向的常见用法是 Here-document (简称 Here-doc) 以及 Here-string 。

  • Here-doc 将输入的文本块重定向至标准输入流,直至遇到特殊的文件结束标记符为止(文件结束标记符可以是任意的唯一的字符串,但大部分人都默认使用 EOF)。
    你可以尝试在终端输入以下命令(直到第二个 EOF 字符串结束):
[root@k8s-master01 xuebiao]# cat <<EOF
> yes
> you dont kown me
> EOF
yes
you dont kown me
[root@k8s-master01 xuebiao]# 

Here-doc 是 Bash 脚本编写者们将多行文本转储到文件或屏幕上的常用技巧。

Here-string 与 Here-doc 相似,但是它只有一个字符串,或者几个被引号括起来的字符串:

$ cat <<< alvin
alvin
$ cat <<< "alvin lxlinux.net"
alvin lxlinux.net

重定向错误信息

错误信息默认会进入叫 stderr 的流,使用 2> 可以对其进行重定向。例如,将错误信息重定向到名为 err.txt 的文件中:

[root@k8s-master01 xuebiao]# ls
a.txt  b.txt  c.txt  my.sh  test.sh  w1.png  w2.png  w.png  yes.log
[root@k8s-master01 xuebiao]# ls yes
ls: 无法访问yes: 没有那个文件或目录
[root@k8s-master01 xuebiao]# ls yes > err.txt
ls: 无法访问yes: 没有那个文件或目录
[root@k8s-master01 xuebiao]# ls
a.txt  b.txt  c.txt  err.txt  my.sh  test.sh  w1.png  w2.png  w.png  yes.log
[root@k8s-master01 xuebiao]# cat err.txt
[root@k8s-master01 xuebiao]# ls yes 2> err.txt
[root@k8s-master01 xuebiao]# cat err.txt
ls: 无法访问yes: 没有那个文件或目录
[root@k8s-master01 xuebiao]# 

重定向数据至 /dev/null

就像标准输入、标准输出以及标准错误一样,在 Linux 文件系统中,空,也存在一个文件与之对应,它叫做 null ,放在 /dev 目录下。为了方便读,人们经常省略斜杠,直接把他读作 dev null 。

/dev/null 并不保存数据,被写入 /dev/null 的数据最终都会丢失,就像被丢进虚空中一样。因此,你可以使用重定向将不需要的数据输送到 /dev/null 。例如,find 命令的输出往往很冗长,而且在搜索文件时还经常会报告权限冲突的错误,像这样:

$ find ~ -type f
/home/seth/actual.file
find: `/home/seth/foggy': Permission denied
find: `/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file

这时,你就可以将错误信息重定向到 /dev/null ,以过滤掉不必要的信息,像这样:

$ find ~ -type f 2> /dev/null
/home/seth/actual.file
/home/seth/zzz.file

Linux相关总结(三)相关推荐

  1. Linux 串口编程三 使用termios与API进行串口程序开发

    在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...

  2. Linux相关配置 集群免密码登录配置

    Linux相关配置 集群免密码登录配置 实验目的要求: 1.完成VMware Workstation安装,会应用相关操作 2.掌握虚拟机中Linux CentOS 7.4操作系统安装 3.完成静态网络 ...

  3. linux相关系统下qtcreator调试程序

    作者本人初次接触linux 相关系统的QT(IDE)时,没有想象中的得心应手,调试较长的对象数据显得有点无奈(超出显示范围后数据变成-,打开数据查看也比较头疼(一行显示一个字节数据)).经过多个项目的 ...

  4. 20135302魏静静——linux课程第三周实验及总结

    linux课程第三周实验及总结 一.实验:跟踪分析Linux内核的启动过程 使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxKer ...

  5. linux 相关快捷键

    linux 相关快捷键 http://linux.chinaunix.net/begin/2004-10-05/34.shtml#_Toc41417098 1.使用虚拟控制台 登录后按"Al ...

  6. 【Linux】Linux学习(三)常用基本命令(一)

    Linux学习(三)常用基本命令 常用基本命令 帮助命令 文件目录类命令 时间日期类命令 用户管理命令 用户组管理命令 文件权限类 搜索查找类 压缩和解压类 磁盘查看和分区类 进程管理类 学习总结 常 ...

  7. #Linux基础(三)

    #Linux基础(三) ###vi/vim的特点 vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色. vi/vim正是一个文本编辑工具,只能对文本的内容进 ...

  8. linux相关命令之top命令

    linux相关命令之top命令 后端们最怕的事情之一就是服务器的负载突然飙升,这可能又意味着一个个夺目Call马上要打过来了.碰到这种情况怎么办,大家第一反应一定是登陆到服务器上,先敲一个top命令看 ...

  9. Linux相关教程(概念版)

    一.参考资料 Linux相关教程(经验版) 二.相关介绍 1. RPM与Deb格式 手把手教你玩转 openEuler 开源社区 在 Linux 的世界,有两种基本的安装包格式:RPM 与 Deb. ...

最新文章

  1. 【B/S实践】解决:vs中修改样式表后不起作用的问题
  2. 客户端修改文件服务器密码,客户端服务器登录 密码问题
  3. ApplicationStartedEvent 与 ContextStartedEvent 有区别吗?
  4. 突破冰箱局限!海尔智家AWE发布美食物联生态平台
  5. luogu3093 牛奶调度
  6. LeetCode动态规划 使用最小花费爬楼梯
  7. java流与文件——操作文件
  8. keepalived安装与配置_Nginx_Keepalived高可用配置
  9. [css] 如何将元素的所有css属性恢复为初始化状态?
  10. java break递归_【Java】递归总结
  11. md5加密+盐方式一
  12. ylb:SQL 系统函数
  13. java多线程-线程安全
  14. html 长度vm,css vm是什么单位?
  15. 为什么越来越多的人从开发转测试?
  16. (二)流(Stream)
  17. 职业定位测试/职业能力倾向测试
  18. 刚申请的博客,就发一个老师让做的“一分钟打动面试官”作业做为纪念吧!!!...
  19. 量子计算机解泊松方程,试求泊松方程的解.ppt
  20. TF卡里删掉文件后内存没变大_不用第三方,手机自带软件也能清扫内存!教你4个正确清理技巧...

热门文章

  1. 【辣眼睛】QQ新功能-照片回收站
  2. 袖珍电子书,美名传四方
  3. CASA模型、CENTURY模型应用与案例分析
  4. 全局变量、静态全局变量、静态局部变量和普通局部变量的区别
  5. 安卓市场和安智市场_安卓应用如何快速上架应用市场?
  6. g的python实现_Python flask.g方法代码示例
  7. 微信测试号实现个人第三方PC端网站二维码登录(代码实现篇)
  8. python3安装pymysql_python3中安装PyMySQL模块
  9. hadoop fs 命令大全(解析和例子)
  10. vue获取屏幕的实时 宽度 / 高度