paste命令用于将多个文件按照列队列进行合并
paste (选项) 指定需要合并的文件列表
-d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;
-s或--serial串列进行而非平行处理。
paste inotify_client_100.log inotify_server_100.10g
paste inotify_client_100.log inotify_server_100.10g > inotify_100.log
split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
split (选项) 文件名
-b:值为每一输出档案的大小,单位为byte。
-C:每一输出档中,单行的最大 byte数。
-d:使用数字作为后缀。
-a length:来指定后缀的长度
-l:值为每一输出档的列数大小。
split -b 10k date.file
split -b 10k date.file -d -a 3
split -b 10k date.file -d -a 3 split_file
split -l 10 date.file
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
uniq命令只是去掉连续出现的重复记录,如查不连接的重复记录是不会排除的。
sort -u则可以去掉所有重复记录
uniq(选项)(参数)
-c或--count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或--unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
输入文件:指定要去除的重复行文件。如果不指定此项,则从标准读取数据;
输出文件:指定要去除重复行后的内容要写入的输出文件。如果不指定此选项,则将内容显示到标准输出设备(显
示终端)。
uniq file.txt
sort file.txt | uniq
sort -u file.txt
uniq -u file.txt
sort file.txt | uniq -u
sort file.txt | uniq -c
sort file.txt | uniq -d
a、样表a.log
cat a.log
aa
aa
bb
aa
b、uniq去重
uniq a.log
aa
bb
aa
c、sort -u去重
sort -u a.log
aa
bb
d、sort和uniq组合去重
sort a.log | uniq
aa
bb
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
sort (选项) 指定待排序的文件列表
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
-k:按指定列排序 +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。点号“。”表示连接的是字符,逗号“,”表示连接的是字段。
如:k3,3:表示从第3个字段开始排序,到第3个字段结束
k3,5:表示从第3个字段开始排序,到第5个字段结束
k4.1,4.3:表示从第4个字段的第1个字符开始排序,到第4个字段的第3个字符结束
cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
或者
uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
-n是按照数字大小排序
-r是以相反顺序
-k是指定需要爱排序的栏位
-t指定栏位分隔符为冒号
a、样表
cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1
b、将BB列按照数字从小到大顺序排列:
sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1
c、将CC列数字从大到小顺序排列:
sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC
a、样表
cat sort.txt
192.168.3.1
192.168.3.2
192.168.3.3
192.168.2.20
192.168.2.21
192.168.2.22
192.168.0.151
192.168.0.152
192.168.0.153
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.1
192.168.2.2
192.168.3.3
192.168.1.21
192.168.2.22
192.168.0.151
b、解答
sort -t "." -n -k3 -k4.1,4.3 sort.txt
sort -t "." -n -k3 -k4,4.3 sort.txt
rename命令用字符串替换的方式批量改变文件名。
rename from to file
from:原字符串,将文件名需要替换的字符串。也就是要改的内容
to:目标字符串,将文件名中含有的原字符替换成目标字符串。也就是改为什么
file:文件,指定要改变文件名的文件列表。也就是要改的文件
rename支持正则表达式和通配符:
? 可替代单个字符
* 可替代多个字符
[charset] 可替代charset集中的任意单个字符
rename main1.c main.c main1.c
rename foo foo0 foo?
rename foo foo0 foo??
rename foo foo0 foo*。
rename foo0 foo foo0[2]*
rename s/AA/aa/ *
rename s//.html//./ *
rename s/$//.txt/ *
rename s//.txt// *
zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
zip (选项) 指定要创建的zip压缩包 指定要压缩的文件列表
-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-D:压缩文件内不建立目录名称;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h:在线帮助;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF+CR字符;
-ll:压缩文件时,把LF+cp字符置换成LF字符;
-L:显示版权信息;
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-T:检查备份文件内的每个文件是否正确无误;
-u:更换较新的文件到压缩文件内;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z:替压缩文件加上注释;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>:压缩效率是一个介于1~9的数值。
zip -q -r html.zip /home/Blinux/html或zip -q -r html.zip html
zip -q -r html.zip *
用于解压缩由zip命令压缩的“.zip”压缩包
unzip (选项) 指定要解压的“.zip”压缩包
-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f:更新现有的文件;
-l:显示压缩文件内所包含的文件;
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t:检查压缩文件是否正确;
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v:执行时显示详细的信息;
-z:仅显示压缩文件的备注文字;
-a:对文本文件进行必要的字符转换;
-b:不要对文本文件进行字符转换;
-C:压缩文件中的文件名称区分大小写;
-j:不处理压缩文件中原有的目录路径;
-L:将压缩文件中的全部文件名改为小写;
-M:将输出结果送到more程序处理;
-n:解压缩时不要覆盖原有的文件;
-o:不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码>:使用zip的密码选项;
-q:执行时不显示任何信息;
-s:将文件名中的空白字符转换为底线字符;
-V:保留VMS的文件版本信息;
-X:解压缩时同时回存文件原来的UID/GID;
-d<目录>:指定文件解压缩后所要存储的目录;
-x<文件>:指定不要处理.zip压缩文件中的哪些文件;
-Z:unzip-Z等于执行zipinfo指令;
unzip test.zip
unzip -n test.zip -d /tmp
unzip -v test.zip
unzip -o test.zip -d tmp/
kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。
kill (选项) 进程号
-a:当处理当前进程时,不限制命令名和进程号的对应关系
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s <信息名称或编号>:指定要送出的信息
-u:指定用户。
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14)SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18)SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22)SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26)SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36)SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40)SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44)SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56)SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60)SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \\)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反,fg/bg)
STOP 19 暂停(同 Ctrl + Z)
kill 11234
kill -9 11234
ps –ef | grep php-fpm | awk ‘{print $2}‘ | xargs kill
killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
killall (选项) 进程名称
-e:对长名称进行精确匹配
-l:忽略大小写的不同
-p:杀死进程所属的进程组
-i:交互式杀死进程,杀死进程前需要进行确认
-l:打印所有已知信号列表
-q:如果没有进程被杀死。则不输出任何信息
-r:使用正规表达式匹配要杀死的进程名称
-s:用指定的进程号代替默认信号“SIGTERM”
-u:杀死指定用户的进程。
killall php-fpm
可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。
pkill (选项) 进程名称
-o:仅向找到的最小(起始)进程号发送信号
-n:仅向找到的最大(结束)进程号发送信号
-P:指定父进程号发送信号
-g:指定进程组
-t:指定开启进程的终端。
pkill php-fpm
ulimit命令用来限制系统用户对shell资源的访问。实际应用的环境各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。 ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。 作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。
ulimit (选项)
-a:显示目前资源限制的设定
-c :设定core文件的最大值,单位为区块
-d <数据节区大小>:程序数据节区的最大值,单位为KB
-f <文件大小>:shell所能建立的最大文件,单位为区块
-H:设定资源的硬性限制,也就是管理员所设下的限制
-m <内存大小>:指定可使用内存的上限,单位为KB
-n <文件数目>:指定同一时间最多可开启的文件数
-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节
-s <堆叠大小>:指定堆叠的上限,单位为KB
-S:设定资源的弹性限制
-t :指定CPU使用时间的上限,单位为秒
-u <程序数目>:用户最多可开启的程序数目
-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB
ulimit -a
core file size (blocks, -c) 0 #core文件的最大值为100 blocks。
data seg size (kbytes, -d) unlimited #进程的数据段可以任意大。
scheduling priority (-e) 0
file size (blocks, -f) unlimited #文件可以任意大。
pending signals (-i) 98304 #最多有98304个待处理的信号。
max locked memory (kbytes, -l) 32 #一个任务锁住的物理内存的最大值为32KB。
max memory size (kbytes, -m) unlimited #一个任务的常驻物理内存的最大值。
open files (-n) 1024 #一个任务最多可以同时打开1024的文件。
pipe size (512bytes, -p) 8 #管道的最大空间为4096字节。
POSIX message queues (bytes, -q) 819200 #POSIX的消息队列的最大值为819200字节。
real-time priority (-r) 0
stack size (kbytes, -s) 10240 #进程的栈的最大值为10240字节。
cpu time (seconds, -t) unlimited #进程使用的CPU时间。
max user processes (-u) 98304 #当前用户同时打开的进程(包括线程)的最大个数为98304。
virtual memory (kbytes, -v) unlimited #没有限制进程的最大地址空间。
file locks (-x) unlimited #所能锁住的文件的最大个数没有限制
ulimit -SHn 65535
dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。
dirname(选项)(参数)
--help:显示帮助;
--version:显示版本号。
dirname //
结果为 /
dirname /a/b/
结果为:/a
dirname a
结果为 .
dirname a/b
结果为路径名 a
basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
dirname(选项)(参数)
--help:显示帮助;
--version:显示版本号。
文件:带路径信息的文件;
后缀:可选参数,指定要去除的文件后缀字符串。
basename /home/jim/program.c
结果:program.c
iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
iptables(选项)(参数)
-t表:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-I:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j目标:指定要跳转的目标;
-i网络接口:指定数据包进入本机的网络接口;
-o网络接口:指定数据包要离开本机所使用的网络接口。
iptables -t 表名-A/I/D/R 规则链名 [规则号] -i/o 网卡名 -p 协议名 -s 源IP/源子网 --sport 源端口-d 目标IP/目标子网 --dport 目标端口 -j 动作
表名包括:
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。
规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。
动作包括:
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段从123.45.6.1到123.45.6.254的命令
iptables -L -n -v
iptables -L -n --line-numbers
iptables -D INPUT 8
test命令是shell环境中测试条件表达式的实用工具
test (选项)
-b<文件>:如果文件为一个块特殊文件,则为真;
-c<文件>:如果文件为一个字符特殊文件,则为真;
-d<文件>:如果文件为一个目录,则为真;
-e<文件>:如果文件存在,则为真; 广义的文件,目录也算文件
-f<文件>:如果文件为一个普通文件,则为真;
-g<文件>:如果设置了文件的SGID位,则为真;
-G<文件>:如果文件存在且归该组所有,则为真;
-k<文件>:如果设置了文件的粘着位,则为真;
-O<文件>:如果文件存在并且归该用户所有,则为真;
-p<文件>:如果文件为一个命名管道,则为真;
-r<文件>:如果文件可读,则为真;
-s<文件>:如果文件的长度不为零,则为真;
-S<文件>:如果文件为一个套接字特殊文件,则为真;
-u<文件>:如果设置了文件的SUID位,则为真;
-w<文件>:如果文件可写,则为真;
-x<文件>:如果文件可执行,则为真。
if test #表达式为真
if test ! #表达式为假
test 表达式1 -a 表达式2 #and,两个表达式都为真
test 表达式1 -o 表达式2 #or,两个表达式有一个为真
test 表达式1 ! 表达式2 #not,条件求反
test -n 字符串 #字符串的长度非零
test -z 字符串 #字符串的长度是否为零
test 字符串1=字符串2 #字符串是否相等,若相等返回true
test 字符串1!=字符串2 #字符串是否不等,若不等反悔false
test 整数1 -eq 整数2 #整数相等
test 整数1 -ge 整数2 #整数1大于等于整数2
test 整数1 -gt 整数2 #整数1大于整数2
test 整数1 -le 整数2 #整数1小于等于整数2
test 整数1 -lt 整数2 #整数1小于整数2
test 整数1 -ne 整数2 #整数1不等于整数2
test File1 -ef File2 两个文件是否为同一个文件,可用于硬连接。主要判断两个文件是否指向同一个inode。
test File1 -nt File2 判断文件1是否比文件2新
test File1 -ot File2 判断文件1比是否文件2旧
test -b File #文件是否块设备文件
test -c File #文件并且是字符设备文件
test -d File #文件并且是目录
test -e File #文件是否存在 (常用)
test -f File #文件是否为正规文件 (常用)
test -g File #文件是否是设置了组id
test -G File #文件属于的有效组ID
test -h File #文件是否是一个符号链接(同-L)
test -k File #文件是否设置了Sticky bit位
test -b File #文件存在并且是块设备文件
test -L File #文件是否是一个符号链接(同-h)
test -o File #文件的属于有效用户ID
test -p File #文件是一个命名管道
test -r File #文件是否可读
test -s File #文件是否是非空白文件
test -t FD #文件描述符是在一个终端打开的
test -u File #文件存在并且设置了它的set-user-id位
test -w File #文件是否存在并可写
test -x File #文件属否存在并可执行
原文:http://4758321.blog.51cto.com/4748321/1952117