popd

用于删除目录栈中的记录

补充说明

popd命令 用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录。

语法

1
pushd(选项)(参数)

选项

1
2
3
+N:将第N个目录删除(从左边数起,数字从0开始);
-N:将第N个目录删除(从右边数起,数字从0开始);
-n:将目录出栈时,不切换目录。

实例

1
2
3
4
5
6
7
8
9
10
11
root@Mylinux:/tmp/dir4# popd(相当于popd +0)
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~

root@Mylinux:/tmp/dir3# pushd /tmp/dir4
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~

root@Mylinux:/tmp/dir4# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 ~

root@Mylinux:/tmp/dir4# popd -2
/tmp/dir4 /tmp/dir1 ~

pmap

报告进程的内存映射关系

补充说明

pmap命令 用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。

语法

1
pmap(选项)(参数)

选项

1
2
3
4
-x:显示扩展格式;
-d:显示设备格式;
-q:不显示头尾行;
-V:显示指定版本。

参数

进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。

实例

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
pidof nginx
13312 5371

pmap -x 5371
5371: nginx: worker process
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 564 344 0 r-x-- nginx
000000000068c000 68 68 60 rw--- nginx
000000000069d000 56 12 12 rw--- [ anon ]
000000000a0c8000 1812 1684 1684 rw--- [ anon ]
0000003ac0a00000 112 40 0 r-x-- ld-2.5.so
0000003ac0c1c000 4 4 4 r---- ld-2.5.so
0000003ac0c1d000 4 4 4 rw--- ld-2.5.so
0000003ac0e00000 1340 284 0 r-x-- libc-2.5.so
0000003ac0f4f000 2044 0 0 ----- libc-2.5.so
0000003ac114e000 16 16 8 r---- libc-2.5.so
0000003ac1152000 4 4 4 rw--- libc-2.5.so
0000003ac1153000 20 20 20 rw--- [ anon ]
0000003ac1200000 8 4 0 r-x-- libdl-2.5.so
0000003ac1202000 2048 0 0 ----- libdl-2.5.so
0000003ac1402000 4 4 4 r---- libdl-2.5.so
0000003ac1403000 4 4 4 rw--- libdl-2.5.so
0000003ac1600000 84 0 0 r-x-- libselinux.so.1
0000003ac1615000 2048 0 0 ----- libselinux.so.1
0000003ac1815000 8 8 8 rw--- libselinux.so.1
0000003ac1817000 4 4 4 rw--- [ anon ]
0000003ac1a00000 236 0 0 r-x-- libsepol.so.1
0000003ac1a3b000 2048 0 0 ----- libsepol.so.1
0000003ac1c3b000 4 4 4 rw--- libsepol.so.1
0000003ac1c3c000 40 0 0 rw--- [ anon ]
0000003ac1e00000 88 44 0 r-x-- libpthread-2.5.so
0000003ac1e16000 2048 0 0 ----- libpthread-2.5.so
0000003ac2016000 4 4 4 r---- libpthread-2.5.so
0000003ac2017000 4 4 4 rw--- libpthread-2.5.so
0000003ac2018000 16 4 4 rw--- [ anon ]
0000003ac2600000 80 52 0 r-x-- libz.so.1.2.3
0000003ac2614000 2044 0 0 ----- libz.so.1.2.3
0000003ac2813000 4 4 4 rw--- libz.so.1.2.3
0000003ac2a00000 36 4 0 r-x-- libcrypt-2.5.so
0000003ac2a09000 2044 0 0 ----- libcrypt-2.5.so
0000003ac2c08000 4 4 4 r---- libcrypt-2.5.so
0000003ac2c09000 4 4 4 rw--- libcrypt-2.5.so
0000003ac2c0a000 184 0 0 rw--- [ anon ]
0000003ac3600000 8 0 0 r-x-- libkeyutils-1.2.so
0000003ac3602000 2044 0 0 ----- libkeyutils-1.2.so
0000003ac3801000 4 4 4 rw--- libkeyutils-1.2.so
0000003ac3a00000 68 0 0 r-x-- libresolv-2.5.so
0000003ac3a11000 2048 0 0 ----- libresolv-2.5.so
0000003ac3c11000 4 4 4 r---- libresolv-2.5.so
0000003ac3c12000 4 4 4 rw--- libresolv-2.5.so
0000003ac3c13000 8 0 0 rw--- [ anon ]
0000003ac3e00000 8 0 0 r-x-- libcom_err.so.2.1
0000003ac3e02000 2044 0 0 ----- libcom_err.so.2.1
0000003ac4001000 4 4 4 rw--- libcom_err.so.2.1
0000003ac4200000 1204 8 0 r-x-- libcrypto.so.0.9.8e
0000003ac432d000 2044 0 0 ----- libcrypto.so.0.9.8e
0000003ac452c000 132 88 12 rw--- libcrypto.so.0.9.8e
0000003ac454d000 16 12 12 rw--- [ anon ]
0000003ac4600000 176 0 0 r-x-- libgssapi_krb5.so.2.2
0000003ac462c000 2048 0 0 ----- libgssapi_krb5.so.2.2
0000003ac482c000 8 8 8 rw--- libgssapi_krb5.so.2.2
0000003ac4a00000 144 0 0 r-x-- libk5crypto.so.3.1
0000003ac4a24000 2044 0 0 ----- libk5crypto.so.3.1
0000003ac4c23000 8 8 8 rw--- libk5crypto.so.3.1
0000003ac4e00000 32 0 0 r-x-- libkrb5support.so.0.1
0000003ac4e08000 2044 0 0 ----- libkrb5support.so.0.1
0000003ac5007000 4 4 4 rw--- libkrb5support.so.0.1
0000003ac5200000 580 0 0 r-x-- libkrb5.so.3.3
0000003ac5291000 2048 0 0 ----- libkrb5.so.3.3
0000003ac5491000 16 16 12 rw--- libkrb5.so.3.3
0000003ac5a00000 288 4 0 r-x-- libssl.so.0.9.8e
0000003ac5a48000 2048 0 0 ----- libssl.so.0.9.8e
0000003ac5c48000 24 16 12 rw--- libssl.so.0.9.8e
00002b5751808000 8 8 8 rw--- [ anon ]
00002b5751810000 108 36 0 r-x-- libpcre.so.1.2.0
00002b575182b000 2044 0 0 ----- libpcre.so.1.2.0
00002b5751a2a000 4 4 4 rw--- libpcre.so.1.2.0
00002b5751a2b000 28 28 28 rw--- [ anon ]
00002b5751a32000 40 20 0 r-x-- libnss_files-2.5.so
00002b5751a3c000 2044 0 0 ----- libnss_files-2.5.so
00002b5751c3b000 4 4 4 r---- libnss_files-2.5.so
00002b5751c3c000 4 4 4 rw--- libnss_files-2.5.so
00002b5751c3d000 4 4 4 rw-s- zero (deleted)
00002b5751c3e000 20012 20000 20000 rw--- [ anon ]
00007fffbf2ce000 84 20 20 rw--- [ stack ]
00007fffbf35e000 12 0 0 r-x-- [ anon ]
ffffffffff600000 8192 0 0 ----- [ anon ]
---------------- ------ ------ ------
total kB 72880 22940 22000

