常用命令

有人说 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-常用命令和工具的更多相关文章

  1. Linux服务器上监控网络带宽的18个常用命令和工具

    一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...

  2. 用 shell 脚本做命令行工具扩展

    问题的提出 公司开发机与远程服务器之间有严格的隔离策略,不能直接使用 ssh 登录,而必需通过跳板机.这样一来,本地与服务器之间的一些文件传输变得非常不便.经过咨询,运维教了我一招: $ nc -l ...

  3. Scrapy学习篇(二)之常用命令行工具

    简介 Scrapy是通过Scrapy命令行工具进行控制的,包括创建新的项目,爬虫的启动,相关的设置,Scrapy提供了两种内置的命令,分别是全局命令和项目命令,顾名思义,全局命令就是在任意位置都可以执 ...

  4. git开发流程、常用命令及工具、TortoiseGit使用及常见问题

    根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...

  5. [转]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 ...

  6. shell之常用命令

    一些技巧 ctrl+alt+f1切换至命令行模式 ctrl+alt+f7切换至图形界面 命令行编辑: 光标跳转 ctrl+a 行首 ctrl+e 行尾 ctrl+d 删除 ctrl+u 删除光标至行首 ...

  7. JVM 常用命令行工具

    本文部分摘自<深入理解 Java 虚拟机第三版> 基础故障处理工具 Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打 ...

  8. HBase shell的常用命令(CRUD)

    @来源是传智播客hadoop的视频教程,觉得入门不错,就copy过来了 一.启动HBase: sudo -i  cd /home/cx/itcast/hbase-1.2.6/bin  ./start- ...

  9. Shell 脚本常用命令

    Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1           Shell中的特殊符号 ...

  10. Linux常用命令及工具记录(持续更新)

    一.命令 convmv   作用:文件名的编码转换   安装:sudo apt-get install convmv   使用:convmv * -f gbk -t utf8 --notest   c ...

随机推荐

  1. 自然语言处理(NLP)——简介

    自然语言处理(NLP Natural Language Processing)是一种专业分析人类语言的人工智能.就是在机器语⾔和⼈类语言之间沟通的桥梁,以实现人机交流的目的. 在人工智能出现之前,机器 ...

  2. Redis:Redis的安装

    Redis优势 性能极高             – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富的数据类型  – Redis支持二进制案例的 Strings, Li ...

  3. gitolite安装及配置

    1.客户端(1)使用ssh-keygen命令在当前用户根目录下生成密钥(2)将该密钥远程拷贝到gitserver服务器上:scp ~/.ssh/id_rsa.pub user@ip:/tmp/neu. ...

  4. @Valid 注解的使用

    限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为true @DecimalMax( ...

  5. C语言:警告提示及解决方法

    #include <stdio.h> int main(){ struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group ...

  6. DEV-C++ 5.11调试设置方法

    DEV-C++调试设置方法:默认不能调试,打开调试的方法: 1.点击"工具"菜单--编译选项--"代码生成/优化"--连接器--"产生调试信息&quo ...

  7. keeplived+mycat+mysql高可用读写分离水平分表(谁看谁都会)

    一:环境准备: 应用 主机 mysql-master 192.168.205.184 mysql-slave 192.168.205.185 mycat-01,keeplived,jdk 192.16 ...

  8. CSS 样式清单整理

    1.文字超出部分显示省略号 单行文本的溢出显示省略号(一定要有宽度) p{ width:200rpx; overflow: hidden; text-overflow:ellipsis; white- ...

  9. bash对一个目录中文件名的遍历

    for var in *      对当前目录中文件名的遍历 for var in /xx/xx/* 对绝对路径目录的遍历 ${var##*/}  变量扩展取文件名的基名 $var =~ ^[0-9] ...

  10. windows程序快速启动的方式:WIN键+R

    WIN键+R是windows快速启动程序的一种方式,一般能独立运行的程序都能以这种方式启动.如notepad.calc.explorer等程序. 在命令行方式下explorer加上不同的参数,会得到不 ...