Linux命令大全

网络篇

ping

  • ping -c 3 -q -s 65500 -t 255 -i 0.1 -f www.baidu.com

    • -c:指定ping的次数
    • -q:只重结果不重过程
    • -s: 默认情况下,ping命令是以64字节大小的数据包来测试网络联通性的,如需要改变默认数据包的大小,则可以使用参数-s选项。
    • -t: 指定ping的TTL
    • -i: 指定ping的时间间隔
    • -f: 以尽可能快的速度来发送数据包

DNS

  • DNS即Domain Name System,负责着整个互联网中“域名—IP地址”的管理和解析工作。

  • DNS缓存,每个DNS服务器都有一个高速缓存区,里面存放“域名-IP”映射关系,缓存会设置期限,所以如果DNS服务器是从缓存中提取解析数据返回给用户的,会在返回内容中给出“Non-authoritative answer”的字样。

  • 安装 bind-utils软件包,里面包括 host dig nslookup等命令

  • /etc/resolv.conf存放dns服务器地址

  • DNS协议五元组:DNS是用来做域名和资源转换的,而IP地址只是资源中的一种而已。资源是一个五元组{ DomainName、TimeToLive、Class、Type、Value }

    • DomainName(域名):指我们要查询的那个域名。
    • TimeToLive(生存期限):表示此域名在各DNS服务器缓存中应保存的时长。
    • Class(类别):通常为IN,即Internet。另外还有CH(Chaos)和HS(Hesiod)两类,但目前几乎已经被淘汰了。
    • Type(类型):指出这条记录的类型,包括8种,即SOA、A、MX、NS、CNAME、PTR、HINFO和TXT。
    • Value(值):针对不同类型,会有不同的值。
  • DNS的八种类型

    • SOA: Start Of Authority,表示授权开始,可以获得针对一个域名的最基本信息,包括Mail:管理员邮箱地址、Minimum:外部DNS服务器如果要缓存本DNS服务器的授权数据保存时限等。
    • A: IP地址
    • MX: Mail eXchanger,当前域名对应的邮箱服务器
    • NS: Name Server,给定域名下包含的DNS服务器信息
    • CNAME: 别名
    • PTR: 从IP地址查询其对应的域名的映射关系
    • HINFO: 包含CPU和OS等信息
    • TXT: 文本信息,标识有关此域名的一些信息

nslookup

<pre class="prettyprint linenums prettyprinted" style="box-sizing: border-box; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 18px; white-space: pre-wrap; display: block; padding: 18px; margin: 0px 0px 10px; line-height: 30px; color: rgb(51, 51, 51); word-break: normal; word-wrap: break-word; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); border-radius: 3px; overflow: scroll;">

  1. $ nslookup www.baidu.com

  2. //本次解析使用的DNS服务器的具体IP地址和端口

  3. Server: 223.5.5.5

  4. Address: 223.5.5.5#53

  5. Non-authoritative answer:

  6. www.baidu.com canonical name = www.a.shifen.com.

  7. Name: www.a.shifen.com

  8. Address: 61.135.169.121

  9. Name: www.a.shifen.com

  10. Address: 61.135.169.125

</pre>

  • nslookup - 8.8.8.8 更改dns服务器地址,默认取/etc/resolv.conf中第一条记录
  • nslookup -type=soa 更改查询的类型。

dig

dig: Domain Information Groper,它是一个DNS查询工具,比nslookup更加强大。

  • dig @dnsserver name querytype
  • -f: 用-f选项实现从一个文件里读取内容批量查询。
  • -t: 设置查询类型
  • -q: 显示设置要查询的域名,提高命令的可读性
  • -x: 逆向查询
  • dig +tcp @8.8.8.8 www.baidu.com: 采用TCP协议来进行DNS通信
  • dig +trace roclinux.cn: 跟踪dig全过程
  • dig +short www.baidu.com: 精简dig输出

iproute

