Linux相关总结(三)
实操篇 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相关总结(三)相关推荐
- Linux 串口编程三 使用termios与API进行串口程序开发
在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...
- Linux相关配置 集群免密码登录配置
Linux相关配置 集群免密码登录配置 实验目的要求: 1.完成VMware Workstation安装,会应用相关操作 2.掌握虚拟机中Linux CentOS 7.4操作系统安装 3.完成静态网络 ...
- linux相关系统下qtcreator调试程序
作者本人初次接触linux 相关系统的QT(IDE)时,没有想象中的得心应手,调试较长的对象数据显得有点无奈(超出显示范围后数据变成-,打开数据查看也比较头疼(一行显示一个字节数据)).经过多个项目的 ...
- 20135302魏静静——linux课程第三周实验及总结
linux课程第三周实验及总结 一.实验:跟踪分析Linux内核的启动过程 使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxKer ...
- linux 相关快捷键
linux 相关快捷键 http://linux.chinaunix.net/begin/2004-10-05/34.shtml#_Toc41417098 1.使用虚拟控制台 登录后按"Al ...
- 【Linux】Linux学习(三)常用基本命令(一)
Linux学习(三)常用基本命令 常用基本命令 帮助命令 文件目录类命令 时间日期类命令 用户管理命令 用户组管理命令 文件权限类 搜索查找类 压缩和解压类 磁盘查看和分区类 进程管理类 学习总结 常 ...
- #Linux基础(三)
#Linux基础(三) ###vi/vim的特点 vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色. vi/vim正是一个文本编辑工具,只能对文本的内容进 ...
- linux相关命令之top命令
linux相关命令之top命令 后端们最怕的事情之一就是服务器的负载突然飙升,这可能又意味着一个个夺目Call马上要打过来了.碰到这种情况怎么办,大家第一反应一定是登陆到服务器上,先敲一个top命令看 ...
- Linux相关教程(概念版)
一.参考资料 Linux相关教程(经验版) 二.相关介绍 1. RPM与Deb格式 手把手教你玩转 openEuler 开源社区 在 Linux 的世界,有两种基本的安装包格式:RPM 与 Deb. ...
最新文章
- 【B/S实践】解决:vs中修改样式表后不起作用的问题
- 客户端修改文件服务器密码,客户端服务器登录 密码问题
- ApplicationStartedEvent 与 ContextStartedEvent 有区别吗?
- 突破冰箱局限!海尔智家AWE发布美食物联生态平台
- luogu3093 牛奶调度
- LeetCode动态规划 使用最小花费爬楼梯
- java流与文件——操作文件
- keepalived安装与配置_Nginx_Keepalived高可用配置
- [css] 如何将元素的所有css属性恢复为初始化状态?
- java break递归_【Java】递归总结
- md5加密+盐方式一
- ylb:SQL 系统函数
- java多线程-线程安全
- html 长度vm,css vm是什么单位?
- 为什么越来越多的人从开发转测试?
- (二)流(Stream)
- 职业定位测试/职业能力倾向测试
- 刚申请的博客,就发一个老师让做的“一分钟打动面试官”作业做为纪念吧!!!...
- 量子计算机解泊松方程,试求泊松方程的解.ppt
- TF卡里删掉文件后内存没变大_不用第三方,手机自带软件也能清扫内存!教你4个正确清理技巧...