pkill
可以按照进程名杀死进程
补充说明
pkill命令 可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。
语法
pkill(选项)(参数)
选项
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端。
参数
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。
实例
pgrep -l gaim
2979 gaim
pkill gaim
也就是说:kill对应的是PID,pkill对应的是command。
pmap
报告进程的内存映射关系
补充说明
pmap命令 用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。
语法
pmap(选项)(参数)
选项
-x:显示扩展格式;
-d:显示设备格式;
-q:不显示头尾行;
-V:显示指定版本。
参数
进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。
实例
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
popd
从目录堆栈中删除目录。
概要
popd [-n] [+N | -N]
主要用途
-
从目录堆栈中删除目录,如果是顶部目录被删除,那么当前工作目录会切换到新的顶部目录。
-
没有参数时,删除目录堆栈顶部。
选项
-n 抑制删除目录引起的当前工作目录变化。
参数
+N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将被删除。(从0开始计数)
-N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将被删除。(从0开始计数)
返回值
返回成功除非提供了非法选项或执行出现错误。
例子
# 添加目录到堆栈,当前工作目录不变。
[user2@pc ~]$ dirs
~
[user2@pc ~]$ pushd -n ~/Desktop
~ ~/Desktop
[user2@pc ~]$ pushd -n ~/Pictures
~ ~/Pictures ~/Desktop
[user2@pc ~]$ pushd -n ~/bin
~ ~/bin ~/Pictures ~/Desktop
# 从目录堆栈中删除目录,删除顶部目录时会改变当前工作目录:
[user2@pc ~]$ popd -2
~ ~/Pictures ~/Desktop
[user2@pc ~]$ popd +1
~ ~/Desktop
[user2@pc ~]$ popd
~/Desktop
[user2@pc Desktop]$
# 从目录堆栈中删除目录,删除顶部目录时不会改变当前工作目录:
[user2@pc ~]$ dirs
~
[user2@pc ~]$ pushd -n ~/Desktop
~ ~/Desktop
[user2@pc ~]$ popd -n
~
[user2@pc ~]$
注意
bash的目录堆栈命令包括dirs popd pushd。- 当前目录始终是目录堆栈的顶部。
- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
参考链接
poweroff
关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中
补充说明
grename命令 可以重命名卷组的名称。
语法
poweroff [选项]
选项
-n 关闭之前不同步
-p 当被称为halt时关闭电源
-v 增加输出,包括消息
-q 降低输出错误唯一的消息
-w 并不实际关闭系统,只是写入/var/log/wtmp文件中
-f 强制关机,不调用shutdown
例子
关闭Linux系统。
[root@localhost ~]# poweroff
ppp-off
关闭ppp连线
补充说明
这是Slackware发行版内附的程序,让用户切断PPP的网络连线。
语法
ppp-off
pr
将文本文件转换成适合打印的格式
补充说明
pr命令 用来将文本文件转换成适合打印的格式,它可以把较大的文件分割成多个页面进行打印,并为每个页面添加标题。
语法
pr(选项)(参数)
选项
-e<制表符[宽度]>(--expand-tabs=<制表符[宽度]>):将制表符(或制表符)转换为空格.如果指定了宽度,则将制表符转换为宽度字符,默认为8;
-h<标题>:为页指定标题;
-i<out-tab-char[out-tab-width>(--output-tabs<out-tab-char[out-tab-width]>):在输出中用制表符替换空格,可以指定替代制表符(默认为制表符)和宽度(默认为8);
-l<行数>:指定每页的行数;
-n<分隔符[数字]>:对列进行编号,或者使用 -m 选项对行进行编号,将分隔符附加到每个数字默认为制表符并限制数字的大小,默认为5;
-o<宽度>:为左边距设置宽度;
-s<分隔符>(--separator<分隔符>):使用指定的分隔符(默认为制表符)而不是空格分隔列;
-S<字符串>(--sep-string<字符串>):使用指定的字符串(默认为-J的制表符)或者是一个空格分隔列;
-w<页面宽度>:设置页面宽度以进行多列输出,默认为72;
-W<页面宽度>:设置页面宽度为固定值,默认为72;
-J(--join-lines):合并整行,忽略 -W 如果设置;
-num_cols:num_cols是一个整数,为一页有n行的文件打印指定num_cols列;
-m(--merge):打印所有文件,每列一个文件。
-f(-F)(--form-feed):用换页符替代换行符;
-r(--no-file-warnings):无法打开输入文件时静默;
-t:限制页眉,页脚与页尾的填充;
-T(--omit-pagination):类似于-t,但也限制换页;
-v(--show-non-printing):将不可打印的字符转换为八进制反斜杠格式;
-d:双倍行距;
-a(--across):交错打印,即水平打印,而非纵向打印;
-c(--show-control-chars):将控制字符转换为帽子符号(例如 ^C),将其他不可打印的字符转换为八进制反斜杠格式;
--help:打印帮助信息并退出;
--version:打印版本信息并退出.
参数
文件:需要转换格式的文件。
printf
格式化并输出结果。
目录
内建命令
概要
printf [-v var] format [arguments]
主要用途
- 格式化参数并输出。
选项
-v var:将结果输出到变量var中而不是输出到标准输出。
参数
format:输出格式。
arguments:一到多个参数。
转义序列:除了支持printf(1)和printf(3)的转义序列,内建printf还支持以下转义序列:
%b 展开参数中的反斜杠转义字符。
%q 将参数扩起以用作shell输入。
%(fmt)T 根据strftime(3)中的转义字符来输出日期时间字符串。
返回值
返回状态为成功除非给出了非法选项、写错误、赋值错误。
例子
# %-5s 格式为左对齐且宽度为5的字符串代替('-'表示左对齐),不使用则默认右对齐。
# %-4.2f 格式为左对齐宽度为4,保留两位小数。
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
# 输出
NO Name Mark
01 Tom 90.35
02 Jack 89.23
03 Jeff 98.43
# %b %q %(fmt)T 的例子。
# see it again with a newline.
printf "%s\n" 'hello world'
# 展开换行符,和上面的结果一样。
printf "%b" 'hello world\n'
printf '%q\n' 'a b c'
# 输出
a\ b\ c
# %z为时区,%n为换行符。
printf "%(%F %T %z%n)T"
# 输出
2019-09-10 01:48:07 +0000
注意
- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
外部命令
概要
printf FORMAT [ARGUMENT]...
printf OPTION
主要用途
- 格式化参数并输出。
选项
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
参数
format:输出格式。
protoize
GNU-C代码转换为ANSI-C代码
补充说明
protoize命令 属于gcc套件,用于为C语言源代码文件添加函数原型,将GNU-C代码转换为ANSI-C代码。
语法
protoize(选项)(参数)
选项
-d:设置需要转换代码的目录;
-x:转换代码时排除的文件。
参数
文件:需要转换代码的C语言源文件。
ps
报告当前系统的进程状态
补充说明
ps命令 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
语法
ps(选项)
选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"S"选项相同。
--deselect:此选项的效果和指定"-N"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-G"选项相同。
--Group<群组识别码>:此选项的效果和指定"-G"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-U"选项相同。
--User<用户识别码>:此选项的效果和指定"-U"选项相同。
--version:此选项的效果和指定"-V"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
由于ps命令能够支持的系统类型相当的多,所以选项多的离谱!
pssh
批量管理执行
补充说明
pssh命令 是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问。
安装pssh
在CentOS系统环境下,介绍yum的安装和源码安装的方式:
yum方法
yum install pssh
编译安装
wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
tar xf pssh-2.3.1.tar.gz
cd pssh-2.3.1/
python setup.py install
选项
--version:查看版本
--help:查看帮助,即此信息
-h:主机文件列表,内容格式”[user@]host[:port]”
-H:主机字符串,内容格式”[user@]host[:port]”
-:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-v:详细模式
-A:手动输入密码模式
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x
-i:每个服务器内部处理信息输出
-P:打印出服务器返回信息
实例
获取每台服务器的uptime:
# pssh -h ip.txt -i uptime
[1] 11:15:03 [SUCCESS] Mar.mars.he
11:15:11 up 4 days, 16:25, 1 user, load average: 0.00, 0.00, 0.00
[2] 11:15:03 [SUCCESS] Jan.mars.he
11:15:12 up 3 days, 23:26, 0 users, load average: 0.00, 0.00, 0.00
[3] 11:15:03 [SUCCESS] Feb.mars.he
11:15:12 up 4 days, 16:26, 2 users, load average: 0.08, 0.02, 0.01
查看每台服务器上mysql复制IO/SQL线程运行状态信息: