linux 常用命令

目录

我经常使用的命令 

查看大日志命令

1.vim

2.tail

3.less

4.grep

5.tail和less结合

6.切割文件  

7.定位行数

总结

 

Linux查看内存

1.du

2.df

3.free

4.top

top [-] [d] [p] [q] [c] [C] [S] [s]  [n]

5.iostat -x 1


我经常使用的命令 

过滤多个文件关键字    find crawler.log crawler.log.1 crawler.log.2 |xargs grep -ri "content_206252.html"

查看使用过的命令   history

查找服务对应的进程  ps -ef | grep nginx    (查找ngnix相关进程) 

 

查看大日志命令

1.vim

如果文件比较小的话,使用 vim 直接查看,如果文件比较大的话,使用 Vim 会直接卡主。


2.tail

如果想要查看正在滚动的日志文件。这个命令可以查看大文件。

tail -f file 

Ctrl + c 终止 tail 命令
Ctrl + s 暂停 tail 命令
Ctrl + q 继续 tail 命令

3.less

如果文件比较大的话,也可以使用 less 命令

less file 

但是使用上述命令的坏处是,默认打开的位置在第一行,并且当切换到实时滚动模式(按 F ,实现效果类似 tail -f 效果 )或者想要滚动到最底部的时候(按 G ),会卡在计算行数一段时间。如果卡的时间比较长的话,可以直接按 Ctrl + c ,取消计算行数。
我更推荐打开文件的时候使用 -n :不计算行号(打开大文件的时候很有用)。

    less  -n file 
    less  +G -n   file  // 打开文件的时候,直接定位到文件的最底部,默认情况下是在首行。
    less +F -n    file  // 打开文件的时候,使用实时滚动模式,Ctrl + c  退出实时滚动模式,按 F 切回实时滚动模式
    less +1000g  -n  file  // 直接定位到第 1000 行,一般你提前通过 grep 命令,定位到行数后,再使用这个命令
    less +50p   -n  file  // 直接定位到 50% 的位置
    less +50P   -n  file  // 直接定位到第 100 字节的位置。这个命令感觉不怎么使用。
    

不使用 -n 的坏处是:当你使用 = 的时候,会计算出当前光标所在的位置,但是务必记得,大文件计算行数会阻塞一段时间。例如执行下列命令:

    less copy.log

然后按下 = 

less 命令打开文件后,按下 = ,因为文件比较大,卡了我 20 几秒。

显示内容为: 文件名 copy.log , 当前屏幕显示1-24行/该文件一共有430000070行 , 从第一行到当前位置一共有 144 byte/该文件一共有2580000418 byte , 当前位置在文件的 0% 处。

如果使用 -n,输入以下命令 :

    less -n copy.log
    

然后按下 = ,执行就非常快了   

当然如果文件比较小,你想在使用 less 打开文件,并显示文件行数的话,可以使用 :

    less -N file

4.grep

如果你已经知道日志输出的关键字的话,使用 grep , 通常需要打印关键字前后的日志。

    grep 'key word' log.txt -A 20 // 列出包括匹配行之后 20 的行。
    grep 'key word' log.txt -B 20 // 列出包括匹配行之前 20 的行。
    grep 'key word' log.txt -C 20 // 列出包括匹配行前后各 20 行。
    

大文件的话,grep 出来的数据比较多的话,你可以和 less 一起使用

    grep  `world` copy.log | less

5.tail和less结合

有时候需要将 tail 和 less 命令结合起来使用

    tail -n +10000 | less // 从第 10000 开始,使用 less 查看。
    tail  -n 10000 | less // 查看倒数第 1000 行到文件最后的数据。 

6.切割文件  


有时候想把一个大文件进行分割成多个小文件.(我个人是不建议这么做的,因为我发现 split 的时候,也是蛮耗时的,但是这里仍然提供一种解决方法吧)  
按文件大小分割:

    split -b 600m copy.log
    

分割后的文件默认是以 x 开头,例如我上述命令分割后文件为:

    $ ls -lht x*  // 这里 * 是通配符,即列出以 x 开头的文件。
    -rw-rw-r-- 1 apple apple  61M 6月  22 15:02 xae
    -rw-rw-r-- 1 apple apple 600M 6月  22 15:02 xad
    -rw-rw-r-- 1 apple apple 600M 6月  22 15:02 xac
    -rw-rw-r-- 1 apple apple 600M 6月  22 15:02 xab
    -rw-rw-r-- 1 apple apple 600M 6月  22 15:02 xaa
    

当然你可以按行数分割,具体的命令格式如下 :

    split [选项]... [要切割的文件] [输出文件前缀]  // 输出文件前缀为可选项
    

命令参数

说明

\-a, --suffix-length=N

使用长度为 N 的后缀 (默认 2)

\-b, --bytes=SIZE

设置输出文件的大小。支持单位:m,k

\-C, --line-bytes=SIZE

设置输出文件的最大行数。与 -b 类似,但会尽量维持每行的完整性

\-d, --numeric-suffixes