net-tools软件包是Linux平台中非常老牌的工具包,包括arp、ifconfig、netstat、route等命令,普遍集成于各类Linux发行版中,但是Linux内核2.2版本对网络子系统进行了全面的重构后,net-tools工具集有些力不从心,iproute2做为后浪有将前浪拍在沙滩上的趋势。

image

ss

  • ss是 Socket Statistics的缩写,可以获取socket统计信息。ss能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速、更高效。

  • ss一些常用的选项

    • ss -s: 查看当前服务器的网络连接统计
    • ss -l: 查看所有打开的网络端口
    • ss -a: 查看所有的socket连接 -ta:表示只查看TCP sockets

ip

ip是用来管理网络设备和路由的强大命令。


image
  • ip addr show 展示网络接口信息
  • ip addr add 192.168.1.111/24 dev p1p2 为网络接口添加一个IP地址
  • ip addr del 192.168.1.111/24 dev p1p2 针对一个网络接口删除其IP地址
  • ip route show 查看路由表
  • ip route add 192.168.2.0/24 via 192.168.1.254 增加一条路由规则
  • ip neigh show 查看本服务器的ARP列表
  • ip命令汇总表


    image

tcpdump

tcpdump -i eth0 -nn -X ‘port 53’ -c 1

  • -i选项:即interface,用来指定网络接口

  • -nn选项:意思是当tcpdump遇到协议号或端口号时,不要将这些数字转换成对应的协议名称或端口名称。

  • -X选项:告诉tcpdump命令,需要把协议头和包内容都原原本本地显示出来。tcpdump会同时以16进制和ASCII的形式显示

  • -c选项:是Count的含义,这个选项用来设置我们希望tcpdump帮我们抓几个包。

  • -e选项: 增加以太网帧头部信息输出

  • -l选项:让输出变为行缓冲,如果不加-l选项的话,那么只有当缓冲区全部占满时,tcpdump才会将缓冲区中的内容输出出来

  • -t选项:输出时不打印时间戳

  • -v选项:输出更详细的信息,在原有输出内容的基础之上,你还会看到tos值、ttl值、ID值、总长度、校验值等。

  • -F选项: 指定过滤表达式所在的文件,tcpdump -i eth0 -c 1 -t -F filter.txt

  • -w选项:将流量保存到文件中

  • -r选项:读取raw packets文件

  • -A选项:tcpdump只会显示ASCII形式的数据包内容

  • 过滤流量

    • host 指定主机名或IP地址

    • net 指定网络段

    • port 指定端口

    • portwange 指定端口范围

    • src(source) dst(destination) 过滤表达式中没有明确指出某个IP是src还是dst的话,那么默认策略是src或dst都会匹配到。

    • proto[expr:size]语法

      • proto就是protocol的缩写,表示这里要指定的是某种协议的名称,比如ip、tcp、icmp、udp等。
      • proto[expr:size]中,expr用来指定数据报偏移量,表示从某个协议的数据报的第多少位开始提取内容,默认的起始位置是0。而size表示从偏移量的位置开始提取多少个字节
      • 提取了特定内容之后,我们就需要设置我们的过滤条件了。我们可用的“比较操作符”包括:>、<、>=、<=、=和!=,共6个。
      • 要想提取TCP协议的SYN、ACK和FIN字段 语法如下 tcp[tcpflags] & tcp-syn; tcp[tcpflags] & tcp-ack; tcp[tcpflags] & tcp-fin;
      • tcpdump 'ip[2:2] > 576' 打印IP包长度超过576字节的网络包。

nc

命令nc,全名netcat, 能胜任跟TCP/UDP相关的一切操作,可以打开TCP连接、发送UDP包、监听端口,端口扫描等等。

  • 聊天

    • 在A机器上执行 nc -l 12345
    • 在B机器上 nc 116.255.245.207(A的IP地址) 12345
  • 端口扫描
    nc -z -v -n -w 2 127.0.0.1 20-23

    • -z选项:一旦建立连接后马上断开,而不发送和接收任何数据。
    • -v选项:打印详细输出信息。
    • -n选项:直接使用IP地址,而不使用域名服务器来查询其域名。
    • -w选项:设置连接的超时时间,单位为秒。
    • -u选项:使用UDP建立连接。上面命令无此设置,则表示使用TCP建立连接。
  • 传输文件

    • 文件发送端启动监听端口,准备好文件 nc -v -l 12345 < book_out.txt
    • 文件的接收端接收服务端的数据,并重定向到文件中 nc -v -n 116.255.245.207 12345 > book_in.txt