pkill

可以按照进程名杀死进程

补充说明

pkill命令 可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。

语法

1
pkill(选项)(参数)

选项

1
2
3
4
5
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端。

参数

进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

实例

1
2
3
4
pgrep -l gaim
2979 gaim

pkill gaim

也就是说:kill对应的是PID,pkill对应的是command。

ping

测试主机之间网络的连通性

补充说明

ping命令 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

语法

1
ping(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-d:使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t<存活数值>:设置存活数值TTL的大小;
-v:详细显示指令的执行过程。

参数

目的主机:指定发送ICMP报文的目的主机。

实例

1
2
3
4
5
6
7
8
9
10
11
[root@AY1307311912260196fcZ ~]# ping www.jsdig.com
PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms
...按Ctrl+C结束

--- host.1.jsdig.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms

pigz

可以用来解压缩文件,gzip的并行实现升级版。

补充说明

pigz命令可以用来解压缩文件,最重要的是支持多线程并行处理,解压缩比gzip快。主页: http://zlib.net/pigz/

语法

1
2
pigz [ -cdfhikKlLmMnNqrRtz0..9,11 ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ...  ]
unpigz [ -cfhikKlLmMnNqrRtz ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ... ]

参数

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
-0 to -9, -11        Compression level (level 11, zopfli, is much slower)
--fast, --best Compression levels 1 and 9 respectively
-b, --blocksize mmm Set compression block size to mmmK (default 128K)
-c, --stdout Write all processed output to stdout (won't delete)
-d, --decompress Decompress the compressed input
-f, --force Force overwrite, compress .gz, links, and to terminal
-F --first Do iterations first, before block split for -11
-h, --help Display a help screen and quit
-i, --independent Compress blocks independently for damage recovery
-I, --iterations n Number of iterations for -11 optimization
-J, --maxsplits n Maximum number of split blocks for -11
-k, --keep Do not delete original file after processing
-K, --zip Compress to PKWare zip (.zip) single entry format
-l, --list List the contents of the compressed input
-L, --license Display the pigz license and quit
-m, --no-time Do not store or restore mod time
-M, --time Store or restore mod time
-n, --no-name Do not store or restore file name or mod time
-N, --name Store or restore file name and mod time
-O --oneblock Do not split into smaller blocks for -11
-p, --processes n Allow up to n compression threads (default is the number of online processors, or 8 if unknown)
-q, --quiet Print no messages, even on error
-r, --recursive Process the contents of all subdirectories
-R, --rsyncable Input-determined block locations for rsync
-S, --suffix .sss Use suffix .sss instead of .gz (for compression)
-t, --test Test the integrity of the compressed input
-v, --verbose Provide more verbose output
-V --version Show the version of pigz
-Y --synchronous Force output file write to permanent storage
-z, --zlib Compress to zlib (.zz) instead of gzip format
-- All arguments after "--" are treated as files

实例

可以结合tar使用, 压缩命令

1
tar -cvf - dir1 dir2 dir3 | pigz -p 8 > output.tgz

解压命令

1
pigz -p 8 -d output.tgz

如果是gzip格式,也支持用tar解压

1
tar -xzvf output.tgz

pidof

查找指定名称的进程的进程号ID号

补充说明

pidof命令 用于查找指定名称的进程的进程号id号。

语法

1
pidof(选项)(参数)

选项

1
2
3
4
-s:仅返回一个进程号;
-c:仅显示具有相同“root”目录的进程;
-x:显示由脚本开启的进程;
-o:指定不显示的进程ID。

参数

进程名称:指定要查找的进程名称。

实例

1
2
3
4
5
6
7
8
pidof nginx
13312 5371

pidof crond
1509

pidof init
1

pico

功能强大全屏幕的文本编辑器

补充说明

pico命令 是功能强大全屏幕的文本编辑器。pico的操作简单,提供了丰富的快捷键。常用的快捷键如下:

1
2
3
4
5
6
7
8
9
10
11
12
Ctrl+G:获得pico的帮助信息;
Ctrl+O:保存文件内容,如果是新文件,需要输入文件名;
Ctrl+R:在当前光标位置插入一个指定的文本文件内容;
Ctrl+Y:向前翻页;
Ctrl+V:向后翻页;
Ctrl+w:对文件进行搜索;
Ctrl+K:剪切当前文件行到粘贴缓冲区;
Ctrl+U:粘贴缓冲区中的内容到当前光标所在位置;
Ctrl+C:显示当前光标位置;
Ctrl+T:调用拼写检查功能,对文档进行拼写检查;
Ctrl+J:段落重排;
Ctrl+X:退出,当文件内容发生改变时,提供是否保存修改。

语法

1
pico(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-b:开启置换的功能;
-d:开启删除的功能;
-e:使用完整的文件名称;
-f:支持键盘上F1、F2...功能键;
-g:显示光标;
-h:在线帮助;
-j:开启切换的功能;
-k:预设pico在使用剪下命令时,会把光标所在的列的内容全部删除;
-m:开启鼠标支持的功能,您可用鼠标点选命令列表;
-n<间隔秒数>:设置多久检查一次新邮件;
-o<工作目录>:设置工作目录;
-q:忽略预设值;
-r<编辑页宽>:设置编辑文件的页宽;
-s<拼字检查器>:另外指定拼字检查器;
-t:启动工具模式;
-v:启动阅读模式,用户只能观看,无法编辑文件的内容;
-w:关闭自动换行,通过这个参数可以编辑内容很长的列;
-x:关闭页面下方的命令列表;
-z:让pico可被Ctrl+z中断,暂存在后台作业里;
+<列表编号>:执行pico指令进入编辑模式时,从指定的列数开始编辑。

参数

文件:指定要编辑的文件。

php

PHP语言的命令行接口

补充说明

php命令 是流行的Web开发语言PHP的命令行接口,可以使用PHP语言开发基于命令行的系统管理脚本程序。

语法

1
php(选项)(参数)

选项

1
2
-a:进入交互模式;
-c:指定“php.ini”的搜索路径。

参数

文件:要执行的php脚本。

pgrep

设置用户的认证信息,包括用户密码、密码过期时间等

补充说明

pgrep命令 以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

语法

1
pgrep(选项)(参数)

选项

1
2
3
4
5
6
7
-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID。

参数

进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
pgrep -lo httpd
4557 httpd
[root@localhost ~]# pgrep -ln httpd
4566 httpd

[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd

[root@localhost ~]# pgrep httpd 4557
4560
4561
4562
4563
4564
4565
4566

pfctl

PF防火墙的配置命令

补充说明

pfctl命令 是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。

PF防火墙的功能很多,本站只列举一些基本配置。

激活

要激活pf并且使它在启动时调用配置文件,编辑/etc/rc.conf文件,修改配置pf的一行:

1
pf=yes

重启操作系统让配置生效。

也可以通过pfctl程序启动和停止pf:

1
2
# pfctl -e
# pfctl -d

注意这仅仅是启动和关闭PF,实际它不会载入规则集,规则集要么在系统启动时载入,要在PF启动后通过命令单独载入。

配置

系统引导到在rc脚本文件运行PF时PF从/etc/pf.conf文件载入配置规则。注意当/etc/pf.conf文件是默认配置文件,在系统调用rc脚本文件时,它仅仅是作为文本文件由pfctl装入并解释和插入pf的。对于一些应用来说,其他的规则集可以在系统引导后由其他文件载入。对于一些设计的非常好的unix程序,PF提供了足够的灵活性。

pf.conf文件有7个部分:

  1. 宏:用户定义的变量,包括IP地址,接口名称等等。
  2. 表:一种用来保存IP地址列表的结构。
  3. 选项:控制PF如何工作的变量。
  4. 整形:重新处理数据包,进行正常化和碎片整理。
  5. 排队:提供带宽控制和数据包优先级控制。
  6. 转换:控制网络地址转换和数据包重定向。
  7. 过滤规则:在数据包通过接口时允许进行选择性的过滤和阻止。

除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。

空行会被忽略,以#开头的行被认为是注释。

控制

引导之后,PF可以通过pfctl程序进行操作,以下是一些例子:

1
2
3
4
5
6
7
8
9
10
# pfctl -f /etc/pf.conf  载入 pf.conf 文件
# pfctl -nf /etc/pf.conf 解析文件,但不载入
# pfctl -Nf /etc/pf.conf 只载入文件中的NAT规则
# pfctl -Rf /etc/pf.conf 只载入文件中的过滤规则

# pfctl -sn 显示当前的NAT规则
# pfctl -sr 显示当前的过滤规则
# pfctl -ss 显示当前的状态表
# pfctl -si 显示过滤状态和计数
# pfctl -sa 显示任何可显示的

完整的命令列表,请参阅pfctl的man手册页。