pwconv

用来开启用户的投影密码

补充说明

pwconv命令 用来开启用户的投影密码。Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符,有效的强化了系统的安全性。

语法

1
pwconv

实例

1
2
cat /etc/passwd | grep test
test:x:3001:3001::/home/test:/bin/sh

此时可以发现密码段是x

1
2
cat /etc/shadow | grep test
test:$6$nYOEWamm$bz07nlv/.RgJufb3FAqJJeULfwybzgxmrWqbk7O4vI0KsT6N.ujrh6dDIUcAJdfjksyuyAFDPIngZeD3cgcf.0:15022:0:99999:7:::

pwck

用来验证系统认证文件内容和格式的完整性

补充说明

pwck命令 用来验证系统认证文件/etc/passwd/etc/shadow的内容和格式的完整性。

语法

1
pwck(选项)(参数)

选项

1
2
3
-q:仅报告错误信息;
-s:以用户id排序文件“/etc/passwd”和“/etc/shadow”;
-r:只读方式运行指令。

参数

  • 密码文件:指定密码文件的路径;
  • 影子文件:指定影子文件的路径。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pwck /etc/passwd
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'www-data': directory '/var/www' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/var/run/ircd' does not exist
user 'gnats': directory '/var/lib/gnats' does not exist
user 'nobody': directory '/nonexistent' does not exist
user 'syslog': directory '/home/syslog' does not exist
user 'couchdb': directory '/var/lib/couchdb' does not exist
user 'speech-dispatcher': directory '/var/run/speech-dispatcher' does not exist
user 'usbmux': directory '/home/usbmux' does not exist
user 'haldaemon': directory '/var/run/hald' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'saned': directory '/home/saned' does not exist
user 'hplip': directory '/var/run/hplip' does not exist
pwck:无改变

pvscan

扫描系统中所有硬盘的物理卷列表

补充说明

pvscan命令 会扫描系统中连接的所有硬盘,列出找到的物理卷列表。使用pvscan命令的-n选项可以显示硬盘中的不属于任何卷组的物理卷,这些物理卷是未被使用的。

语法

1
pvscan(选项)

选项

1
2
3
4
5
-d:调试模式;
-e:仅显示属于输出卷组的物理卷;
-n:仅显示不属于任何卷组的物理卷;
-s:短格式输出;
-u:显示UUID。

实例

使用pvscan命令扫描当前系统中所有硬盘的物理卷,在命令行中输入下面的命令:

1
[root@localhost ~]# pvscan     #扫描所有硬盘上的物理卷

输出信息如下:

1
2
3
4
PV /dev/sdb1         lvm2 [101.94 MB]  
PV /dev/sdb2 lvm2 [101.98 MB]
Total: 2 [203.92 MB] / in use: 0 [0 ] / in no VG: 2 [203.92
MB]

说明:本例中,输出了两个物理卷,它们不属于任何卷组,是可被利用的物理卷。

pvs

输出物理卷信息报表

补充说明

pvs命令 用于输出格式化的物理卷信息报表。使用pvs命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplay命令。

语法

1
pvs(选项)(参数)

选项

1
2
--noheadings:不输出标题头;
--nosuffix:不输出空间大小的单位。

参数

物理卷:要显示报表的物理卷列表。

实例

使用pvs命令显示系统中所有物理卷的信息报表。在命令行中输入下面的命令:

1
pvs                    #输出物理卷信息报表

输出信息如下:

1
2
3
PV         VG     fmt  Attr PSize   PFree  
/dev/sdb1 vg1000 lvm2 -- 100.00M 100.00M
/dev/sdb2 lvm2 -- 101.98M 101.98M

pvremove

删除一个存在的物理卷

补充说明

pvremove命令 用于删除一个存在的物理卷。使用pvremove指令删除物理卷时,它将LVM分区上的物理卷信息删除,使其不再被视为一个物理卷。

语法

1
pvremove(选项)(参数)

选项

1
2
3
-d:调试模式;
-f:强制删除;
-y:对提问回答“yes”。

参数

物理卷:指定要删除的物理卷对应的设备文件名。

实例

使用pvremove指令删除物理卷/dev/sdb2。在命令行中输入下面的命令:

1
2
pvremove /dev/sdb2 #删除物理卷
Labels on physical volume "/dev/sdb2" successfully wiped

pvdisplay

显示物理卷的属性

补充说明

