Linux和Docker常用必备指令

19 篇文章 0 订阅
12 篇文章 0 订阅

Linux

文件管理

touch file 不存在file则创建文件,存在修改时间属性

cat -n 连接文件打印输出,每行编号 -b空白不编号

  • cat -n text1 > text2 :把text1内容加行号输入text2中

  • cat /dev/null > /etc/text.txt:清空/tec/text.txt内容

diff 比较文件差异

find 指定目录下查找文件(path为空说明当前路径)

  • find . -name “*.c”:当前目录查找后缀为.c文件
  • find / -type f:将所有目录及其子目录中所有一般文件列出

locate 查找符合条件的文档

  • locate passwd:查找passwd文件

more 类似cat,页显示,空格/b 前后

  • more -s +20 text:从20行开始逐页显示text文档内容,两行内容以上以一行空白行显示

less 类似more,随意浏览,回车滚动一行

  • ps -ef | less:ps查看进程并通过less分页显示

rm -i/f/r 删除 询问/不询问/循环

tail 查看文件内容

  • tail -f 查阅正在改变的日志文件

which查看当前要执行的命令所在路径

  • which bash (/bin/bash:bash可执行的绝对路径)

whereis 查找文件

  • whereis -b/m 查找二进制/说明文件

文档编辑

grep 查找文件里符合条件的字符串

  • grep test *file:查找后缀有file字样的文件中包含test字符串的文件
  • grep -r update /etc/acpi:以递归的方式查找“etc/acipi”下包含update的文件

join 连接两个文件内容打印

tar

  • tar -czvf test.tar.gz a.c压缩a.c文件为test.tar.gz
  • tar -xzvf 解压缩 -C后指定加压路径
  • tar -tzvf 不解压查看内容

磁盘和分区

cd

df 显示文件系统的磁盘使用情况统计

  • df -h 查看分区使用情况
  • df --total显示所有信息

du 显示目录和文件的大小

  • du -h test

fdisk -l查看当前分区情况

pwd 显示当前工作目录(PrintWorkingDirectory)

mkdir 创建文件夹

mount 挂载linux系统外的文件

  • mount -o ro /dev/hda1 /mnt:将/dev/hda1只读模式挂在 /mnt之下
  • umount -v /mnt通过设备名或挂载点卸载文件系统

ls 显示工作目录下内容

  • ls -a:显示所有非隐藏文件和目录
  • ls -l:除文件名外将权限大小等信息详细列出

网络

netstat显示网络状态

  • netstat -a:显示详细的网络状况,显示所有连线中的socket

  • netstat -n:直接使用ip地址,不通过域名服务器

  • netstat -I:显示监控中的服务器socket

  • netstat -t/u:显示TCP/UDP连线状况

  • nestat -p:显示正在使用socket的程序识别码和程序名称

  • -Intp 查看所有监听端口

  • -antp已经建立连接正在使用

  • -anp查看端口对应服务 |grep 8080

  • -ano查看端口对应进程 |find str

route -n 查看路由表

iptables -L 查看防火墙

ifconfig 查看网络接口

ps -ef 用户查找全格式(f)的全部(e)进程(ps命令是Process Status)

  • ps -ef | grep httpd对显示结果文本搜索,检查httpd进程是否存在
  • ps -aux 效果类似
  • kill -9 端口号 强制关闭进程

nouhp后台运行

nouhp java -jar -Dfile.encoding=UTF-8 -Duser.timezone=GMT+08 xxx.jar > dev/null &

Docker

生命周期

docker run 创建新的容器并允许一个命令

  • docker run --name mynginx -d nginx:lastest:使用docker镜像nginx:lastest以后台模式启动一个容器,命名为mynginx

    • –name命名
    • -d后台运行容器,并返回容器id
  • docker run -it nginx:lastest /bin/bash:使用镜像nginx:lastest以交互模式启动一个容器,并执行/bin/bash指令

    • -i以交互模式运行容器,通常与-t同时使用
  • docker run -p 80:80 -v /data:/data -d nginx:lastest:镜像后台启动一个容器,把容器80端口映射到主机端口,主机目录/data映射到容器的/data

    • -p指定端口映射 主机端口:容器端口
    • -P随机端口映射
    • -v绑定一个卷