使用数字后缀代替字母

\-l, --lines=NUMBER

设备输出文件的行数

–help

显示版本信息

–version

输出版本信息

7.定位行数

如果你已经知道需要的内容在第几行,但是想要显示指定行数之前或者之后的行。例如你想显示 499999900 到 500000000 这100 行的内容。 推荐使用这个方法

    head -500000000 file | tail  -100
    

其中 head -500000000 : 显示文件的前 500000000 行。  
tail -100 :显示最后 100行。  
两者结合起来就是在前 500000000 行中显示后 100 行,即显示 499999900 到 500000000 这100 行的内容。

或者使用 sed 命令:

    sed -n '500000000q;499999900,500000000p'  file
    

其中 -n 与 p : 表示只打印符合条件的行。  
500000000q; : 表示当执行到第 500000000 行的时候停止执行。 如果不使用 500000000q; sed 默认会浏览整个文件。  
499999900,500000000 : 表示499999900 到 500000000 行。其中 , 逗号表示范围。  
整体结合起来就是打印 499999900 到 500000000 行,但是执行到第 500000000 行就不要再执行了。

或者使用 awk 命令

    awk 'NR>=49999991 && NR<=50000000{print} NR==50000001{exit}' file
    

最后我发现三者的执行效率(copy.log 是一个大小为 2.5 G 的测试文件):

    time (head -500000000  copy.log  | tail -100) > /dev/null
    real    0m9.456s
    user    0m8.854s
    sys    0m3.501s
    
    time (sed -n '500000000q;499999900,500000000p' copy.log) > /dev/null
    real    0m25.968s
    user    0m25.111s
    sys    0m0.833s
    
    time (awk 'NR>=499999900&& NR<=500000000{print} NR==500000001{exit}' copy.log) > /dev/null
    real    1m4.743s
    user    1m3.824s
    sys    0m0.906s


总结

与其说是查看大日志文件的方法,不如说是将 grep/awk/sed/head/less/tail 多个命令结合起来的方法。

其实最重要的不是怎么看大文件,还是在程序运行时候,就要对日志文件进行归档整理,例如,每天一次归档,或者每满 500M 就归档。  
当然大公司会用例如 ELK 之类的日志处理系统。

 

Linux查看内存

1.du

显示每个文件和目录的磁盘使用空间

常用:

    du -s -h 目录路径

  目录少的时候用:

    du -h 目录路径

 

命令参数

  -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

  -s或--summarize  仅显示总计,只列出最后加总的值。

  -h或--human-readable  以K,M,G为单位,提高信息的可读性。

 

2.df

常用:

  df -h

显示指定磁盘文件的可用空间

  -a 全部文件系统列表

  -h 方便阅读方式显示

  -i 显示inode信息

  -T 文件系统类型

 

3.free

常用:

  free -h

内存使用情况 

 

Mem:表示物理内存统计

total:表示物理内存总量(total = used + free)

used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。

free:未被分配的内存。shared:共享内存。

buffers:系统分配但未被使用的buffers 数量。cached:系统分配但未被使用的cache 数量。

 

-/+ buffers/cache:表示物理内存的缓存统计

used2:也就是第一行中的used – buffers-cached 也是实际使用的内存总量。 //used2为第二行

free2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行

free2:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。

Swap:表示硬盘上交换分区的使用情况

4.top

执行: top 即可

top [-] [d] [p] [q] [c] [C] [S] [s]  [n]

参数说明:

  d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 
  p 通过指定监控进程ID来仅仅监控某个进程的状态。 
  q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 
  S 指定累计模式 
  s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 
  i 使top不显示任何闲置或者僵死进程。 

  c 显示整个命令行而不只是显示命令名 

其他实用命令:

下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。

  Ctrl+L 擦除并且重写屏幕。 
  h或者? 显示帮助画面,给出一些简短的命令总结说明。 
  k       终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 
  i 忽略闲置和僵死进程。这是一个开关式命令。 
  q 退出程序。 
  r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 
  S 切换到累计模式。 
  s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。 
  f或者F 从当前显示中添加或者删除项目。 
  o或者O 改变显示项目的顺序。 
  l 切换显示平均负载和启动时间信息。 
  m 切换显示内存信息。 
  t 切换显示进程和CPU状态信息。 
  c 切换显示命令名称和完整命令行。 
  M 根据驻留内存大小进行排序。 
  P 根据CPU使用百分比大小进行排序。 
  T 根据时间/累计时间进行排序。 

  W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

 

附常用操作:

  top   //每隔5秒显式所有进程的资源占用情况
  top -d 2  //每隔2秒显式所有进程的资源占用情况
  top -c  //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
  top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
  top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

 

* 按下大写M按照memory排序,按下大写P按照CPU排序。

详细看这里:https://www.cnblogs.com/ftl1012/p/top.html

 

5.iostat -x 1

 查看磁盘IO使用情况:

  iostat -x 1 (1秒刷新一次)最右侧%util很高时,表示IO就很高了,若想看哪个进程占用IO,执行iotop命令查看

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值