📝 Writing docs.

This commit is contained in:
Zhang Peng 2018-09-26 17:06:39 +08:00
parent 4d8af02df6
commit 426e34d0fb
9 changed files with 562 additions and 2348 deletions

View File

@ -1,33 +1,34 @@
# linux
* [linux 系统目录结构](linux系统目录结构.md)
* [linux 文件基本属性](linux文件基本属性.md)
* [linux 监控](linux监控.md)
* [linux 软件](软件/README.md)
* [samba使用详解](软件/samba使用详解.md)
* [linux 常用命令](commands/README.md)
* [命令行的艺术(转载)](commands/命令行的艺术.md)
* [linux 常用命令-文件目录管理](commands/文件目录管理/README.md)
* [linux 常用命令-文件内容查看](commands/文件目录管理/文件内容查看.md)
* [linux 常用命令-文件压缩与解压](commands/文件目录管理/文件压缩与解压.md)
* [linux 常用命令-文件处理](commands/文件目录管理/文件处理.md)
* [linux 常用命令-文件编辑](commands/文件目录管理/文件编辑.md)
* [linux 常用命令-文件权限属性设置](commands/文件目录管理/文件权限属性设置.md)
* [linux 常用命令-文件查找和比较](commands/文件目录管理/文件查找和比较.md)
* [linux 常用命令-目录基本操作](commands/文件目录管理/目录基本操作.md)
* [linux 常用命令-系统管理](commands/系统管理/README.md)
* [linux 常用命令-系统操作](commands/系统管理/系统操作.md)
* [linux 常用命令-系统设置](commands/系统管理/系统设置.md)
* [linux 常用命令-用户和工作组管理](commands/系统管理/用户和工作组管理.md)
* [linux 常用命令-进程和作业管理](commands/系统管理/进程和作业管理.md)
* [linux 常用命令-系统性能管理](commands/系统管理/系统性能管理.md)
* [linux 常用命令-网络管理](commands/网络管理/README.md)
* [linux 常用命令-网络应用](commands/网络管理/网络应用.md)
* [yum 命令](yum.md)
- [linux 系统目录结构](linux系统目录结构.md)
- [linux 文件基本属性](linux文件基本属性.md)
- [linux 监控](linux监控.md)
- [linux 软件](软件/README.md)
- [samba 使用详解](软件/samba使用详解.md)
- [linux 常用命令](commands/README.md)
- [命令行的艺术(转载)](commands/命令行的艺术.md)
- [Linux 帮助命令](commands/Linux帮助命令.md) - 关键词:`help`, `whatis`, `info`, `man`, `which`, `whereis`
- [linux 常用命令-文件目录管理](commands/文件目录管理/README.md)
- [linux 常用命令-文件内容查看](commands/文件目录管理/文件内容查看.md)
- [linux 常用命令-文件压缩与解压](commands/文件目录管理/文件压缩与解压.md)
- [linux 常用命令-文件处理](commands/文件目录管理/文件处理.md)
- [linux 常用命令-文件编辑](commands/文件目录管理/文件编辑.md)
- [linux 常用命令-文件权限属性设置](commands/文件目录管理/文件权限属性设置.md)
- [linux 常用命令-文件查找和比较](commands/文件目录管理/文件查找和比较.md)
- [linux 常用命令-目录基本操作](commands/文件目录管理/目录基本操作.md)
- [linux 常用命令-系统管理](commands/系统管理/README.md)
- [linux 常用命令-系统操作](commands/系统管理/系统操作.md)
- [linux 常用命令-系统设置](commands/系统管理/系统设置.md)
- [linux 常用命令-用户和工作组管理](commands/系统管理/用户和工作组管理.md)
- [linux 常用命令-进程和作业管理](commands/系统管理/进程和作业管理.md)
- [linux 常用命令-系统性能管理](commands/系统管理/系统性能管理.md)
- [Linux 网络应用命令](commands/Linux网络应用命令.md) - 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables`
- [Linux 网络测试命令](commands/Linux网络测试命令.md) - 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat`
- [yum 命令](yum.md)
## 资料
* [awesome-linux](https://github.com/aleksandar-todorovic/awesome-linux)
* [awesome-linux-software](https://github.com/LewisVo/Awesome-Linux-Software)
* [linux-tutorial](https://github.com/judasn/Linux-Tutorial)
* [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html)
- [awesome-linux](https://github.com/aleksandar-todorovic/awesome-linux)
- [awesome-linux-software](https://github.com/LewisVo/Awesome-Linux-Software)
- [linux-tutorial](https://github.com/judasn/Linux-Tutorial)
- [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html)

View File

@ -0,0 +1,74 @@
---
title: Linux 帮助命令
date: 2018/09/26
categories:
- linux
tags:
- linux
- command
---
# Linux 帮助命令
> 关键词:`help`, `whatis`, `info`, `man`, `which`, `whereis`
<!-- TOC depthFrom:2 depthTo:2 -->
- [help](#help)
- [whatis](#whatis)
- [info](#info)
- [man](#man)
- [which](#which)
- [whereis](#whereis)
<!-- /TOC -->
## help
> help 命令用于显示 Shell 内部命令的帮助信息。而对于外部命令的帮助信息只能使用 man 或者 info 命令查看。
>
> 参考http://man.linuxde.net/help
## whatis
> whatis 用于查询一个命令执行什么功能。
>
> 参考http://man.linuxde.net/whatis
## info
> info 是 Linux 下 info 格式的帮助指令。
>
> 参考http://man.linuxde.net/info
## man
> man 命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息。
>
> 参考http://man.linuxde.net/man
## which
> which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。
>
> 参考http://man.linuxde.net/which
示例:
```sh
# which pwd
/bin/pwd
```
## whereis
> whereis 命令用来定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径。
>
> 参考http://man.linuxde.net/whereis
示例:
```sh
# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
```

View File

@ -0,0 +1,6 @@
# Linux 文件目录管理
<!-- TOC depthFrom:2 depthTo:2 -->
<!-- /TOC -->

View File

@ -0,0 +1,254 @@
---
title: Linux 网络应用命令
date: 2018/02/27
categories:
- linux
tags:
- linux
- command
---
# Linux 网络应用命令
> 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables`
<!-- TOC depthFrom:2 depthTo:2 -->
- [curl](#curl)
- [wget](#wget)
- [telnet](#telnet)
- [ip](#ip)
- [hostname](#hostname)
- [ifconfig](#ifconfig)
- [route](#route)
- [ssh](#ssh)
- [ssh-keygen](#ssh-keygen)
- [iptables](#iptables)
<!-- /TOC -->
## curl
> curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。
>
> 参考http://man.linuxde.net/curl
curl 命令支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化curl 可以祝一臂之力。
示例:
下载文件
```sh
curl http://man.linuxde.net/text.iso --silent
```
下载文件,指定下载路径,并显示进度
```sh
curl http://man.linuxde.net/test.iso -o filename.iso --progress
######################################### 100.0%
```
## wget
> wget 命令用来从指定的 URL 下载文件。
>
> 参考http://man.linuxde.net/wget
示例:
```sh
# 使用 wget 下载单个文件
wget http://www.linuxde.net/testfile.zip
```
## telnet
> telnet 命令用于登录远程主机,对远程主机进行管理。
>
> 参考http://man.linuxde.net/telnet
示例:
```sh
telnet 192.168.2.10
Trying 192.168.2.10...
Connected to 192.168.2.10 (192.168.2.10).
Escape character is '^]'.
localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1)
login: root
Password:
Login incorrect
```
## ip
> ip 命令用来显示或操纵 Linux 主机的路由、网络设备、策略路由和隧道,是 Linux 下较新的功能强大的网络配置工具。
>
> 参考http://man.linuxde.net/ip
示例:
```sh
ip link show # 显示网络接口信息
ip link set eth0 upi # 开启网卡
ip link set eth0 down # 关闭网卡
ip link set eth0 promisc on # 开启网卡的混合模式
ip link set eth0 promisc offi # 关闭网卡的混个模式
ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
ip link set eth0 mtu 1400 # 设置网卡最大传输单元
ip addr show # 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
ip route show # 显示系统路由
ip route add default via 192.168.1.254 # 设置系统默认路由
ip route list # 查看路由信息
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
ip route add default via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254
ip route del 192.168.4.0/24 # 删除192.168.4.0网段的网关
ip route del default # 删除默认路由
ip route delete 192.168.1.0/24 dev eth0 # 删除路由
```
## hostname
> hostname 命令用于显示和设置系统的主机名称。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 `/etc/hosts``/etc/sysconfig/network` 的相关内容。
>
> 参考http://man.linuxde.net/hostname
示例:
```sh
[root@AY1307311912260196fcZ ~]# hostname
AY1307311912260196fcZ
```
## ifconfig
> ifconfig 命令被用于配置和显示 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
>
> 参考http://man.linuxde.net/ifconfig
示例:
```sh
# 显示网络设备信息(激活状态的)
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51
inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0
TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:56103 errors:0 dropped:0 overruns:0 frame:0
TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)
```
## route
> route 命令用来显示并设置 Linux 内核中的网络路由表route 命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
>
> 参考http://man.linuxde.net/route
示例:
```sh
# 显示当前路由
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
112.124.12.0    *               255.255.252.0   U     0      0        0 eth1
10.160.0.0      *               255.255.240.0   U     0      0        0 eth0
192.168.0.0     10.160.15.247   255.255.0.0     UG    0      0        0 eth0
172.16.0.0      10.160.15.247   255.240.0.0     UG    0      0        0 eth0
10.0.0.0        10.160.15.247   255.0.0.0       UG    0      0        0 eth0
default         112.124.15.247  0.0.0.0         UG    0      0        0 eth1
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 # 添加网关/设置网关
route add -net 224.0.0.0 netmask 240.0.0.0 reject # 屏蔽一条路由
route del -net 224.0.0.0 netmask 240.0.0.0 # 删除路由记录
route add default gw 192.168.120.240 # 添加默认网关
route del default gw 192.168.120.240 # 删除默认网关
```
## ssh
> ssh 命令是 openssh 套件中的客户端连接工具,可以给予 ssh 加密协议实现安全的远程登录服务器。
>
> 参考http://man.linuxde.net/ssh
示例:
```bash
# ssh 用户名@远程服务器地址
ssh user1@172.24.210.101
# 指定端口
ssh -p 2211 root@140.206.185.170
```
引申阅读:[ssh 背后的故事](https://linux.cn/article-8476-1.html)
## ssh-keygen
> ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥,它支持 RSA 和 DSA 两种认证密钥。
>
> 参考http://man.linuxde.net/ssh-keygen
为 ssh 生成、管理和转换认证密钥
## iptables
> iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
>
> 参考http://man.linuxde.net/iptables
为 ssh 生成、管理和转换认证密钥
示例:
```sh
# 开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
# 屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
# 查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
```

View File

@ -0,0 +1,198 @@
---
title: Linux 网络测试命令
date: 2018/02/28
categories:
- linux
tags:
- linux
- command
---
# Linux 网络测试命令
> 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat`
<!-- TOC depthFrom:2 depthTo:2 -->
- [host](#host)
- [nslookup](#nslookup)
- [nc/netcat](#ncnetcat)
- [dig](#dig)
- [ping](#ping)
- [traceroute](#traceroute)
- [netstat](#netstat)
<!-- /TOC -->
## host
> host 命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
>
> 参考http://man.linuxde.net/host
示例:
```sh
[root@localhost ~]# host www.jsdig.com
www.jsdig.com is an alias for host.1.jsdig.com.
host.1.jsdig.com has address 100.42.212.8
[root@localhost ~]# host -a www.jsdig.com
Trying "www.jsdig.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34671
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.jsdig.com. IN ANY
;; ANSWER SECTION:
www.jsdig.com. 463 IN CNAME host.1.jsdig.com.
Received 54 bytes from 202.96.104.15#53 in 0 ms
```
## nslookup
> nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。
>
> 参考http://man.linuxde.net/nslookup
示例:
```sh
[root@localhost ~]# nslookup www.jsdig.com
Server: 202.96.104.15
Address: 202.96.104.15#53
Non-authoritative answer:
www.jsdig.com canonical name = host.1.jsdig.com.
Name: host.1.jsdig.com
Address: 100.42.212.8
```
## nc/netcat
> nc 命令是 netcat 命令的简称,都是用来设置路由器。
>
> 参考http://man.linuxde.net/nc_netcat
示例:
```sh
# TCP 端口扫描
[root@localhost ~]# nc -v -z -w2 192.168.0.3 1-100
192.168.0.3: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.0.3] 80 (http) open
(UNKNOWN) [192.168.0.3] 23 (telnet) open
(UNKNOWN) [192.168.0.3] 22 (ssh) open
# UDP 端口扫描
[root@localhost ~]# nc -u -z -w2 192.168.0.1 1-1000 # 扫描192.168.0.3 的端口 范围是 1-1000
```
## dig
> dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。
>
> 参考http://man.linuxde.net/dig
示例:
```sh
[root@localhost ~]# dig www.jsdig.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> www.jsdig.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2115
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.jsdig.com. IN A
;; ANSWER SECTION:
www.jsdig.com. 0 IN CNAME host.1.jsdig.com.
host.1.jsdig.com. 0 IN A 100.42.212.8
;; AUTHORITY SECTION:
jsdig.com. 8 IN NS f1g1ns2.dnspod.net.
jsdig.com. 8 IN NS f1g1ns1.dnspod.net.
;; Query time: 0 msec
;; SERVER: 202.96.104.15#53(202.96.104.15)
;; WHEN: Thu Dec 26 11:14:37 2013
;; MSG SIZE rcvd: 121
```
## ping
> ping 命令用来测试主机之间网络的连通性。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
>
> 参考http://man.linuxde.net/ping
示例:
```sh
[root@AY1307311912260196fcZ ~]# ping www.jsdig.com
PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms
...按Ctrl+C结束
--- host.1.jsdig.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms
```
## traceroute
> traceroute 命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是 40 字节。
>
> 参考http://man.linuxde.net/traceroute
示例:
```sh
traceroute www.58.com
traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms
2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms
3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81 (221.6.9.81) 9.758 ms
4 221.6.2.169 (221.6.2.169) 11.777 ms 122.96.66.13 (122.96.66.13) 34.952 ms 221.6.2.53 (221.6.2.53) 41.372 ms
5 219.158.96.149 (219.158.96.149) 39.167 ms 39.210 ms 39.238 ms
6 123.126.0.194 (123.126.0.194) 37.270 ms 123.126.0.66 (123.126.0.66) 37.163 ms 37.441 ms
7 124.65.57.26 (124.65.57.26) 42.787 ms 42.799 ms 42.809 ms
8 61.148.146.210 (61.148.146.210) 30.176 ms 61.148.154.98 (61.148.154.98) 32.613 ms 32.675 ms
9 202.106.42.102 (202.106.42.102) 44.563 ms 44.600 ms 44.627 ms
10 210.77.139.150 (210.77.139.150) 53.302 ms 53.233 ms 53.032 ms
11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms
12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms
```
## netstat
> netstat 命令用来打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。
>
> 参考http://man.linuxde.net/netstat
示例:
```sh
# 列出所有端口 (包括监听和未监听的)
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
# 列出所有处于监听状态的 Sockets
netstat -l #只显示监听端口
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口
# 显示每个协议的统计信息
netstat -s 显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息
```

View File

@ -22,5 +22,5 @@
## [网络管理](网络管理/README.md)
* [linux 常用命令-网络应用](网络管理/网络应用.md)
* [linux 常用命令-网络应用](Linux网络应用命令.md)

View File

@ -1,3 +0,0 @@
# linux 常用命令-网络管理
* [linux 常用命令-网络应用](网络应用.md)

File diff suppressed because it is too large Load Diff

View File

@ -1,546 +0,0 @@
---
title: linux 常用命令-网络应用
date: 2018/02/28
categories:
- linux
tags:
- linux
- command
---
# linux 常用命令-网络应用
## host
常用的分析域名查询工具
### 补充说明
**host命令** 是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
### 语法
```
host(选项)(参数)
```
### 选项
```
-a显示详细的DNS信息
-c<类型>指定查询类型默认值为“IN“
-C查询指定主机的完整的SOA记录
-r在查询域名时不使用递归的查询方式
-t<类型>:指定查询的域名信息类型;
-v显示指令执行的详细信息
-w如果域名服务器没有给出应答信息则总是等待直到域名服务器给出应答
-W<时间>:指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
-4使用IPv4
-6使用IPv6.
```
### 参数
主机:指定要查询信息的主机信息。
### 实例
```
[root@localhost ~]# host www.jsdig.com
www.jsdig.com is an alias for host.1.jsdig.com.
host.1.jsdig.com has address 100.42.212.8
[root@localhost ~]# host -a www.jsdig.com
Trying "www.jsdig.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34671
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.jsdig.com. IN ANY
;; ANSWER SECTION:
www.jsdig.com. 463 IN CNAME host.1.jsdig.com.
Received 54 bytes from 202.96.104.15#53 in 0 ms
```
## nslookup
查询域名DNS信息的工具
### 补充说明
**nslookup命令** 是常用域名查询工具就是查DNS信息用的命令。
nslookup4有两种工作模式即“交互模式”和“非交互模式”。在“交互模式”下用户可以向域名服务器查询各类主机、域名的信息或者输出域名中的主机列表。而在“非交互模式”下用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
进入交互模式直接输入nslookup命令不加任何参数则直接进入交互模式此时nslookup会连接到默认的域名服务器即`/etc/resolv.conf`的第一个dns地址。或者输入`nslookup -nameserver/ip`。进入非交互模式,就直接输入`nslookup 域名`就可以了。
### 语法
```
nslookup(选项)(参数)
```
### 选项
```
-sil不显示任何警告信息。
```
### 参数
域名:指定要查询域名。
### 实例
```
[root@localhost ~]# nslookup www.jsdig.com
Server: 202.96.104.15
Address: 202.96.104.15#53
Non-authoritative answer:
www.jsdig.com canonical name = host.1.jsdig.com.
Name: host.1.jsdig.com
Address: 100.42.212.8
```
## nc/netcat
命令用于设置路由器。
### 补充说明
**nc命令** 用于设置路由器。执行本指令可设置路由器的相关参数。
### 语法
```
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>]
[-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
```
### 选项
```
-g<网关> 设置路由器跃程通信网关最丢哦可设置8个。
-G<指向器数目> 设置来源路由指向器其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址而不通过域名服务器。
-o<输出文件> 指定文件名称把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
```
### 实例
TCP端口扫描
```
[root@localhost ~]# nc -v -z -w2 192.168.0.3 1-100
192.168.0.3: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.0.3] 80 (http) open
(UNKNOWN) [192.168.0.3] 23 (telnet) open
(UNKNOWN) [192.168.0.3] 22 (ssh) open
```
扫描192.168.0.3 的端口 范围是 1-100
扫描UDP端口
```
[root@localhost ~]# nc -u -z -w2 192.168.0.1 1-1000 # 扫描192.168.0.3 的端口 范围是 1-1000
```
扫描指定端口
```
[root@localhost ~]# nc -nvv 192.168.0.1 80 # 扫描 80端口
(UNKNOWN) [192.168.0.1] 80 (?) open
y //用户输入
```
## dig
域名查询工具
### 补充说明
**dig命令** 是常用的域名查询工具,可以用来测试域名系统工作是否正常。
### 语法
```
dig(选项)(参数)
```
### 选项
```
@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip地址>当主机具有多个IP地址指定使用本机的哪个IP地址向域名服务器发送域名查询请求
-f<文件名称>指定dig以批处理的方式运行指定的文件中保存着需要批处理查询的DNS任务信息
-P指定域名服务器所使用端口号
-t<类型>指定要查询的DNS数据类型
-x<IP地址>:执行逆向域名查询;
-4使用IPv4
-6使用IPv6
-h显示指令帮助信息。
```
### 参数
* 主机:指定要查询域名主机;
* 查询类型指定DNS查询的类型
* 查询类指定查询DNS的class
* 查询选项:指定查询选项。
### 实例
```
[root@localhost ~]# dig www.jsdig.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> www.jsdig.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2115
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.jsdig.com. IN A
;; ANSWER SECTION:
www.jsdig.com. 0 IN CNAME host.1.jsdig.com.
host.1.jsdig.com. 0 IN A 100.42.212.8
;; AUTHORITY SECTION:
jsdig.com. 8 IN NS f1g1ns2.dnspod.net.
jsdig.com. 8 IN NS f1g1ns1.dnspod.net.
;; Query time: 0 msec
;; SERVER: 202.96.104.15#53(202.96.104.15)
;; WHEN: Thu Dec 26 11:14:37 2013
;; MSG SIZE rcvd: 121
```
## ping
测试主机之间网络的连通性
### 补充说明
**ping命令** 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议发出要求回应的信息若远端主机的网络功能没有问题就会回应该信息因而得知该主机运作正常。
### 语法
```
ping(选项)(参数)
```
### 选项
```
-d使用Socket的SO_DEBUG功能
-c<完成次数>:设置完成要求回应的次数;
-f极限检测
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n只输出数值
-p<范本样式>:设置填满数据包的范本样式;
-q不显示指令执行过程开头和结尾的相关信息除外
-r忽略普通的Routing Table直接将数据包送到远端主机上
-R记录路由过程
-s<数据包大小>:设置数据包的大小;
-t<存活数值>设置存活数值TTL的大小
-v详细显示指令的执行过程。
```
### 参数
目的主机指定发送ICMP报文的目的主机。
### 实例
```
[root@AY1307311912260196fcZ ~]# ping www.jsdig.com
PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms
...按Ctrl+C结束
--- host.1.jsdig.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms
```
## traceroute
显示数据包到主机间的路径
### 补充说明
**traceroute命令** 用于追踪数据包在网络上的传输时的全部路径它默认发送的数据包大小是40字节。
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点source到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
traceroute通过发送小的数据包到目的设备直到其返回来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称如有的话及其ip地址。
### 语法
```
traceroute(选项)(参数)
```
### 选项
```
-d使用Socket层级的排错功能
-f<存活数值>设置第一个检测数据包的存活数值TTL的大小
-F设置勿离断位
-g<网关>设置来源路由网关最多可设置8个
-i<网络界面>:使用指定的网络界面送出数据包;
-I使用ICMP回应取代UDP资料信息
-m<存活数值>设置检测数据包的最大存活数值TTL的大小
-n直接使用IP地址而非主机名称
-p<通信端口>设置UDP传输协议的通信端口
-r忽略普通的Routing Table直接将数据包送到远端主机上。
-s<来源地址>设置本地主机送出数据包的IP地址
-t<服务类型>设置检测数据包的TOS数值
-v详细显示指令的执行过程
-w<超时秒数>:设置等待远端主机回报的时间;
-x开启或关闭数据包的正确性检验。
```
### 参数
主机指定目的主机IP地址或主机名。
### 实例
```
traceroute www.58.com
traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms
2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms
3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81 (221.6.9.81) 9.758 ms
4 221.6.2.169 (221.6.2.169) 11.777 ms 122.96.66.13 (122.96.66.13) 34.952 ms 221.6.2.53 (221.6.2.53) 41.372 ms
5 219.158.96.149 (219.158.96.149) 39.167 ms 39.210 ms 39.238 ms
6 123.126.0.194 (123.126.0.194) 37.270 ms 123.126.0.66 (123.126.0.66) 37.163 ms 37.441 ms
7 124.65.57.26 (124.65.57.26) 42.787 ms 42.799 ms 42.809 ms
8 61.148.146.210 (61.148.146.210) 30.176 ms 61.148.154.98 (61.148.154.98) 32.613 ms 32.675 ms
9 202.106.42.102 (202.106.42.102) 44.563 ms 44.600 ms 44.627 ms
10 210.77.139.150 (210.77.139.150) 53.302 ms 53.233 ms 53.032 ms
11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms
12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms
```
记录按序列号从1开始每个纪录就是一跳 每跳表示一个网关我们看到每行有三个时间单位是ms其实就是`-q`的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用`traceroute -q 4 www.58.com`表示向每个网关发送4个数据包。
有时我们traceroute一台主机时会看到有一些行是以星号表示的。出现这样的情况可能是防火墙封掉了ICMP的返回信息所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长有可能是某台网关比较阻塞也可能是物理设备本身的原因。当然如果某台DNS出现问题时不能解析主机名、域名时也会 有延时长的现象您可以加`-n`参数来避免DNS解析以IP格式输出数据。
如果在局域网中的不同网段之间我们可以通过traceroute 来排查问题所在是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时我们用到traceroute 追踪数据包所经过的网关提交IDC服务商也有助于解决问题但目前看来在国内解决这样的问题是比较困难的就是我们发现问题所在IDC服务商也不可能帮助我们解决。
**跳数设置**
```
[root@localhost ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms
2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms
3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms
4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms
5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms
6 bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms
7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms
8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms
9 * * *
10 * * *
```
其它一些实例
```
traceroute -m 10 www.baidu.com # 跳数设置
traceroute -n www.baidu.com # 显示IP地址不查主机名
traceroute -p 6888 www.baidu.com # 探测包使用的基本UDP端口设置6888
traceroute -q 4 www.baidu.com # 把探测包的个数设置为值4
traceroute -r www.baidu.com # 绕过正常的路由表,直接发送到网络相连的主机
traceroute -w 3 www.baidu.com # 把对外发探测包的等待响应时间设置为3秒
```
## netstat
查看Linux中网络系统状态信息
### 补充说明
**netstat命令** 用来打印Linux中网络系统的状态信息可让你得知整个Linux系统的网络情况。
### 语法
```
netstat(选项)
```
### 选项
```
-a或--all显示所有连线中的Socket
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous持续列出网络状态
-C或--cache显示路由器配置的快取信息
-e或--extend显示网络其他相关信息
-F或--fib显示FIB
-g或--groups显示多重广播功能群组组员名单
-h或--help在线帮助
-i或--interfaces显示网络界面信息表单
-l或--listening显示监控中的服务器的Socket
-M或--masquerade显示伪装的网络连线
-n或--numeric直接使用ip地址而不通过域名服务器
-N或--netlink或--symbolic显示网络硬件外围设备的符号连接名称
-o或--timers显示计时器
-p或--programs显示正在使用Socket的程序识别码和程序名称
-r或--route显示Routing Table
-s或--statistice显示网络工作信息统计表
-t或--tcp显示TCP传输协议的连线状况
-u或--udp显示UDP传输协议的连线状况
-v或--verbose显示指令执行过程
-V或--version显示版本信息
-w或--raw显示RAW传输协议的连线状况
-x或--unix此参数的效果和指定"-A unix"参数相同;
--ip或--inet此参数的效果和指定"-A inet"参数相同。
```
### 实例
**列出所有端口 (包括监听和未监听的)**
```
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
```
**列出所有处于监听状态的 Sockets**
```
netstat -l #只显示监听端口
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口
```
**显示每个协议的统计信息**
```
netstat -s 显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息
```
**在netstat输出中显示 PID 和进程名称**
```
netstat -pt
```
`netstat -p`可以与其它开关一起使用就可以添加“PID/进程名称”到netstat输出中这样debugging的时候可以很方便的发现特定端口运行的程序。
**在netstat输出中不显示主机端口和用户名(host, port or user)**
当你不想让主机,端口和用户名显示,使用`netstat -n`。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。
```
netstat -an
```
如果只是不想让这三个名称中的一个被显示,使用以下命令:
```
netsat -a --numeric-ports
netsat -a --numeric-hosts
netsat -a --numeric-users
```
**持续输出netstat信息**
```
netstat -c #每隔一秒输出网络信息
```
**显示系统不支持的地址族(Address Families)**
```
netstat --verbose
```
在输出的末尾,会有如下的信息:
```
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.
```
**显示核心路由信息**
```
netstat -r
```
使用`netstat -rn`显示数字格式,不查询主机名称。
**找出程序运行的端口**
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
```
netstat -ap | grep ssh
```
找出运行在指定端口的进程:
```
netstat -an | grep ':80'
```
**显示网络接口列表**
```
netstat -i
```
显示详细信息像是ifconfig使用`netstat -ie`。
**IP和TCP分析**
查看连接某服务端口最多的的IP地址
```
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
```
TCP各种状态列表
```
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
```
查看phpcgi进程数如果接近预设值说明不够用需要增加
```
netstat -anpo | grep "php-cgi" | wc -l
```