docker start/stop/restart/kill命令

  • start启动一个或多个已经被停止的容器
  • stop停止正在运行中的容器
  • restart重启容器
  • kill -s杀掉一个运行中的容器 -s发出一个信号

docker rm删除一个或多个容器

  • -f 通过sigkll信号强制删除一个运行中的容器
  • -l移除容器间的网络连接,而非容器本身 db 移除容器对其他容器连接名为db的连接
  • -v删除与容器关联的卷

docker create创建一个新的容器但不启动它,用法同run

docker pause/unpause暂停/恢复容器中所有进程

docker exec 在运行的容器中执行命令

  • -d分离模式,后台运行
  • -i即使没有附加也保持STDIN打开
  • -t分配一个伪终端
  • docker exec -it 9df70f9a0714(容器id) /bin/bash:对指定容器执行bash
  • docker exec -if mynginx /bin/sh /root/runoob.sh:在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本

容器操作

docker ps 列出容器

  • -a 显示所有的容器,包括未运行的

  • -l 显示最近创建的容器 -n最近创建的n个容器

  • -q 只显示容器编号

  • -f根据条件过滤

    • docker ps --filter"name=test-nginx"

docker attach 连接正在使用中的容器

docker logs获取容器的日志

  • docker logs -f mynginx
    • -f跟踪日志输出
    • -t显示时间戳
    • -since显示从某个开始时间的所有日志
    • -tail仅仅列出最新N条容器日志

镜像仓库

login

logout

pull

push

search

本地镜像管理

docker images 列出本地镜像

  • -a所有
  • -q只显示镜像id
  • -f筛选

docker build使用Dockerfile创建镜像,docker通过读取Dockerfile文档传几创建镜像

  • -f指定要使用的Dockerfile路径
  • -m设置内存最大值
  • –tag ,-t镜像的名字和标签 name:tag或者name格式
    • docker build -t runoob/ubuntu:v1使用当前目录的Dockerfile创建镜像,标签为runoob/ubuntu:v1

docker history查看指定镜像的创建历史

docker save : 将指定镜像保存成 tar 归档文件

docker load : 导入使用docker save命令导出的镜像

docker import : 从归档文件中创建镜像

计算机网络

网络模型

OSI七层模型介绍主要设备TCP/IP四层模型协议
应用层各种应用程序,网关在应用层,可连接不同协议的子网应用网关应用层DNS(域名解析53),FTP(文件传输协议20,21),TeInet(远程登录协议23),HTTP(超文本传输协议80),SMTP(简单邮件协议),HTTPS(超文本传输安全协议)
表示层对数据进行加密解密,编码解码,压缩解压缩
会话层建立不同机器之间的连接
传输层(segment)实现端对端的通讯传输传输层TCP,UDP
网络层(packet)主机之间通讯,传输IP数据包(IP寻址路由转发数据包packet)路由器(可以隔离广播风暴而交换机不能)防火墙VPN网络层IP(Internet Protocol)网际协议,ARP(地址解析协议),ICMP(网络控制报文协议),IGMP(网际组管理协议)
数据链路层(Frame)将比特封装成帧,在以太网传输,可实现差错控制网桥(连接不同网络的桥梁) 交换机(根据数据帧的***MAC地址***交换信息到不同端口)
物理层(Bits)实现主机与网络之间的物理连接,规定一些传输媒体接口网线光纤中继器(放大信号等)和集线器(将网线集在一起,多端口的中继器)主机-网络层以太网

HTTP和HTTPS

HTTP端口号80信息明文传输连接简单,无状态
HTTPS端口号443具有安全性的SSL加密协议HTTPS协议是由SSL+HTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。HttpsURLConnection