pvdisplay命令 用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。

语法

1
pvdisplay(选项)(参数)

选项

1
2
-s:以短格式输出;
-m:显示PE到LE的映射。

参数

物理卷:要显示的物理卷对应的设备文件名。

实例

使用pvdisplay命令显示指定的物理卷的基本信息。在命令行中输入下面的命令:

1
[root@localhost ~]# pvdisplay /dev/sdb1    #显示物理卷基本信息

输出信息如下:

1
2
3
4
5
"/dev/sdb1" is a new physical volume of "101.94 MB"  
--- NEW Physical volume ---
PV Name /dev/sdb1
....省略部分输出内容......
PV UUID FOXiS2-Ghaj-Z0Mf- cdVZ-pfpk- dP9p-ifIZXN

pvcreate

将物理硬盘分区初始化为物理卷

补充说明

pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。

语法

1
pvcreate(选项)(参数)

选项

1
2
3
4
-f:强制创建物理卷,不需要用户确认;
-u:指定设备的UUID;
-y:所有的问题都回答“yes”;
-Z:是否利用前4个扇区。

参数

物理卷:指定要创建的物理卷对应的设备文件名。

实例

查看磁盘信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# fdisk -l
Disk /dev/hda: 41.1 GB, 41174138880 bytes
255 heads, 63 sectors/track, 5005 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 1288 10241437+ 83 Linux
/dev/hda3 1289 1925 5116702+ 83 Linux
/dev/hda4 1926 5005 24740100 5 Extended
/dev/hda5 1926 2052 1020096 82 Linux swap / Solaris
/dev/hda6 2053 2235 1469916 8e Linux LVM
/dev/hda7 2236 2418 1469916 8e Linux LVM
/dev/hda8 2419 2601 1469916 8e Linux LVM
/dev/hda9 2602 2784 1469916 8e Linux LVM

检查有无 PV 在系统上,然后将/dev/hda6/dev/hda9建立成为PV格式

1
2
[root@localhost ~]# pvscan
No matching physical volumes found #找不到任何的 PV 存在!

将6-9分区转成pv,注意大括号的用途:

1
2
3
4
5
[root@localhost ~]# pvcreate /dev/hda{6,7,8,9}
Physical volume "/dev/hda6" successfully created
Physical volume "/dev/hda7" successfully created
Physical volume "/dev/hda8" successfully created
Physical volume "/dev/hda9" successfully created

这就分別表示每个 PV 的信息与系统所有 PV 的信息:

1
2
3
4
5
6
[root@localhost ~]# pvscan
PV /dev/hda6 lvm2 [1.40 GB]
PV /dev/hda7 lvm2 [1.40 GB]
PV /dev/hda8 lvm2 [1.40 GB]
PV /dev/hda9 lvm2 [1.40 GB]
Total: 4 [5.61 GB] / in use: 0 [0 ] / in no VG: 4 [5.61 GB]

更详细的列示出系统上面每个 PV 信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# pvdisplay
"/dev/hda6" is a new physical volume of "1.40 GB"
--- NEW Physical volume ---
PV Name /dev/hda6 #实际的 partition 分区名称
VG Name #因为尚未分配出去,所以空白!
PV Size 1.40 GB #就是容量说明
Allocatable NO #是否已被分配,结果是 NO
PE Size (KByte) 0 #在此 PV 內的 PE 大小
Total PE 0 #共分割出几个 PE
free PE 0 #沒被 LV 用掉的 PE
Allocated PE 0 #尚可分配出去的 PE 数量
PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
....(底下省略)....

删除物理卷:

