常用Shell命令集合和使用技巧(推荐)

 更新时间:2020年7月11日 15:10  点击:1711

一、控制台使用技巧

基于我平时的工作经验,总结出一些我常用的快捷键

1.1 操作快捷键

      Ctrl+r:可以快速查找历史命令

      Ctrl+a / Ctrl+e:移动光标到命令行首 / 行尾

      Ctrl+w / Ctrl+k:删除光标之前 / 之后的内容

1.2 VIM文件编辑快捷键

       ZZ:文件保存并退出

1.3 进程操作快捷键

       Ctrl+c:强制终止程序

       Ctrl+z:挂起一个进程

       Ctrl+d: 终端输入exit后回车

1.4 linux命令中快捷键(top)

       Shift + p: 根据CPU使用率排序

       Shift + m: 根据Mem使用率排序

二、Shell命令合集

首先,我们先对Shell命令合集做一个分类,主要可分为 空间分析,指定文件操作,链接状态分析,IP信息提取

2.1 空间分析

场景1: 磁盘空间不足,需快速定位日志目录

该场景主要用在linux操作系统磁盘空间不足,需要快速定位磁盘使用情况,对文件的磁盘使用率做排序,需要用到如下组合命令:

du -x --max-depth=1 / | sort -k1 -rn #-x 表示跳过其他文件系统

-x表示跳过其他文件系统,只分析本文件系统里面的文件,排除一些额外的干扰项;--max-depth=1 表示只分析/ 目录下第一级目录下的所有文件大小;-k 表示具体按照那一列进行排序;-r是倒序排列;-n表示只对数值排序

场景2:系统产生很多碎片文件,导致 inode 资源不足

该场景主要是操作系统产生大量碎片文件,随之消耗大量innode,innode的过渡使用会导致innode资源不足无法创建文件,因为du 命令只能统计磁盘使用情况无法统计碎片文件的个数,所以统计碎片文件个数需要用到如下组合命令

find -type f | awk -F/ -v OFS=/ 
 '{$NF="";dir[$0]++}END
{
for (i in dir) print dir[i] i}' | sort -k1 -rn | head

这条命令比较复杂,使用了find,awk,sort,head。

通过find找出指定文件类型的文件,然后管道给 awk,它可以把文本内容按行进行格式化输出并展示,-F / 指定处理文件时字符串之间以 / 进行分割,-v OFS=/ 表示文件显示结果时以 / 进行分割展示。对于awk命令整体规则而言有一个 {} END {} 格式,前面的 {} 表示行处理操作,END{} 表示行处理后需要进行整体结果出,在行处理操作逻辑中,设置$NF 为空表示将每一行的文件名信息去除,从而只保留目录路径,dir 是一个自增数组,用于统计结果。最后通过 for 循环进行遍历输出dir关联数组中所有行信息。

2.2 指定文件操作

场景一:批量查找文件对内容做替换

场景一适用于一个目录下有多个子目录,并且子目录下有大量文件,我们需要找到指定文件然后替换文件里面的内容,需要用到如下组合命令:

(find . -name "*.txt"|xargs tar -cvf test.tar)
 && cp -f test.tar /home/.

通过find命令查找当前目录下的所有子文件夹名称为 consumer.xml 的文件,然管道给 sed ,通过-i把文件内容替换。

场景二:批量查找文件作拷贝打包

场景二主要是用在对查找到的指定文件进行打包,然后拷贝到指定路径,可以使用如下组合命令:

netstat -n | awk '/^tcp/{arr[$NF]++
} 
END {for (i in arr) print arr[i] " " i
}'

查找当前目录下的所有以 .txt结尾的文件,然后打包成test.tar,如果打包成功则把压缩包拷贝到/home目录下

2.3 网络连接状态分析

场景一:列出tcp协议下的连接,并统计所有状态的总量

场景一主要用在查看服务器当前有多少TCP类型的连接,分析TCP/IP网络状态(ESTABLISHED,TIME_WAIT)

netstat -n | awk '/^tcp/{arr[$NF]++} END {for (i in arr) print arr[i] " " i}'

对于awk命令整体规则而言有一个 {} END {} 格式,上述命令分析了TCP协议下,所有类型连接的总数,可用于分析查看当前服务器连接数。

2.4 IP信息提取

场景一:通过命令获取主机IP信息

ip a|grep "global"|awk'{print $2}'|awk -F/'{print $1}'

ip a负责查看主机上所有的网卡信息,然后过滤 global关键字,打印出第二列,再把子网掩码移除掉即可获取到主机ip

三、常见问题

问题一:Shell适不适合作多并发任务

答:不适合,Shell中一般是通过nohup的方式把需要并发执行的任务放入后台,这样做有存在一些问题,包括  进程状态不好控制,进程间信息共享一般以文件形式进行等,所以当需要进行大的并发任务执行时,建议使用Python,Go,PHP语言实现并发。

问题二:Shell适合用在什么场景中

答:Shell 适合用在追求运维高效(非性能高效)要求的简单场景中,如日志切割、进程分析、系统初始化等。

总结

到此这篇关于常用Shell命令集合和使用技巧(推荐)的文章就介绍到这了,更多相关Shell命令集合和使用技巧内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • php webshell下直接反弹shell的例子

    webshell对于我们站长来讲肯定听到比较多了,我们网站可能经常被人使用期webshell方式注入一些东西了,下面一起来看一个php webshell下直接反弹shell的例子,具体如下。...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
  • Powershell实现编写和运行脚本

    本文为那些对学习 Windows PowerShell 命令行和脚本编写环境感兴趣的系统管理员提供了资源。也请告诉我们本网站如何才能对您更有用处。...2020-06-30
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • Linux中grep命令详解

    grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下...2023-02-15
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • Shell脚本中让进程休眠的方法(sleep用法)

    这篇文章主要介绍了Shell脚本中让进程休眠的方法,本文讲解的就是sleep的用法,可以实现睡觉若干秒、若干分钟、若干小时,需要的朋友可以参考下...2020-07-11
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现连接设备、通讯和发送命令的方法

    本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:1. 采用php socket技术使用TCP/IP连接设备参数$service_po...2015-10-21
  • C#隐式运行CMD命令(隐藏命令窗口)

    这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下...2020-06-25
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25