TCP和UDP

TCP和UDPjava.net.
TCP面向连接可靠字节流传输协议传输数据之前在不同主机的端口之间建立一条链路,传输前建立连接传输和释放连接。要求系统资源较多保证数据正确性和顺序ServerSocket电话通话
UDP面向无连接不可靠报文传输协议数据传输速度快,每个数据包限制在64k以内可能丢包,不保证数据顺序DatagramSocket/Packet视频聊天,对讲机

三次握手

第一次握手建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。客户端进入同步发送状态
第二次握手服务器收到syn包,必须确认客户的ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;ACK:确定号是否有效,一般置为1服务端进入同步接收状态
第三次握手客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。同时进入建立状态

四次挥手

第一次挥手客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。客户端进入终止等待1状态
第二次挥手服务器收到FIN连接释放报文,发出ACK确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。服务端进入关闭等待状态
第三次挥手客户端收到服务器的ACK确认请求报文后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)客户端今日终止等待2状态
第四次挥手服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。服务端进入最后确认状态
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。客户端进入时间等待状态
服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCP后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。服务端进入关闭状态,客户端进入关闭状态
服务端状态CLOSEDLISTENSYN_RCVDESTABLISHEDCLOSE_WAITLAST_ACKCLOSED
客户端状态CLOSEDSYN_SENTESTABLISHEDFIN_WAIT_1FIN_WAIT_2TIME_WAITCLOSED

为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

IP

IP地址由网络号主机号组成,通过子网掩码可以知道一个IP地址的网络号和主机号

网络号划分子网,子网地址基于没类网络地址的主机部分创建

特征网络范围默认掩码
A类地址第1个8位中的第1位始终为00-127.x.x.x255.0.0.0/8
B类地址第1个8位中的第1、2位始终为10128-191.x.x.x255.255.0.0/16
C类地址第1个8位中的第1、2、3位始终为110192-y.x.x.x255.255.255.0/24

子网掩码

指明一个IP地址的哪些标识是主机所在子网,以及主机的位掩码。

作用:将IP地址划分为网络地址和主机地址两部分

格式ip/子网掩码1的个数,如206.110.4.0/18 ,网络号位为18,子网掩码255.255.192.0,

网络地址

IP地址和子网掩码进行&运算,结果就是网络地址

广播地址

网络地址的主机位全部变成1

例:

IP:141.14.72.24 子网掩码:255.255.192.0 求网络地址

141.14.72.24(72==>01001000)

&

11111111 1111111 11000000 00000000(网络号18位,主机号14位)

=

141.14.64(01000000).0(网络地址)

141.14.126(011111110).127(广播地址)

主机数

子网数=2^子网号位数

每个子网容纳主机数=2^主机位数 - 2

每个子网的主机数量为n,分配的子网地址空间个数为:n+3

加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址

例:一个子网有10台主机,那么对于这个子网需要的IP地址是

13<16=2^4,主机号位为4,子网掩码为255-16=240 255.255.255.240

例:一个子网有14台主机,14+3=17>16,主机号位为5,子网掩码 255.255.224

例:206.110.4.0/18被划分成16个子网求每个子网容纳主机数

默认没有划分子网情况下是C类IP,默认子网掩码是255.255.255.0,网络号为24位,主机号位为8位

划分子网后,子网掩码为255.255.192.0,网络号为18位,主机号为14位,借走了6位主机位,分出26子网数,即每个子网号位数为6,子网数为64(26),每个子网容纳主机数=2^14 - 2

如将206.110.4.0/18划分成16个子网说明子网号位为4(2^4 = 16),原主机号为14位,从主机号中借走4位划分14-4=10,子网的主机号为10位,每个子网容纳主机数=2^主机位数 - 2=1022。

IP地址和MAC地址

