Shell-14-常用命令和工具
常用命令
有人说 Shell 脚本是命令堆积的一个文件, 按顺序去执行
还有人说想学好 Shell 脚本,要把 Linux 上各种常见的命令或工具掌握了,这些说法都没错
Shell 语言本身在语法结构上比较简单,是面向过程编程,想实现复杂的功能有点强人所难
而且 Shell 本身又工作在 Linux 内核之上,在用户态调用 Linux 命令会很方便
所以大多数情况下我们都是依靠这些命令来完成脚本中的某些功能,
比如文本处理、获取系统状态等等
然后通过 Shell 语法结构组织代码逻辑
1.线上查询以及帮助命令(2个)

2.文件和目录操作命令(18个)

3.查看文件以及内容处理命令(21个)

4.文件压缩以及压缩命令(4个)

5.信息显示命令(11个)

6.搜索文件命令(4个)

7.用户管理命令(10个)

8.基础网络操作命令(11个)

9.深入网络操作命令(9个)

10.有关磁盘与文件系统的命令(16个)

11.系统以及用户权限相关命令(4个)

12.查看系统用户登录信息的命令(7个)

13.内置命令以及其他(19个)

14.系统管理与性能监视命令(9个)

15.关机、重启、注销和查看系统信息的命令(6个)

16.进程管理相关命令(15个)

示例
printf
功能: 格式化打印数据。默认打印字符串不换行
一些常用的空白符:
\n 换行
\r 回车
\t 水平制表符

tac
功能: 连接文件和倒序打印文件
倒叙打印

rev
功能: 反向打印文件的每一行

rename
功能: 重命名文件,支持通配符
这个命令有三个参数,分别是from : 修改什么名字,to:改成什么名字,file:需要修改的文件是哪些

sshpass
免交互ssh登录

免交互传输文件

