前端开发也要学点儿 Linux 基础命令(三)

609 阅读3分钟

Linux 网络与系统命令入门

主要内容:

网络常用工具命令

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 //中断、正常退出、暂停、继续等命令的代码