Linux - CentOS 常用命令 (持续更新)

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

你可能感兴趣的:(linux,命令,centos)