密码传入系统变量:
# SSHPASS=123456 rsync -avz /etc/hosts -e "sshpass -e ssh" root@192.168.1.221:/opt
ss
功能: 比 netstat 更强大的 socket 查看工具
格式: ss [options] [ FILTER ]
filter:过滤
常用选项:
-n 不解析名字
-a 显示所有 socket
-l 显示所有监听的 socket
-o 显示计时器
-e 显示 socket 详细信息
-m 显示 socket 内存使用
-p 显示进程使用的 socket
-i 显示内部 TCP 信息
-s 显示 socket 使用汇总
-4 只显示 IPV4 的 socket
-0 显示包 socket
-t 只显示 TCP socket
-u 只显示 UDP socket
-d 只显示 DCCP socket
-w 只显示 RAW socket
-x 只显示 Unix 域 socket
-f FAMILY 只显示 socket 族类型( unix, inet, inet6, link, netlink)
-A 查询 socket {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D 将原始的 TCP socket 转储到文件
-F 从文件中读取过滤信息
过滤:
-o state 显示 TCP 连接状态信息
示例:
显示所有 TCP 连接:
# ss -t -a
显示所有 UDP 连接:
# ss -u –a
显示 socket 使用汇总:
# ss -s
显示所有建立的连接:
# ss -o state established
显示所有的 TIME-WAIT 状态:
# ss -o state TIME-WAIT
搜索所有本地进程连接到 X Server:
# ss -x src /tmp/.X11-unix/*
lsof
功能: 列出打开的文件
选项:
-i [i] 监听的网络地址,如果没有指定,默认列出所有。
[i]来自[46][protocol][@hostname|hostaddr][:service|port]
-U 列出 Unix 域 socket 文件
-p 指定 PID
-u 指定用户名或 UID 所有打开的文件
+D 递归搜索
示例:
列出所有打开的文件:
# lsof
查看哪个进程占用文件:
# lsof /etc/passwd
列出所有打开的监听地址和 unix 域 socket 文件:
# lsof -i -U
列出 80 端口监听的进程:
# lsof -i:80
列出端口 1-1024 之间的所有进程:
# lsof -i:1-1024
列出所有 TCP 网络连接:
# lsof -i tcp
列出所有 UDP 网络连接:
# lsof -i udp
根据文件描述符列出打开的文件:
# lsof -d 1
列出某个目录被打开的文件:
# lsof +D /var/log
列出进程 ID 打开的文件:
# lsof -p 5373
打开所有登录用户名 abc 或 user id 1234,或 PID 123 或 PID 456:
# lsof -p 123,456 -u 123,abc
列出 COMMAND 列中包含字符串 sshd:
# lsof -c sshd
vmstat
功能: 报告虚拟内存、 swap、 io、上下文和 CPU 统计信息。
分析了这些文件:
/proc/meminfo
/proc/stat
/proc/*/stat
常用选项:
-a 打印活跃和不活跃的内存页
-d 打印硬盘统计信息
-D 打印硬盘表
-p 打印硬盘分区统计信息
-s 打印虚拟内存表
-m 打印内存分配(slab)信息
-t 添加时间戳到输出
-S 显示单位,默认 k、 KB、 m、 M,大写是*1024
示例:
分析系统性能:
# vmstat
每秒刷新一次,统计五次:
# vmstat -t 1 5
iostat
功能: 报告 CPU 利用率和磁盘 I/O
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
常用选项:
-c 显示 CPU 使用率
-d 只显示磁盘使用率
-k 单位 KB/s 代替 Block/s
-m 单位 MB/s 代替 Block/s
-N 显示所有映射设备名字
-t 打印报告时间
-x 显示扩展统计信息
示例:
显示 CPU 使用率:
# iostat -c 1 3
显示 I/O 磁盘统计信息:
# iostat -d -x -k 1 3 # 间隔 1 秒,输出 3 次
sar
功能: 查看系统资源综合方面利用率
常用选项:
-u, CPU
-r, memory
-b, disk
-n DEV, NIC traffic
-q, systemload
-b, TPS(Transaction Per Second,每秒事务处理量)
-o, output to file
示例:
# sar -u 2 3 #每两秒执行一次, 采集三次
# sar -u 2 3 -o cpu.out
# sar -f cpu.out #读取文件
dstat
功能: 查看系统资源综合方面利用率(需要安装)
常用选项:
-c cpu 统计
-d 磁盘统计
-m 内存统计
-n 网络统计
-s swap 统计
-l 负载统计
--tcp tcp 状态统计
--udp udp 状态统计
--socket socket 数量统计
-t 输出时间
--output 写入 csv 文件
插件:
--list 支持的插件
--top-bio-adv 详细显示 I/O 进程写入 block 量, 包括 pid、 r、 w 和 cpu
--top-io-adv 进程写入磁盘总量
--top-cpu 占用 CPU 进程
--top-cpu-adv 查看最高 CPU 进程
--top-mem 内存进程
示例:
查看 CPU 利用率:
# dstat -c
查看 TCP 连接状态:
# dstat --tcp
nc
功能: TCP 和 UDP 连接和监听
常用选项:
-i interval 指定间隔时间发送和接受行文本
-l 监听模式,管理传入的连接
-n 不解析域名
-p 指定本地源端口
-s 指定本地源 IP 地址
-u 使用 udp 协议,默认是 tcp
-v 执行过程输出
-w timeout 连接超时时间
-x proxy_address[:port] 请求连接主机使用代理地址和端口
-z 指定扫描监听端口,不发送任何数据
示例:
端口扫描:
# nc -z 192.168.1.10 1-65535
TCP 协议连接到目标端口:
# nc -p 31337 -w 5 192.168.1.10 22
UDP 协议连接到目的端口:
# nc -u 192.168.1.10 53
指定本地 IP 连接:
# nc -s 192.168.1.9 192.168.1.10 22
探测端口是否开启:
# nc -z -w 2 192.168.1.10 22
创建监听 Unix 域 Socket:
# nc -lU /var/tmp/ncsocket
通过 HTTP 代理连接主机
# nc -x10.2.3.4:8080 -Xconnect 10.0.0.10 22
监听端口捕获输出到文件:
# nc -l 1234 > filename.out
从文件读入到指定端口:
# nc host.example.com 1234 < filename.in
收发信息:
# nc -l 1234
# nc 127.0.0.1 1234
执行 memcahced 命令: printf "stats\n" |nc 127.0.0.1 11211
发送邮件:
# nc [-C] localhost 25 << EOF
HELO host.example.com
MAIL FROM: <user@host.example.com>
RCPT TO: <user2@host.example.com>
DATA
Body of email.
.
QUIT
EOF
# echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
time
功能: 执行脚本时间
常用选项:
示例:
查看执行 ls 所需的时间:
# time ls
eval
功能: 执行参数作为 shell 命令
示例:
for i in $@; do
eval $i
done
echo ---
echo $a
echo $b
# bash test.sh a=1 b=2
---
1 2
Shell-14-常用命令和工具的更多相关文章
- Linux服务器上监控网络带宽的18个常用命令和工具
一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...
- 用 shell 脚本做命令行工具扩展
问题的提出 公司开发机与远程服务器之间有严格的隔离策略,不能直接使用 ssh 登录,而必需通过跳板机.这样一来,本地与服务器之间的一些文件传输变得非常不便.经过咨询,运维教了我一招: $ nc -l ...
- Scrapy学习篇(二)之常用命令行工具
简介 Scrapy是通过Scrapy命令行工具进行控制的,包括创建新的项目,爬虫的启动,相关的设置,Scrapy提供了两种内置的命令,分别是全局命令和项目命令,顾名思义,全局命令就是在任意位置都可以执 ...
- git开发流程、常用命令及工具、TortoiseGit使用及常见问题
根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...
- [转]Linux下网络常用命令和工具
转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...
- shell之常用命令
一些技巧 ctrl+alt+f1切换至命令行模式 ctrl+alt+f7切换至图形界面 命令行编辑: 光标跳转 ctrl+a 行首 ctrl+e 行尾 ctrl+d 删除 ctrl+u 删除光标至行首 ...
- JVM 常用命令行工具
本文部分摘自<深入理解 Java 虚拟机第三版> 基础故障处理工具 Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打 ...
- HBase shell的常用命令(CRUD)
@来源是传智播客hadoop的视频教程,觉得入门不错,就copy过来了 一.启动HBase: sudo -i cd /home/cx/itcast/hbase-1.2.6/bin ./start- ...
- Shell 脚本常用命令
Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1 Shell中的特殊符号 ...
- Linux常用命令及工具记录(持续更新)
一.命令 convmv 作用:文件名的编码转换 安装:sudo apt-get install convmv 使用:convmv * -f gbk -t utf8 --notest c ...
随机推荐
- Docker安装MySQL8.0
环境 CentOS 7.5 Docker 1.13.1 MySQL 8.0.16 安装 拉取镜像 默认拉取最新版本的镜像 $ docker pull mysql 如果要指定版本,使用下面的命令 $ d ...
- AOP面向切面的实现
AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理.日志.缓存等等. AOP ...
- php漏洞 sha1函数
0x01: 绕过技巧是传入的是数组时,会报错,返回为NULL,当传入的两个参数都是数组直接相等
- Ha1cyon_CTF-公开赛(wp)
一.babyasm 00007FF7A8AC5A50 push rbp 00007FF7A8AC5A52 push rdi 00007FF7A8AC5A53 sub rsp,238h 00007FF7 ...
- DIY一个智能开关kwswitch
源码地址:https://gitee.com/kerwincui/kwswitch 平台简介 该智能开关平台包括服务端.硬件端.PC端和安卓端.硬件使用ESP8266模块,成本相对较低,可以发挥想象力 ...
- Springboot中Rest风格请求映射如何开启并使用
问题引入 因为前端页面只能请求两种方式:GET请求和POST请求,所以就需要后台对其进行处理 解决办法:通过springmvc中提供的HiddenHttpMethodFilter过滤器来实现 而由于我 ...
- C语言:预定义的宏
预定义宏就是已经预先定义好的宏,我们可以直接使用,无需再重新定义.ANSI C 规定了以下几个预定义宏,它们在各个编译器下都可以使用: __LINE__:表示当前源代码的行号: __FILE__:表示 ...
- c++中的静态成员
引言 有时候需要类的一些成员与类本身相关联,而不是与类的每个对象相关联.比如类的所有对象都要共享的变量,这个时候我们就要用到类的静态成员. 声明类的静态成员 声明静态成员的方法是使用static关键字 ...
- 小 W 离职了
今天这篇是架构师大刘的系列故事 小W要离职了,大刘并没有挽留,甚至有点庆幸. 小W离职的原因比较简单,这次升职加薪,大刘提拔了和他同期进来,并且工作年限和他差不多的小L,而小W则是原地没动,薪水也没有 ...
- Spark—编译Spark源码
Spark版本:Spark-2.1.0 Hadoop版本:hadooop-2.6.0-cdh5.7.0 官方文档:http://spark.apache.org/docs/latest/buildin ...