ssh-copy-id

一个脚本方便从A机器建立到B机器的ssh信任关系。

rsync

用于源端和目的端文件、文件夹的实时同步

wget

命令行下的网络下载工具,支持HTTP、HTTPS、FTP协议的下载。

进程和性能篇

uptime

uptime命令,有两大功能:一个是查看机器的开机时长,另一个是查看CPU负载情况。

<pre class="prettyprint linenums prettyprinted" style="box-sizing: border-box; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 18px; white-space: pre-wrap; display: block; padding: 18px; margin: 0px 0px 10px; line-height: 30px; color: rgb(51, 51, 51); word-break: normal; word-wrap: break-word; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); border-radius: 3px; overflow: scroll;">

  1. $ uptime

  2. 22:36:58 up 11:12, 1 user, load average: 0.00, 0.00, 0.00

  3. 系统当前时间 主机已运行时间 用户**连接**数 最近1、5、15分钟的系统平均负载

  4. + **系统平均负载:** 运行队列中的平均进程数,一般的经验来看,单核负载在0.7以下是安全的,超过0.7就需要进行优化了。

  5. + **/proc/loadavg**文件中也记载了系统平均负载信息。

</pre>

free

  • buffers是块设备I/O相关的缓存页,数据先写到buffer中,再再后台慢慢写入设备。
  • cached是普通文件相关的缓存页,从硬盘读取数据内容先暂存到cache里,减少从底盘读数据的次数。
image

SWAP空间

SWAP(交换分区)和Windows中的虚拟内存都是将一部分硬盘空间虚拟成内存,来缓解内存使用紧张的问题。

  • 当Linux系统发现物理内存使用量不足时就会选择内存中较长时间没有被访问和更新的内存数据,将这些内存数据临时写到SWAP中,并释放内存中相应的空间
  • 等到某个程序要使用SWAP中的数据时,系统会再次从SWAP中读取之前保存的数据,并写回到物理内存中。
  • 对于服务器来说,SWAP建议设置为内存的1~2.5倍之间的数值,可以防止内存耗尽的窘境。
  • 如何定义内存不足?cat /proc/sys/vm/swappiness中的参数会来辅助控制“内存不足”的界限。
    image

vmstat

image
  • vmstat输出的第一行数字,是自服务器启动至今的各项指标的平均值,而非最新状态值,从第二行开始的,才能反映服务器当前最新状态。
  • 如果cache的数值较大,则说明系统缓存了较多的磁盘数据,利于磁盘I/O性能的提升。
  • si和so则是读写SWAP的量,这两个值如果长期大于0,则表示系统需要经常读写交换分区,这会很消耗CPU资源和磁盘I/O性能。
  • 如果free的数值很低,甚至接近0了,也不一定就是系统内存快耗尽了。要同时看buff和cache的量,大部分情况是buff和cache占用了很多内存资源,而当系统真正需要内存时,buff和cache是可以随时被系统征调回来的。
  • 如果发现bi和bo的值很大,则说明系统正在进行大量的磁盘读写操作。
  • 如果us的数值经常大于50%,则说明用户进程所占用的CPU时间较多
  • 而sy是内核所消耗的CPU时间,这个数值不应该很高。如果很高,则一定是系统哪里出了问题。
  • 如果wa较高,则说明CPU总是在等待I/O操作。这表明磁盘已经成为主要瓶颈
  • r表示的是正在运行队列中的任务数,如果这个数值总是超过服务器的CPU核数,则说明CPU已经成为性能瓶颈

mpstat

  • mpstat,全称是multiprocessor statistics,擅长多处理器的统计工作。

