Linux 网络与系统命令入门
主要内容:
- http 请求与传输
- 网络常用工具命令
- 远程命令
- 进程与系统
网络常用工具命令
ping、host、nc、netstat、tcpdump
ping: 全称:package Internet groper
协议:ICMP(IP层/网络层中的协议,非 TCP/UDP 子协议,所以无端口概念)
作用:检测网络连通性,检测服务器可访问性
使用示例:
// 与 Windows 中不同,直接 ping 一个网址的话会一直 ping 下去,所以要加上控制的参数
ping -c 3 -W 1 www.baidu.com // -c 3 表示 ping 3 次即停,-W 1 表示 超时时间 1 秒
ping -q www.baidu.com // -q 表示静默输出,直接输出结果
hostname // 获取本机主机名
ifconfig // 获取虚拟网卡的 IP 地址
host ip地址 // DNS解析,解析一个 IP 地址,可以获取对应的主机名
host 主机名 // 逆解析,解析主机名获取 IP 地址
nc: socket 编程中常用的网络发包工具 nc,可实现一个聊天软件
nc -t www.baidu.com 80 // -t 发送 TCP 数据包
nc -u // 发送 UDP 数据包
nc -l // 监听服务的某个端口
示例,模仿 HTTP 请求行来返回百度首页:

实现一个聊天服务,图太长就不截了,自己实操最佳:
1. 使用 ifconfig 拿到自己本地 IP
2. nc -l xxx.xx.xx.xx 6666 //监听本机 6666 端口
3. 新开一个 terminal
4. nc -t xxx.xx.xx.xx 6666 // 向 6666 端口发送 TCP 数据,发送任意数据
5. 这时返回第一个 terminal 界面,即可看到你刚刚发送过来的数据,这时两个 tab 页就可以相互聊天了

telnet: 基于 Telnet 协议 作用是远程登录和 TCP 连接测试 远程登录暂不演示,举个连接测试的例子,跟上面有点类似:
1.nc -l xxx.xx.xx.xx 6666 // 先开一个 terminal 监听某个端口
2.telnet xxx.xx.xx.xx 6666 // 建立连接,即可相互发送消息
netstat:查看网络端口使用情况
netstat -an // 参数 a 表示把所有 socket 端口信息都打出来, n 表示以 ip 形式而不是主机名形式显示
tcpdump:Linux下常用的软件抓包工具
tcpdump -vvv -i eth0 host xx.xx.xx.xx and tcp and port xxxx -w ./temp.pcap
// 参数 vvv 可以多打一些内容
// 参数 i 指定虚拟网卡
// 参数 host 指定 host 地址
// 还可以 指定协议 指定端口
// 参数 w 可以把抓包的内容写到文件中,供线下分析(如使用 wireshark)
远程命令
ssh - 基于 SSH 协议的远程登录工具实现
scp - 远程拷贝,本机与远程服务器文件可以相互上传和拉取
不学了,学不动了。这里我选择可视化工具。
进程与系统
linux 开发必会的四个命令 ps、free、top、kill
ps: 查看进程信息
ps -ef // 查看进程信息
// 各个字段含义
UID //进程启动的用户 ID
PID //进程 ID
PPID //启动该进程的进程 ID
C //CPU 当前占用率
TTY //表示虚拟终端
TIME //启动以来占用 CPU 的时间
CMD //系统的启动命令
ps -Lf pid // 查看指定进程的线程信息
// 字段解读,只有三个不同
LWP // 线程号
NLWP // 该进程共有多少个线程
STAT //该线程当前状态
free: 查看内存使用信息
free -m // 以 MB 为单位显示,还可以用 -g,-k 等单位
free -h // 根据数值大小自动选择单位显示,并把单位显示在后面
top: 查看 CPU 使用率,内存信息,进程状况,CPU load 等重要信息
kill: 发送信号给进程
kill -9 pid //强制终止,杀死进程
kill -l //中断、正常退出、暂停、继续等命令的代码