pstack
显示每个进程的栈跟踪
补充说明
pstack命令 可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。
命令软件包下载地址:https://packages.debian.org/sid/pstack
实例
pstree以树结构显示进程
pstree -p work | grep ad
sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)
|-{ad_preprocess}(4553)
|-{ad_preprocess}(4554)
|-{ad_preprocess}(4555)
|-{ad_preprocess}(4556)
`-{ad_preprocess}(4557)
work为工作用户,-p为显示进程识别码,ad_preprocess共启动了6个子线程,加上主线程共7个线程。
ps -Lf 4551
UID PID PPID LWP C NLWP STIME TTY stat time CMD
work 4551 22670 4551 2 7 16:30 pts/2 Sl+ 0:02 ./ad_preprocess
work 4551 22670 4552 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
work 4551 22670 4553 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
work 4551 22670 4554 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
work 4551 22670 4555 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
work 4551 22670 4556 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
work 4551 22670 4557 0 7 16:30 pts/2 Sl+ 0:00 ./ad_preprocess
进程共启动了7个线程
pstree
以树状图的方式展现进程之间的派生关系
补充说明
pstree命令 以树状图的方式展现进程之间的派生关系,显示效果比较直观。
语法
pstree(选项)
选项
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;
-U:使用UTF-8列绘图字符;
-V:显示版本信息。
实例
显示当前所有进程的进程号和进程id
pstree -p
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
pstree -a
获取 SSH 会话的 PID
pstree -p | grep ssh
# |-sshd(1221)-+-sshd(2768)---bash(2770)-+-grep(2810)
# | `-sshd(2807)---sshd(2808)
从上方的输出中,你可以看到 sshd 进程与分支的树形图。sshd 的主进程是 sshd(1221),另两个分支分别为 sshd(2768) 和 sshd(2807)。
pushd
将目录添加到目录堆栈顶部。
概要
pushd [-n] [+N | -N | dir]
主要用途
-
将目录添加到目录堆栈顶部,切换当前工作目录到该目录。
-
旋转目录堆栈,使堆栈的新顶部成为当前工作目录。
-
没有参数时,交换目录堆栈的前两个目录。
选项
-n 抑制添加目录引起的当前工作目录变化。
参数
+N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将作为堆栈顶部,在它前面的会移动到底部。(从0开始计数)
-N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将作为堆栈顶部,在它前面的会移动到底部。(从0开始计数)
dir(可选):要推送的目录。
返回值
返回成功除非提供了非法选项或执行出现错误。
例子
# 添加目录到堆栈,改变了当前工作目录。
[user2@pc ~]$ dirs
~
[user2@pc ~]$ pushd ~/Desktop
~/Desktop ~
[user2@pc Desktop]$
# 添加目录到堆栈,当前工作目录不变。
[user2@pc ~]$ dirs
~
[user2@pc ~]$ pushd -n ~/Desktop
~ ~/Desktop
[user2@pc ~]$ pushd -n ~/Pictures
~ ~/Pictures ~/Desktop
# 调整顺序。
[user2@pc ~]$ pushd +1
~/Pictures ~/Desktop ~
[user2@pc ~]$ pushd -1
~/Desktop ~ ~/Pictures
[user2@pc ~]$ pushd
~ ~/Desktop ~/Pictures
注意
bash的目录堆栈命令包括dirs popd pushd。- 当前目录始终是目录堆栈的顶部。
- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
参考链接
pv
显示当前在命令行执行的命令的进度信息,管道查看器
补充说明
pv命令 Pipe Viewer 的简称,由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。
下载安装
# Debian 系的操作系统,如 Ubuntu
sudo apt-get install pv
# RedHat系的则这样:
yum install pv
语法
pv(选项)(参数)
pv [OPTION] [FILE]...
选项
-p, --progress 显示进度条
-t, --timer 显示已用时间
-e, --eta 显示预计到达时间 (完成)
-I, --fineta 显示绝对估计到达时间
(完成)
-r, --rate 显示数据传输速率计数器
-a, --average-rate 显示数据传输平均速率计数器
-b, --bytes 显示传输的字节数
-T, --buffer-percent 显示正在使用的传输缓冲区百分比
-A, --last-written NUM 显示上次写入的字节数
-F, --format FORMAT 将输出格式设置为FORMAT
-n, --numeric 输出百分比
-q, --quiet 不输出任何信息
-W, --wait 在传输第一个字节之前不显示任何内容
-D, --delay-start SEC 在SEC秒过去之前不显示任何内容
-s, --size SIZE 将估算的数据大小设置为SIZE字节
-l, --line-mode 计算行数而不是字节数
-0, --null 行以零结尾
-i, --interval SEC 每SEC秒更新一次
-w, --width WIDTH 假设终端的宽度为WIDTH个字符
-H, --height HEIGHT 假设终端高度为HEIGHT行
-N, --name NAME 在可视信息前面加上名称
-f, --force 将标准错误输出到终端
-c, --cursor 使用光标定位转义序列
-L, --rate-limit RATE 将传输限制为每秒RATE字节
-B, --buffer-size BYTES 使用BYTES的缓冲区大小
-C, --no-splice 从不使用splice(),始终使用读/写
-E, --skip-errors 跳过输入中的读取错误
-S, --stop-at-size 传输--size字节后停止
-R, --remote PID 更新过程PID的设置
-P, --pidfile FILE 将进程ID保存在FILE中
-d, --watchfd PID[:FD] 监视进程PID,打开的文件FD
-h, --help 显示帮助
-V, --version 显示版本信息
实例
我们(在 linux 上使用命令行的用户)的大多数使用场景都会用到的命令是从一个 USB 驱动器拷贝电影文件到你的电脑。如果你使用 cp 来完成上面的任务,你会什么情况都不清楚,直到整个复制过程结束或者出错。
pvchange
修改物理卷属性
补充说明
pvchange命令 允许管理员改变物理卷的分配许可。如果物理卷出现故障,可以使用pvchange命令禁止分配物理卷上的PE。
语法
pvchange(选项)(参数)
选项
-u:生成新的UUID;
-x:是否允许分配PE。
参数
物理卷:指定要修改属性的物理卷所对应的设备文件。
实例
使用pvchange命令禁止分配指定物理卷上的PE。在命令行中输入下面的命令:
pvchange -x n /dev/sdb1 #禁止分配"/dev/sdb1"上的PE
输出信息如下:
Physical volume "/dev/sdb1" changed
1 physical volume changed / 0 physical volumes not changed
pvck
检测物理卷的LVM元数据的一致性
补充说明
pvck命令 用来检测物理卷的LVM元数据的一致性。默认情况下,物理卷中的前4个扇区保存着LVM卷标,可以使用--labelsector选项指定其他的位置(例如:数据恢复时)。
语法
pvck(选项)(参数)
选项
-d:调试模式;
-v:详细信息模式;
--labelsector:指定LVE卷标所在扇区。
参数
物理卷:指定要检查的物理卷对应的设备文件。
实例
使用pvck命令检查物理卷/dev/sdb1。在命令行中输入下面的命令:
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
pvcreate
将物理硬盘分区初始化为物理卷
补充说明
pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。
语法
pvcreate(选项)(参数)
选项
-f:强制创建物理卷,不需要用户确认;
-u:指定设备的UUID;
-y:所有的问题都回答“yes”;
-Z:是否利用前4个扇区。
参数
物理卷:指定要创建的物理卷对应的设备文件名。
实例
查看磁盘信息:
[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格式
pvdisplay
显示物理卷的属性
补充说明
pvdisplay命令 用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。
语法
pvdisplay(选项)(参数)
选项
-s:以短格式输出;
-m:显示PE到LE的映射。
参数
物理卷:要显示的物理卷对应的设备文件名。
实例
使用pvdisplay命令显示指定的物理卷的基本信息。在命令行中输入下面的命令:
[root@localhost ~]# pvdisplay /dev/sdb1 #显示物理卷基本信息
输出信息如下:
"/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
pvremove
删除一个存在的物理卷
补充说明
pvremove命令 用于删除一个存在的物理卷。使用pvremove指令删除物理卷时,它将LVM分区上的物理卷信息删除,使其不再被视为一个物理卷。
语法
pvremove(选项)(参数)
选项
-d # 调试模式;
-f # 强制删除;
-y # 对提问回答“yes”。
参数
物理卷:指定要删除的物理卷对应的设备文件名。
实例
使用pvremove指令删除物理卷/dev/sdb2。在命令行中输入下面的命令:
pvremove /dev/sdb2 # 删除物理卷
Labels on physical volume "/dev/sdb2" successfully wiped
pvs
输出物理卷信息报表
补充说明
pvs命令 用于输出格式化的物理卷信息报表。使用pvs命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplay命令。
语法
pvs(选项)(参数)
选项
--noheadings:不输出标题头;
--nosuffix:不输出空间大小的单位。
参数
物理卷:要显示报表的物理卷列表。
实例
使用pvs命令显示系统中所有物理卷的信息报表。在命令行中输入下面的命令:
pvs # 输出物理卷信息报表
输出信息如下:
PV VG fmt Attr PSize PFree
/dev/sdb1 vg1000 lvm2 -- 100.00M 100.00M
/dev/sdb2 lvm2 -- 101.98M 101.98M