常用命令

有人说 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. 利用C语言将混乱数字排序(即冒泡排序法)(含思路)

    大一C语言 你没学过吗 这篇可以称的上入门级别的c语言了 当然还有水仙花数,冒泡排序等经典的C语言程序 后面也会逐一更新 尽情期待喔~~~ 冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前 ...

  2. Spring:Spring项目多接口实现类报错找不到指定类

    spring可以通过applicationContext.xml进行配置接口实现类 applicationContext.xml中可以添加如下配置: 在application.properties中添 ...

  3. XCTF getit

    一.查壳 是linux的文件.没加壳 二.拖入ida 分析一下逻辑,发现就是t的值就是flag. 写个exp就出来了. 三.exp分享 s='c61b68366edeb7bdce3c6820314b7 ...

  4. 【论文阅读】Motion Planning through policy search

    想着CSDN还是不适合做论文类的笔记,那里就当做技术/系统笔记区,博客园就专心搞看论文的笔记和一些想法好了,[]以后中框号中间的都算作是自己的内心OS 有时候可能是问题,有时候可能是自问自答,毕竟是笔 ...

  5. ORB随便记一记

    论文摘取 (这部分看的是泡泡机器人的翻译) 基于特征点.单目.完全自动初始化,基于PTAM框架. 相关工作 A.位置识别(大概是用于回环检测) bags of words FAB-map DBOW2 ...

  6. 深入理解JavaScript中的继承

    1前言 继承是JavaScript中的重要概念,可以说要学好JavaScript,必须搞清楚JavaScript中的继承.我最开始是通过看视频听培训班的老师讲解的JavaScript中的继承,当时看的 ...

  7. centos7 源码安装指定版本的php7

    很多时候可能会遇到需要手动源码安装软件的时候,所以自己实践了一把,并且把安装过程中遇到的问题,以及在网上找到的解决办法(实测有效)都记录下来,方便日后学习实践. 1. 系统环境 # cat /etc/ ...

  8. windows安装Laravel框架经验心得(一)

    作为一个程序员,要活到老学到老.虽然自己水平很菜,但是也要继续往前走,所以打算利用一些空闲时间在学习一些新知识,比如Laravel框架. 看书费劲,好不容易找到了一些关于Laravel的教学视频.不过 ...

  9. [考试总结]noip模拟22

    又发现模拟 \(22\) 的总结也咕掉了,现在补上它... 似乎又是gg的一场. 以为自己的部分分数打的很全,然而到后面发现自己的树剖打假了 \(\color{green}{\huge{\text{树 ...

  10. linux 之awk--格式化文本信息

    https://www.cnblogs.com/xudong-bupt/p/3721210.html awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常 ...