IP地址MAC地址
长度不同32位二进制48位二进制
分配依据网络拓扑基于制造商
寻址协议不同网络层数据链路层
作用IP寻址路由转发包数据链路层设备如交换机,根据MAC地址将数据帧从一个节点传送到另一个节点

IP和MAC地址映射关系有ARP地址解析协议完成。ARP根据目的IP地址,找到中建节点的MAC地址,通过其传送最终达到目的网络

Websocket

websocket是基于HTTP的应用层协议,只需要完成一次握手,建立长连接并进行双向传输,,不需要再次发起网络请求,允许服务端向客户端推送信息(Http是通过客户端Ajax轮询发起请求,服务端进行响应),是双向通信协议。使用ws(80)或wss(443)的统一资源标识符(wss表示在TLS上的websocket)

websocket在建立握手时通过 HTTP/1.1 协议的101状态码进行握手。但是建立之后,在真正传输时候是不需要HTTP协议的,而是使用TCP协议。

HTTP协议版本和报文

属于OSI应用层协议,由请求和响应构成。无状态协议。

建立TCP连接后,通过socket访问连接,客户端通过该连接发送HTTP请求报文(ASCII码)

请求报文

请求行:方法字段 URL字段 HTTP协议版本

请求头:键值对格式,浏览器自行封装,要告知服务器的一些信息

空行

请求体:请求参数(get为空)

在这里插入图片描述

响应报文

状态:HTTP协议版本 状态码 状态码的原因短码

响应头:键值对格式,浏览器自行封装,要告知服务器的一些信息

空行

响应体:静态资源

在这里插入图片描述

HTTP版本

HTTP1HTTP1.1HTTP2.0
当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接默认使用长连接,减少三次握手开销使用多路复用技术,通过单一的HTTP/2连接发起多重请求响应信息
只发送header信息,如判断有权限请求返回100,客户端接收后再发送body。返回401不发送。采用二进制格式
当浏览器下次请求的时候又要建立连接支持断点续传多路复用底层采用“二进制分帧层”的方法,分割成更小的帧,二进制进行编码,多个请求在一个TCP连接上完成,性能提升
同一时间见对同一域名请求数量有限制,超过阻塞
短连接:在HTTP1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。

长连接:在HTTP 1.1,客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端再发送请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。

   优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。

   劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

状态码

状态字含义
1**表示通知信息,表示请求收到,或者正在处理100 Continue客户端应当继续发送请求101 Switching Protocols服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求
2**成功,操作被成功接收并处理200 OK请求已成功204:请求被受理但没有资源可以返回
3**重定向301 Moved Permanently永久性重定向302临时重定向,请求的资源已经临时移动到新URL303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上304:GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变
4**客户端错误401请求需要认证403请求的对应资源禁止被访问404服务器无法根据客户的请求找到资源
5**服务器错误500服务器内部错误,无法完成请求503服务器正忙

请求方法

请求方法
GET请求获取由Request-URI所标识的资源
POST在Request-URI所标识的资源后附加新的数据
HEAD请求获取由Request-URI所标识的资源的响应消息报头
OPTIONS请求查询服务器的性能,返回服务器所支持的请求方法
PUT请求服务器存储一个资源,并用Request-URI作为其标识
DELETE请求服务器删除由Request-URI所标识的资源
TRACE回显请求服务器收到的请求信息,主要用语测试或诊断

GET和POST的区别

都是HTTP协议中的两种请求方式,HTTP是基于TCP/IP的应用层协议,在报文格式上,请求行不同

GETPOST
带参数时GET方法的参数放在URL中POST方法放在请求体中
GET通过URL提交数据,约定是参数写在?后以&分割,因此GET提交的数据量和URL所能达到的最大长度有关
实际上HTTP协议对URL长度没有限制,限制URL长度大多是浏览器或服务器配置参数
GET方式通过URL方式请求,明文传输,数据地址栏可见POST传输数据地址栏不可见
回退无害重新被提交
可悲缓存不可被缓存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值