热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:对你无用请揍我系列必会Linux技巧

篇首语:本文由编程笔记#小编为大家整理,主要介绍了对你无用请揍我系列必会Linux技巧相关的知识,希望对你有一定的参考价值。前言

篇首语:本文由编程笔记#小编为大家整理,主要介绍了对你无用请揍我系列必会 Linux 技巧相关的知识,希望对你有一定的参考价值。



前言

本文非单纯网上介绍 Linux 命令及参数的雷同文章,而是真正在实际工作中能派上用场的 Linux 实用技巧。主要介绍日志排查相关的技巧,捎带常见的其他 Linux 操作以及 vim 技巧。


本文首发于个人博客:http://nullpointer.pw/linux-command.html



日志相关:

在日常工作中,经常需要在服务器上通过查看日志的方式来定位 bug 问题,掌握一定的日志排查技巧则是很有必要的。明明有些可以通过很基础的命令就可以实现,但网上有些人偏偏喜欢炫技,故作高深弄出一些特别复杂的用法来完成,其实真的没有那种必要。本文只讲最常用实用的用法。

笔者截取了一些日志作为示例,以供读者练习。

Tips: 命令中包含于双引号 " " 中的都是关键字

示例日志点我下载


静态日志查找



  1. 根据关键字查找日志

grep "1584345069121" info.log


  1. 根据关键字查找日志,并显示查找结果附近 5 行(前5行与后5行)日志

grep "1584345069121" info.log -C5
```
3. 根据关键字查找日志,并显示查找结果后 (After)5 行日志
```sh
grep "1584345069121" info.log -A5
```
4. 根据关键字查找日志,并显示查找结果前 (Before)5 行日志
```sh
grep "1584345069121" info.log -B5
```
5. 根据多个关键字查找日志,多个关键字为或关系,满足其中一个条件则匹配,关键字之间用`|`分隔,表示或
```sh
grep "1584345069121|1584345066236" info.log
```
6. 根据多个关键字查找日志,需要满足其中全部条件才匹配
```sh
grep "76953334" info.log | grep "1584349673402"
```
7. 查找不包含关键字的日志,支持多个关键字,关键字之间用`|`分隔,表示或
```sh
grep -v "handle" info.log
```
8. 根据关键字 A 查找,并且过滤包含关键字 B 的日志
```sh
grep "76953334" info.log | grep -v "handle"

滚动日志查找

除了以上在静态日志中查找之外,有时候调试需要看指定日志,而日志又存在滚动刷新较快的情况,此时就可以通过 grep 相关技巧对刷新的滚动日志进行过滤筛选,来达到我们的目的。



  1. 滚动日志中根据关键字搜索日志

tail -300f info.log | grep "76953334"


  1. 滚动日志中根据【关键字 A】搜索日志,且过滤掉包含【关键字 B】的日志

tail -300f info.log | grep "76953334" | grep -v "2450"

解压缩

压缩解压也是比较常用的一些操作,常见的压缩包就是tar.gzzip两种,下文分别介绍这两种格式的压缩与解压方式。



  1. gzip 压缩文件或目录,具体参数含义见参考链接

    tar zcvf tempdir/ fileName.tar.gz


  2. 解压 tar.gz 格式 (gzip) 压缩包 (与压缩命令比较只是参数 c 改成了 x)

    tar zxvf fileName.tar.gz


  3. zip 压缩文件或目录(-r 表示包含子目录)

    zip -r fileName.zip tempdir/


  4. zip 解压到指定目录(-o 表示重名文件覆盖时不提示,可选参数)

    unzip -o fileName.zip -d tempdir2/



进程相关

工作中偶尔会需要看一下应用进程的信息,比如什么时候启动的,启动了多久这些信息,以下命令可以告诉你答案。



  1. 查看端口是否被占用

    netstat -l | grep 8080


  2. 查看进程启动时间

    ps -p 8080 -o lstart


  3. 查看进程运行多长时间

    ps -p 8080 -o etime