1
2
[root@localhost ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped

修改物理卷属性:

1
2
3
[root@localhost ~]# pvchange -x n /dev/sdb1    #禁止分配指定物理卷上的PE
Physical volume "/dev/sdb1" changed
1 physical volume changed / 0 physical volumes not changed

pvck

检测物理卷的LVM元数据的一致性

补充说明

pvck命令 用来检测物理卷的LVM元数据的一致性。默认情况下,物理卷中的前4个扇区保存着LVM卷标,可以使用--labelsector选项指定其他的位置(例如:数据恢复时)。

语法

1
pvck(选项)(参数)

选项

1
2
3
-d:调试模式;
-v:详细信息模式;
--labelsector:指定LVE卷标所在扇区。

参数

物理卷:指定要检查的物理卷对应的设备文件。

实例

使用pvck命令检查物理卷/dev/sdb1。在命令行中输入下面的命令:

1
2
3
4
5
6
pvck -v /dev/sdb1    #检查物理卷元数据
Scanning /dev/sdb1
Found label on /dev/sdb1, sector 1, type=LVM2 001
Found text metadata area: offset=4096, size=192512
Found LVM2 metadata record at offset=125952,
size=70656, offset2=0 size2=0

pvchange

修改物理卷属性

补充说明

pvchange命令 允许管理员改变物理卷的分配许可。如果物理卷出现故障,可以使用pvchange命令禁止分配物理卷上的PE。

语法

1
pvchange(选项)(参数)

选项

1
2
-u:生成新的UUID;
-x:是否允许分配PE。

参数

物理卷:指定要修改属性的物理卷所对应的设备文件。

实例

使用pvchange命令禁止分配指定物理卷上的PE。在命令行中输入下面的命令:

1
pvchange -x n /dev/sdb1     #禁止分配"/dev/sdb1"上的PE

输出信息如下:

1
2
Physical volume "/dev/sdb1" changed  
1 physical volume changed / 0 physical volumes not changed

pv

显示当前在命令行执行的命令的进度信息,管道查看器。

补充说明

pv命令 Pipe Viewer 的简称,由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。

下载安装

1
2
3
4
5
# Debian 系的操作系统,如 Ubuntu
sudo apt-get install pv

# RedHat系的则这样:
yum install pv

语法

1
2
pv(选项)(参数)
pv [OPTION] [FILE]...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-p, --progress           show progress bar
-t, --timer show elapsed time
-e, --eta show estimated time of arrival (completion)
-I, --fineta show absolute estimated time of arrival
(completion)
-r, --rate show data transfer rate counter
-a, --average-rate show data transfer average rate counter
-b, --bytes show number of bytes transferred
-T, --buffer-percent show percentage of transfer buffer in use
-A, --last-written NUM show NUM bytes last written
-F, --format FORMAT set output format to FORMAT
-n, --numeric 输出百分比
-q, --quiet do not output any transfer information at all

-W, --wait display nothing until first byte transferred
-D, --delay-start SEC display nothing until SEC seconds have passed
-s, --size SIZE set estimated data size to SIZE bytes
-l, --line-mode count lines instead of bytes
-0, --null lines are null-terminated
-i, --interval SEC update every SEC seconds
-w, --width WIDTH assume terminal is WIDTH characters wide
-H, --height HEIGHT assume terminal is HEIGHT rows high
-N, --name NAME prefix visual information with NAME
-f, --force output even if standard error is not a terminal
-c, --cursor use cursor positioning escape sequences

-L, --rate-limit RATE limit transfer to RATE bytes per second
-B, --buffer-size BYTES use a buffer size of BYTES
-C, --no-splice never use splice(), always use read/write
-E, --skip-errors skip read errors in input
-S, --stop-at-size stop after --size bytes have been transferred
-R, --remote PID update settings of process PID

-P, --pidfile FILE save process ID in FILE

-d, --watchfd PID[:FD] watch file FD opened by process PID

-h, --help 显示帮助
-V, --version 显示版本信息

实例

我们(在 linux 上使用命令行的用户)的大多数使用场景都会用到的命令是从一个 USB 驱动器拷贝电影文件到你的电脑。如果你使用 cp 来完成上面的任务,你会什么情况都不清楚,直到整个复制过程结束或者出错。

1
2
3
4
5
6
7
8
# 复制文件会有进度
linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso > ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso
# 下面输入信息
552MiB 0:00:02 [ 212MiB/s] [==================> ] 91% ETA 0:00:00

# -L 可以让你修改 pv 命令的传输速率。
# 使用 -L 选项来限制传输速率为2MB/s。
pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
1
2
3
4
5
6
7
8
9
10
11
# 字符一个个匀速在命令行中显示出来
echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10

# 压缩文件展示进度信息
pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz


# 用 dd 命令将 iso 写入磁盘,pv来实现进度条的显示
sudo pv -cN source < /Users/kacperwang/Downloads/CentOS-7-x86_64-Everything-1511.iso | sudo dd of=/dev/disk2 bs=4m
## 显示下面进度
source: 5.2GiB 5:11:41 [ 503KiB/s] [=====================> ] 71% ETA 2:01:56