Linux启动过程
#
#BIOS自检 --- > 启动GRUB/LILO --- > 加载内核 --- > 执行init进程 --- > inittab 文件初始化
#
--------------------------------------------------------------------------------------------------
CentOs 7 修改主机名
hostnamectl --static set-hostname <host-name>
--------------------------------------------------------------------------------------------------
查看cpu信息:
# cat /proc/cpuinfo | grep "model name" 或者 # grep "CPU" /proc/cpuinfo
# getconf LONG_BIT 这个是查看 CPU 位数的。
--------------------------------------------------------------------------------------------------
查看内存:
# cat /proc/meminfo 查看某值 可以用 grep 来查询。
--------------------------------------------------------------------------------------------------
查看Linux 版本:
# cat /etc/redhat-release
--------------------------------------------------------------------------------------------------
查看内核 版本:
# uname -a
--------------------------------------------------------------------------------------------------
查看外网IP:
curl -s ifconfig.me
查看(修改)系统当前时间:
#date
#date -s 2010-09-07
#date -s 22:18:00
#clock -w ( 将系统时间写入 CMOS )
自动更新时间:
#ntpdate time.windows.com
修改设置时区
# timeconfig ( 在RedHat Linux 和 CentOS 可用 )
--------------------------------------------------------------------------------------------------
查看硬盘和分区:
#df -h
#fdisk -l
--------------------------------------------------------------------------------------------------
修改ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0
NETMASK=255.255.255.0
IPADDR=10.6.0.200
GATEWAY=10.6.0.1
--------------------------------------------------------------------------------------------------
查看系统安装了那些软件包
#rpm -qa
也可以查看某软件是否安装使用 grep 指令 例如:
#rpm -qa|grep gcc
--------------------------------------------------------------------------------------------------
查看selinux情况
#sestatus
--------------------------------------------------------------------------------------------------
查看ip,mac地址
#ifconfig -a
#cat /etc/resolv.conf 查看DNS
--------------------------------------------------------------------------------------------------
查看 系统中各个进程的资源占用状况
# top
--------------------------------------------------------------------------------------------------
查看路由表
#route -n
--------------------------------------------------------------------------------------------------
查看系统进程
#ps -ef
#ps -aux|grep mysql 使用 grep 指令查看mysql 进程
--------------------------------------------------------------------------------------------------
查看用户登陆系统日志
#last
--------------------------------------------------------------------------------------------------
查看当前用户的计划任务
#crontab -l
--------------------------------------------------------------------------------------------------
lsof 命令
sof指令的用法如下:
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c abc 显示abc进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof d /usr/local/ 显示目录下被进程开启的文件
lsof D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
-------------------------------------------------------------------------------------------------
yum 指令
yum update 更新系统已安装的软件包
yum upgrade 大规模版本升级。
yum install XXX 安装指定软件包
--------------------------------------------------------------------------------------------------
查找文件命令 find
find 命令用法:
find / -name XX
例如:
find / -name mysql.cnf
find /root/shell -type f -exec grep '12345678' -l {} \;
-type f :是文件类型.
-exec grep '12345678 ' : 文件内容为 12345678 的文件
grep -l :是显示匹配的内容的文件名字!
-------------------------------------------------------------------------------------------------
查看指定文件夹大小
du -sh XX
例如:
du -sh jicki/
-------------------------------------------------------------------------------------------------
Scp 指令:
scp 目标IP:目标文件 本地文件
例如:
scp 192.168.0.1:/data/jicki/jicki.tar.gz /home/jicki
-------------------------------------------------------------------------------------------------
wc 命令:
参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
-------------------------------------------------------------------------------------------------
虚拟内存统计
vmstat 命令:
#vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 92 2348112 527236 799000 0 0 5 47 13 4 3 1 95 0 0
Procs
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。
Memory
swpd: 虚拟内存使用情况,单位:KB free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB
Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒 so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi: 发送到块设备的块数,单位:块/秒 bo: 从块设备接收到的块数,单位:块/秒
System
in: 每秒的中断数,包括时钟中断 cs: 每秒的环境(上下文)切换次数
CPU 按 CPU 的总使用百分比来显示
us: CPU 使用时间 sy: CPU 系统使用时间 id: 闲置时间
--------------------------------------------------------------------------------------
iostat 命令用法
系统必须安装有 sysstat (可用 yum install sysstat 安装)
#iostat -x 1
avg-cpu: %user %nice %system %iowait %steal %idle
3.75 0.00 2.00 0.50 0.00 93.75
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 6.00 0.00 45.00 0.00 376.00 8.36 2.72 20.98 1.38 6.20
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 6.00 0.00 45.00 0.00 376.00 8.36 2.72 20.98 1.38 6.20
sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rrqm/s 每秒进行 merge 的读操作数目
wrqm/s 每秒进行 merge 的写操作数目
r/s 每秒完成读I/O 设备次数
w/s 每秒完成写I/O 设备次数
rsec/s 每秒读扇区数
wsec/s 每秒写扇区数
rkB/s 每秒读K字节数 是 resect/s 的一半,每个扇区为512字节
wkB/s 每秒写K字节数 是 wsect/s 的一半
avgrq-sz 平均每次设备I/O操作的数据大小
avgqu-sz 平均I/O队列长度
await 平均每次设备I/O操作的等待时间(毫秒)
svctm 平均每次设备I/O操作的服务时间(毫秒)
%util 一秒钟有百分之几的时间用于I/O操作。
(%util 越高表示I/O 请求越多 100% 说明磁盘被占满,超负荷。)
svctm 一般小于 await , svctm 的大小一般与磁盘性能有关,CPU 内存超负荷 或者 请求过多 也会对 svctm 值有影响。
await 的大小取决于 服务时间 (svctm)以及I/O 列队的长度和I/O请求的发出模式。 当 svctm 值 接近 await 说明 I/O 等待的时间比较小
反之 如果 svctm 值大于 await 很多 ,说明I/O 列队太多,应用的响应时间就会变慢。
查看网站用何种web服务器的命令:
curl --head 网站域名
例如 curl --head 7.qq.com
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 May 2011 12:45:25 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Sat, 28 May 2011 13:45:25 GMT
Cache-Control: max-age=3600
搜索 YUM 源 里的程序
yum search XXXX
修改密码 非交互模式
echo "password" | passwd username --stdin
-----------------------------------------------------------------------------------
grep 命令基本用法
-c选项: 表示输出匹配字符串行的数量,默认情况下,grep命令打印出包含模式的所有行,一旦加上-c选项,就只显示包含模式行的数量
例: grep -c 123456 *.txt 对当前目录下所有.txt的文件查找123456 关键字
-n选项: 列出所有的匹配行,并显示行号。默认情况下,grep搜索单个文件时,只显示每行的内容,搜索多个文件时,显示文件名及每行的内容,加上-n选项后,将在行内容前附加显示行号
例: grep -n 123456 *.txt 对当前目录下所有.txt 的文件查找 123456 关键字 并列出行号
-v选项: 显示不包含模式的所有行
例: grep -vc 123456 *.txt 使用-v 和-c 参数列出*.txt文件中不包含123456 关键字的行数
-i选项:表示grep命令不区分大小写
例: grep -i abdefg *.txt 搜索不区分大小写的abcdefg 字符串的所有行
-h选项:表示查询多文件时不显示文件名,默认情况下,grep命令查询多个文件时,在匹配行之前显示文件名,加上-h选项后,grep命令将不再显示文件名
例: grep -h 123456 *.txt 在当前目录下所有.txt的文件中查找123456字符串,加上-h后,结果就只显示匹配行的内容,而不显示文件名
-l选项:表示只列出符合匹配的文件名,而不列出具体匹配行
例: grep -l 123456 *.txt 搜索当前目录下所有的文件中包含123456字符串的文本行,加上-l选项后,在结果中不再显示具体的匹配行,只列出包含123456字符串的文件名
-s选项:表示不显示不存在或无匹配文本的错误信息
-r选项: 表示递归搜索,不仅搜索当前目录,而且搜索子目录.
例: grep -r 123456 * 对当前目录递归搜索123456 字符串,不仅列出当前目录下文件的搜索结果,还列出了子目录下文件包含123456 字符串的文本行
-w选项:表示匹配整词,即以模式的字面含义去解析它,元字符不再被解释为特殊含义。
例: grep -w 123456* *.txt 表示搜索包含123456*字符串的文本行
-x选项:表示匹配整行,即只有当文件中有整行内容与模式匹配时,才会输出结果。
例 grep -x 123456 *.txt 表示搜索文本整行都匹配为 123456 时,才会输出结果。
-q选项:grep将不再输出任何结果,而是以退出状态表示搜索是否成功,退出状态0 表示搜索成功,退出状态1 表示未搜索到满足模式的文本行,退出状态2表示命令或程序由于错误而未能执行。
例: grep -q 123456 *.txt #echo $? 当输入 echo $? 显示0 表示搜索成功 显示1 表示未搜索到结果 显示2 表示搜索出错。
(注: echo $? 命令用于输出上条命令的退出状态 )
-------------------------------------------------------------------------------------------------
cut 命令常用参数
-c 根据字符截取,用法:cut -c 1-5 filename 截取1~20之间的字符,字符从1开始记。
例: cat 1.txt = > BGIOSGA005099-TA
cut -c 1-5 1.txt = > BGIOS
-f 根据域截取,默认为tab分隔。cut -f m-n filename 表示显示第m栏到第n栏。
例:cat 1.txt = > BGIOSGA005099-TA TATA TBTB TCTC
cut -f 1,4 1.txt = > BGIOSGA005099-TA TCTC
cut -f 1-3 1.txt = > BGIOSGA005099-TA TATA TBTB
-d 定义域分隔符截取。默认为tab键。-f表示需要取得哪个字段。
例:cat 1.txt = > BGIOSGA005099-TA
cut -d '-' -f 1 1.txt = > BGIOSGA005099
cut -d '-' -f 2 1.txt = > TA
cut -d G -f 2 1.txt = > IOS
paste 命令常用参数
paste file1 file2 合并 文件1 文件2 默认以tab为分隔符。
例: cat 1.txt = > BGIOSGA005099-TA cat 2.txt = > BGIOSGA005099-TA
paste 1.txt 2.txt = > BGIOSGA005099-TA BGIOSGA005099-TA
-d参数可以自定义分隔符
例: cat 1.txt = > BGIOSGA005099-TA cat 2.txt = > BGIOSGA005099-TA
paste -d":" 1.txt 2.txt = > BGIOSGA005099-TA:BGIOSGA005099-TA
- 参数 加上 -d 参数。对每一个'-' ,从标准输入中读一次数据。在用-d 参数来进行分隔。-与- 之间空格隔开。
例: ls = > 1.txt 2.txt
ls |paste -d'+' - - = > 1.txt+2.txt
ls |paste -d'+' - - - = > 1.txt+2.txt+
awk 命令常用参数
1,模式匹配:
例:cat 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
awk '/0000/' 3.txt = >
hehe0000 rtyu9999
xixi9999 poiu0000
(寻找出3.txt中含有0000的行)
awk '$1~/0000/' 3.txt = > hehe0000 rtyu9999
(寻找出3.txt中含有0000的行$1~取第一个区域的行)
awk '$1~/0000/{print $1}' 3.txt = > hehe0000
awk '$1~/0000/{print $2}' 3.txt = > rtyu9999
(寻找出3.txt中含有0000的行$1~取第一个区域的行,{print $1} 打印第第一个区域。{print $2} 打印第二个区域)
2,对不同的域进行操作:
例: cat 4.txt = >
884 46 1 8 5 944
734 41 0 10 2 787
647 29 1 8 1 686
536 26 1 9 0 572
awk '{print NR,NF,$NF}' 4.txt = >
1 6 944
2 6 787
3 6 686
4 6 572
(NR 文件记录号,可理解为行数,NF 总区域个数,可理解为列数。$NF 最后一列的数。)
3,通过-F参数来改变域分隔符,FS设置输入分隔符,OFS设置输出分隔符,awk所有操作都支持管道。
例: cat 4.txt = >
884 46 1 8 5 944
734 41 0 10 2 787
647 29 1 8 1 686
536 26 1 9 0 572
cat 4.txt |awk '$6 >900' = > 884 46 1 8 5 944
(通过管道符获得输入,如:显示第6个域满足条件的行。)
awk 'BEGIN { FS="[: \t|]"}{print $1,$2,$3}' 4.txt 通过设置输入分隔符(FS="[: \t|]")修改输入分隔符。BEGIN 表示在处理任意行之前进行的操作。
awk 'BEGIN { OFS="+"} {print $1,$2,$3}' 4.txt = >
884+46+1
734+41+0
647+29+1
536+26+1
(通过设置输出分隔符(OFS="+")修改输出格式)
4,awk -f awkfile file 通过文件awkfile的内容依次进行控制。
例:cat awkfile = > /8888/{print "\047 Hello! \047"}
cat 5.txt = > 8888
9999
1000
awk -f awkfile 5.txt = > ' Hello! ' (\047 表示'号)
cat awkfile = > /8888/{print "\046 hello! \046"}
{print $1}
awk -f awkfile 5.txt = > & Hello! & (\046 表示&号 $1第一区域)
8888
9999
1000
5,awk 'BEGIN { max=100 ;print "max=" max} {max=($1 >max ?$1:max); print $1,"Now max is "max}' file 取文件第一个区域的最大值。
(man = 100 如果 $1 区域里的值 > 100 取$1 的值 print $ 打印 Now max is "max" 如果 $1 区域里的值 < 100 则 print max 打印 100 )
例:cat 4.txt = >
884 46 1 8 5 944
734 41 0 10 2 787
647 29 1 8 1 686
536 26 1 9 0 572
awk 'BEGIN { max=100 ;print "max=" max} {max=($1 >max ?$1:max); print $1,"Now max is "max}' 4.txt = >
max=100
884 Now max is 884
734 Now max is 884
647 Now max is 884
536 Now max is 884
6, awk '{$1 *= 3; print}' file
第一个区域 乘3 再打印出来。
例: cat 5.txt = >
8888
9999
1000
awk '{$1 *= 3; print}' 5.txt = >
26664
29997
3000
Sed 命令常用参数
Sed可使用;号分隔多条编辑命令,如:sed 's/111/222; s/333/444' 1.txt
使用s e d命令行格式为:
sed [选项] s e d命令 输入文件。
使用s e d脚本文件,格式为:
sed [选项] -f sed脚本文件 输入文件
sed -n '2p' 3.txt 打印单行
例: cat 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
sed -n '2p' 3.txt = > hehe0000 rtyu9999
sed -n '1,3p' 3.txt 打印范围
例: sed -n '1,3p' 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
sed -n '/9999/'p 3.txt 打印符合内容的行
例: sed -n '/9999/'p 3.txt = >
hehe0000 rtyu9999
xixi9999 poiu0000
sed -e 打印行号
例:cat 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
sed -e '/9999/'= 3.txt = >
hahah234 qwee8888
2
hehe0000 rtyu9999
3
xixi9999 poiu0000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
sed -n -e '/8888/=' -e '/8888/'p 3.txt
(先打印行号,再打印匹配行)
sed -n -e '/8888/=' -e '/8888/'p 3.txt = >
1
hahah234 qwee8888
5
intint8888 mnb44444
6
char88888 lkjh5555
sed 's/8888/hello/' 5.txt
(将8888替换成hello)
例: cat 5.txt = >
8888
9999
1000
sed 's/8888/hello/' 5.txt = >
hello
9999
1000
sed '1,2 w 6.txt' 5.txt (截取6.txt里的1,2行保存到 5.txt)
例: cat 5.txt = >
8888
9999
1000
sed '1,2 w 6.txt' 5.txt
cat 6.txt = >
8888
9999
sed '1 r 5.txt' 3.txt (将5.txt的内容合并到3.txt里面去,1 r 表示从
3.txt 第三行下面合并。)
例: cat 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
cat 5.txt = >
8888
9999
1000
sed '1 r 5.txt' 3.txt = >
hahah234 qwee8888
hehe0000 rtyu9999
xixi9999 poiu0000
8888
9999
1000
longlong999 zxcv2222
intint8888 mnb44444
char88888 lkjh5555
正则表达式
| 数据流 | --- | 正则表达式 | --- | 匹配的数据 |
|
|
|
|
| 过滤的数据 |
-------------------------------------------------
| 符号 | 意义 |
-------------------------------------------------
| * | 0个或多个在*字符之前的那个普通字符 |
-------------------------------------------------
| . | 匹配任意字符 |
-------------------------------------------------
| ^ | 匹配行首,或后面字符的非 |
-------------------------------------------------
| $ | 匹配行尾 |
-------------------------------------------------
| [] | 匹配字符集合 |
-------------------------------------------------
| \ | 转义符,屏蔽一个元字符的特殊意义 |
-------------------------------------------------
| \<\> | 精确匹配符号 |
-------------------------------------------------
| \{\n} | 匹配前面字符出现n次 |
-------------------------------------------------
| \{\n,\}| 匹配前面字符至少出现n次 |
-------------------------------------------------
|\{\n,m\}| 匹配前面字符至少出现n~m 次 |
-------------------------------------------------
一:
*符号的意义: 匹配0个或多个字符, 如: hel*o ,可匹配 helo hello
hellllo
二:
.符号的意义: 匹配任意一个字符, 如:.77. ,可匹配 8779 a77z .也可匹配一个空格 6 77 9 a 77 z 等。
三:
^符号的意义: 匹配行首是^字符后面的那个字符, 如:^123 ,既匹配行首的123
四:
$符号的意义: 匹配行尾$字符前面的那些字符,如:5667$ , 既匹配以5667结尾的任意行。 跟 ^ 字符意义相反。
^$ 符号的意义: 既匹配行首又匹配行尾,表示 空行 的意思。
^.$ 的意义: 表示只包含一个字符的行。
五:
[]符号的意义:匹配字符集合。如:[0-9],表示匹配任意一个数字。 [a-z],表示匹配任意小写字母。[A-Z],表示匹配任意大写字母。
[^]符号的意义: 表示取反。如:[^a-z],表示除了小写字母a-z以外的任意字符。
[^0-9],表示除了数字以外的任意字符。
六:
\符号的意义: 转义字符。屏蔽一个元字符的特殊意义。如:\. .是元字符,\. 则表示字面意义上的 . www\.51cto\.com
七:
\<\> 符号的意义:精确匹配符号。 如:\<51cto\> ,表示精确匹配51cto ,而不匹配包含51cto的字符。
八:
\{\} 符号的意义:系列符号。表示前一个字符的重复。有三种表达形式,分别是 \{n\} 匹配字符出现n次。
\{n,\} 匹配字符至少出现n次。
\{n,m\} 匹配字符出现n~m次。
如:51\{3\}cto 匹配:5111cto
如:51\{3,\}cto 匹配:5111cto 51111cto 5111111cto 511111111cto ...
如:51\{1,3\}cto 匹配:51cto 511cto 5111cto
[a-z]\{5\} :表示精确匹配5个小写字母
正则表达式的扩展元字符。
-------------------------------------------------
| 符号 | 意义 |
-------------------------------------------------
| ? | 匹配0个或1个在其之前的普通字符 |
-------------------------------------------------
| + | 匹配1个或多个在其之前的普通字符 |
-------------------------------------------------
| () | 表示一个字符集合或用在expr中 |
-------------------------------------------------
| | | 表示“或”,匹配一组可选的字符 |
-------------------------------------------------
51?cto 表示匹配1 字符0次或1次,既 51cto 511cto ?字符最多匹配1次。
51+cto 表示匹配1 字符最少1次,既511cto 5111cto 51111111cto 等.. +字符最少匹配一次。 与 * 不同,*最少可匹配0次。
5(1|2|3|4)cto (1|2|3|4) 表示在 1 2 3 4 中选择任一字符。既 51cto 52cto 53cto 54cto 都可匹配。
5(1|2|3|4)cto 也可用 5[1234]cto 表示.
posix字符的含义
为了保持不同国家编码的一致性,posix 增加了特殊的字符类。
-------------------------------------------------
| 符号 | 意义 |
-------------------------------------------------
| [:upper:] | 表示大写字母[A-Z] |
-------------------------------------------------
| [:lower:] | 表示小写字母[a-z] |
-------------------------------------------------
| [:idgit:] | 表示数字[0-9] |
-------------------------------------------------
| [:alnum:] |表示大小写字母跟数字[0-9 a-z A-Z]|
-------------------------------------------------
| [:space:] | 表示空格或者tab键 |
-------------------------------------------------
| [:plpha:] | 表示大小写字母[a-z A-Z] |
-------------------------------------------------
| [:cntrl:] | 表示Ctrl键 |
-------------------------------------------------
|[:graph:]或[:print:] | 表示ASCII码33-126之间的字符|
---------------------------------------------------
| [:xdigit:] | 表示16进制数字[0-9 A-F a-f] |
---------------------------------------------------
sort 命令
sort 将文件的每一行作为一个单位,互相比较,按首字符,依次按ASCII码 进行比较,最后按照升序输出。
例子:
cat 1.txt = >
apple
cark
banana
orange
pear
sort 1.txt = >
apple
banana
cark
orange
pear
sort -u 参数
-u 参数,将输出行中重复的去掉。
cat 2.txt = >
apple
cark
cark
banana
orange
orange
pear
sort 2.txt = >
apple
banana
cark
cark
orange
orange
pear
sort -u 2.txt
apple
banana
cark
orange
pear
sort -r 参数
-r 参数 将输出的方式按降序排列。
cat 3.txt = >
1
3
5
2
4
6
sort 3.txt = >
1
2
3
4
5
6
sort -r 3.txt = >
6
5
4
3
2
1
sort -o 参数
-o 将输出结果,输出到文件中
cat 4.txt = >
aaaa
bbbbb
ddddd
ccccc
eeeee
sort 4.txt -o 5.txt = >
cat 5.txt = >
aaaa
bbbbb
ccccc
ddddd
eeeee
sort -n 参数
-n 默认排序方式是按照数字字符来排序,所以10 与 2 比较的话 10会排在2前面 -n 的可以让排序方式变为 数值排序
cat 6.txt = >
1
2
10
15
6
9
sort 6.txt = >
1
10
15
2
6
9
sort -n 6.txt = >
1
2
6
9
10
15
sort -t 与 -k 参数
-t 以什么为分隔符 -k 可指定列数
cat 7.txt = >
aaaa:20
cccc:40
eeee:15
rrrr:19
oooo:30
sort -n -k 2 -t : 7.txt = >
eeee:15
rrrr:19
aaaa:20
oooo:30
cccc:40
其他的sort常用选项
-f 会将小写字母都转换为大写字母来进行比较,即忽略大小写
-c 会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C 会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M 会以月份来排序,比如JAN小于FEB等等
-b 会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
uniq 命令
这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进
行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。
该命令各选项含义如下:、
�Cc 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
�Cd 只显示重复行。
�Cu 只显示文件中不重复的各行。
�Cn 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编
号)。
+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
�Cfn 与-n相同,这里n是字段数。
�Csn 与+n相同,这里n是字符数。
例子:
cat 1.txt = >
apple
apple
apple
cark
cark
banana
banana
orange
orange
pear
pear
pear
pear
uniq 1.txt = > 不加参数,仅显示连续重复的行一次
apple
cark
banana
orange
pear
uniq -c 1.txt = > -c 参数 显示文件中每行连续出现的次数
3 apple
2 cark
2 banana
2 orange
4 pear
cat 1.txt |sort |uniq -c = > 使用管道加sort 命令 排序以后再删除重复
3 apple
2 banana
2 cark
2 orange
4 pear
cat 2.txt
apple
banana
banana
banana
cark
orange
orange
orange
pear
cark
apple
uniq -d 2.txt = > 只显示文件中连续重复出现的行
banana
orange
uniq -u 2.txt = > 显示文件中没有连续出现的行
apple
cark
pear
cark
apple
uniq -D 2.txt = > 显示所有重复的行,每个重复的行都显示
banana
banana
banana
orange
orange
orange
Crontab 定时任务
实例0:每1秒执行一次command
命令:
* * * * * sleep 1; command
实例1:每1分钟执行一次command
命令:
* * * * * command
实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb
命令:
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
命令:
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
命令:
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
命令:
* 23-7/1 * * * /etc/init.d/smb restart
实例13:每月的4号与每周一到周三的11点重启smb
命令:
0 11 4 * mon-wed /etc/init.d/smb restart
实例14:一月一号的4点重启smb
命令:
0 4 1 jan * /etc/init.d/smb restart
实例15:每小时执行/etc/cron.hourly目录内的脚本
命令:
01 * * * * root run-parts /etc/cron.hourly
找出访问次数最多的10个IP。
awk '{print $1}' access.log |sort |uniq -c|sort -nr|head -n 10
删除0字节文件
find -type f -size 0c | xargs rm -f
截取 13:30 - 13:50 的日志
sed '/13:30:00/,/13:50:00/!d' catalina.out >> 22222.txt