VIM 小技巧

列举了几个 VIM 小技巧,批量注释行、替换操作
技术图片



  1. 批量注释行



    1. control + v 进入列模式

    2. 选择要注释的列

    3. shift + i 进入 INSERT 模式

    4. 输入# 或其他你想要插入的文字

    5. 连续按两次 ESC



  2. 批量取消注释行



    1. control + v 进入列模式

    2. 选中要删除的文字

    3. d 键进行删除



  3. 搜索并替换关键字 (INFO 替换为 ERROR)
    全文替换: vim 正常模式下 :%s/INFO/ERROR 回车确定
    当前行替换:vim 正常模式下 :s/INFO/ERROR 回车确定
    技术图片



  4. 拷贝与清空全文内容
    拷贝全文内容:vim 正常模式下 :%y
    清空全文内容:vim 正常模式下 :%d




系统相关



  1. 从路径 /home 下开始向下遍历查找名称包含 nginx.conf 的文件

    find /home -name nginx.conf


  2. 查看磁盘占用

    df -h


  3. 查看当前目录下文件或目录占用空间

    du -h --max-depth=1



其他文章

笔者写的一些在 Spring 容器中关于设计模式的实践文章



  • 设计模式之策略模式实战

  • 设计模式之状态模式实战

  • 设计模式之责任链模式实战

  • 设计模式之观察者模式实战


参考



  • 每天一个 linux 命令(28):tar 命令

  • Linux zip 命令

  • 在 Vim 中优雅地查找和替换

  • 那些鲜为人知的 Vim 小技巧


推荐阅读
  • mongodb复制集部署文档 ... [详细]
  • Linux提权之suid篇
    Linux提权之suid篇不知攻,焉知防一个在安服路上摸索的大三生,记录平时学习笔记suid前言:1.只有可以执行的二进制程序文件才 ... [详细]
  • Linux是一套免费使用和***传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上。Linux系统是由全世界各地的成千上万的程序员合适的方式定制自己的Li ... [详细]
  • mysql oneproxy稳定吗_Mysql 中间件 oneProxy总结
    建议使用之前把官方的文档全部通读一遍这里提供一个我的网盘地址oneproxy百度网盘0.先对oneproxy有个大概的了解,知道他所处的位置1.MySQL服务器创建t ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • MQ的使用
    安装环境:linuxredhatactivemq版本:5.8.01.从http:activemq.apache.orgdownload.html地址下载 ... [详细]
  • 分享_Jenkits搭建芝波分享
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jenkits搭建------芝波分享相关的知识,希望对你有一定的参考价值。   ... [详细]
  • 13Linux基本命令和配置服务器来电后自动开机
    本节所讲内容:Linux终端介绍Shell提示符BashShell基本语法基本命令的使用:ls、pwd、cd查看系统和BIOS硬件时间Linux如何获得 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • mysql mmm搭建_搭建mysqlmmm高可用MySQL集群
    实验需求:配置mysql-mmm,实现mysql的高可用MySQL-MMM实现MySQL高可用http:www.linuxidc.comLinux201 ... [详细]
  • 大数据学习环境安装关于防火墙​centos7使用的是firewalld,centos之前使用的是iptablesCentOS7关闭防火墙查看防火墙状态sudosy ... [详细]
  • python自学教程哪里好,python比较好的教程
    本文目录一览:1、想学python去哪里比较好? ... [详细]
  • 文章目录前言必知必会的软件服务器分类机架式服务器塔式服务器刀片式服务器三者的区别虚拟服务器(云服务器)服务器的硬件组成服务器常见的品牌前言本文是循序渐进学linux的第一课,为 ... [详细]
  • Ubuntu16.0464位安装armlinuxgcc交叉编译器以及samba服务器
    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包。以arm-l ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
author-avatar
木木的亦尘_283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有