top

通过top,我们可以了解到服务器的CPU负载情况、内存状态、SWAP使用状况,以及详尽的进程级运行状态,可谓应有尽有。

image
image
image
image
image

进程数据

image

  • VIRT(Virtal Memory)中文为虚拟内存。一个进程,无论是通过malloc/calloc系列函数申请的内存,还是堆/栈所占用的内存,抑或是全局变量等所占用的内存,都属于VIRT范畴。所以VIRT是进程所占用内存的最大集。 + RES(Resident Memory),中文叫作常驻内存。在malloc申请了物理内存空间之后,并非会立即使用到这块物理内存,所以,系统会在进程真正要使用到这块物理内存时,才正式将物理内存分配给这个进程。所以,RES表示的是一个进程真正在使用的物理内存的大小,而非申请的物理内存的大小。

iostat

  • iostat -d -k 1 3
  • -d选项:只显示磁盘的使用状态
  • -k选项:使用KB作为单位
  • 1: 采样时间,1s
  • 3: 采样次数,3次
  • iostat输出的第一组数据表示从系统启动到本命令执行期间的统计结果
  • -x选项展示了更多的磁盘统计数据

pidof

  • 查询一个运行程序的PID pidof sshd
  • -x选项:找出Shell脚本的PID
  • -s选项: 只输出一个PID

sar

将系统性能指标信息按时间间隔数据到文件中。

lsof

lsof,即list open files 用来查看进程打开的文件、目录和套接字等一系列信息。

  • lsof filename: 通过文件名来定位打开该文件的进程
  • lsof -d N:根据文件描述符定位进程
  • lsof -p PID:查询进程打开了哪些文件
  • lsof -i[46] [protocol][@hostname|hostaddr][:service|port]:查看哪些程序占用端口

fuser

fuser和lsof功能对比


image

ps

查看服务器上有哪些进程,属于哪些用户,消耗了多少CPU资源,占了多少内存

  • a:显示各终端上的所有进程
  • u:展示进程所属的用户名
  • x: 对于没有关联到终端上的进程也展示出来

kill

  • kill [选项] [进程号] 向进程发送特定信号
  • kill -l 查看kill可以发出哪些信号

nohup

要想让运行的命令不因用户注销、网络断开等因素而中断,有两个基本思路:

  • 让进程对SIGHUP信号免疫。免疫宗的成员有nohup和disown。
  • 让进程在新的会话中运行。会话宗的成员有setid和screen。

系统管理篇

uname

uname -a 展示系统信息

image

用户ID和用户组

  • 实际用户,英文术语叫作real user id,就是登录Shell的那个时刻所使用的用户ID。用who am i所展示出来的就是“实际用户”。
  • 登录进Shell之后,使用su或su-切换到的用户ID,叫作有效用户。用whoami所展示出来的就是“有效用户”。

service

  • service [服务名] [start/stop/restart/status]
  • /etc/init.d目录下的这些文件就是可以通过service命令掌控的服务。
  • service只是一个脚本,它所做的只是把用户的操控动作(start/stop/restart/status)传递给/etc/init.d中相应的命令而已。

chkconfig

  • /etc/init.d/中包含所有可用的服务;

  • /etc/rc.d/中设置有7个文件夹,以rcN.d形式命名,分别对应7个运行等级;

  • 每一个rcN.d文件夹中的文件全部是软链形式,分别链接到/etc/init.d/中的服务上,也就表明了当前的运行等级对应着哪些服务;

  • rcN.d中的软链文件命名规则;

    • K+整数+服务名;
    • S+整数+服务名。
    • 以K开头的软链文件,表示要关闭对应的服务。以S开头的软链文件,表示要启动对应的服务。

lsmod

可以实现把某些功能代码封装成模块动态地装载到内核中,当内核需要用到这个功能时再读取使用。

关机和重启

image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,939评论 1 13
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 3,859评论 0 5
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,222评论 0 1
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,127评论 2 34
  • **系统信息 **arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r...
    淡淡紫色阅读 247评论 0 1