面试八股文-计算机网络

网络模型

七层网络模型

  1. 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
  2. 数据链路层
  3. 网络层 IP
  4. 传输层 TCP、UDP
  5. 会话层
  6. 表示层 对底层命令和数据进行解释
  7. 应用层 应用层协议:DNS、HTTP、SMTP等,用户在这一层与网络进行交互

TCP/IP四层

  1. 网络接口层
  2. 网际层 IP
  3. 运输层 TCP、UDP
  4. 应用层 HTTP、SMTP、FTP等

五层协议

  1. 物理层 实现相邻计算机之间比特流的透明传递
  2. 数据链路层 将IP数据报组装成帧,控制信息在相邻两节点的链路上进行传输
  3. 网络层 IP,为不同主机分组交换信息服务
  4. 运输层 TCP、UDP,为两台主机之间的通信提供通用的数据传输服务
  5. 应用层 HTTP、SMTP、FTP等

总结

在这里插入图片描述网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

HTTP

HTTP是什么

  • 超文本:
  • 传输:
  • 协议:HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范)

HTTP和HTTPS的区别

  • https需要到ca申请证书,因而需要一定费用
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议,成本较高
  • http的连接很简单,是无状态的,https协议是由ssl+http协议构建的可进行加密串苏,身份验证的网络协议
  • http用的端口是80,https用的端口是443

HTTP请求报文的内容

  • 请求行包括请求方法(GET、POST…),URL,HTTP协议版本
  • 请求头。格式为,头部字段:值。
  • 请求正文

HTTP头部有哪些主要字段

  • Host:接受请求的服务器地址,可以是IP或者是域名

  • User-Agent:发送请求的应用名称

  • Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)

  • Accept-Charset:通知服务器端可以发送的编码格式

  • Accept-Encoding:通知服务器端可以发送的数据压缩格式

  • Accept-Language:通知服务器端可以发送的语言

HTTP响应报文

  • 状态行:协议版本,状态码,状态码描述
  • 响应头
  • 响应正文

HTTP响应头主要字段

  • Server:服务器应用软件的名称和版本
  • Content-Type:响应正文的类型
  • Content-Length:响应正文的长度
  • Content-Charset:响应正文所使用的编码
  • Content-Encoding:响应正文使用的数据压缩格式
  • Content-Language:响应正文使用的语言

HTTP状态码

1xx 服务器收到请求,需要请求者继续执行操作

2xx ok,请求成功

3xx 重定向,资源已经重新分配

4xx 客户端请求错误,403 forbidden请求资源被拒绝,404 not found找不到请求资源

5xx 服务器错误,500 服务器故障,503 服务器超载或停机维护

200,请求成功

「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。

「302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

「304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制。

「400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。

「403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。

「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

「500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
「501 Not Implemented」表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
「502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
「503 Service Unavailable」表示服务器当前很忙,暂时无法响应客户端,类似“网络服务正忙,请稍后重试”的意思。

HTTP劫持

在正常的数据流中插入特定的网络数据报文,让客户端解释错误的数据,并以弹出新窗口的形式向使用者展示小广告或网页内容

步骤:

在TCP连接中标识HTTP协议链接;

改HTTP响应体;

将篡改后的数据包抢先回发到用户,这样后面的数据包在到达后会被直接丢弃。而客户端显示改后的网页

防范:

事前加密:HTTPS,防止明文传输被挟持,(但防不了DNS挟持)

事中加密:拆分HTTP请求数据包,运营商的旁路设备没有完整的TCP/IP协议栈,不能标记,web服务器有完整的TCP/IP协议栈,能把接收到的数据包拼成完整的HTTP请求,不影响服务

事后屏蔽:前端显示HTTP时对内容进行检测,在DOM结构发生变化时触发回调

DNS劫持:通过劫持DNS服务器,获得某域名的解析记录控制权,修改此域名的解析结果。把原来对A域名的访问转入B域名,返回错误的查询结果。可能是一些产品的持续的推广

区别:DNS劫持倾向于持续性,访问一个界面时强行推送广告,HTTP劫持频率多变,劫持过程也非常快,一般多出现于网站小尾巴

HTTPS挟持:伪造证书来进行挟持….

跨域

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

同源:域名,协议,端口均相同

即浏览器只能执行相同协议、相同域名、相同端口下的网站脚本,执行的时候如果网站的脚本不属于现在这个界面,就不会执行

HTTP请求响应中断原因

网断了,网络阻塞,请求超时,浏览器出问题,服务器出问题

如何检查
检查网络,检查本地…

HTTP有几种请求方式

HTTP1.0 定义了三种请求方法: GET, POST 和HEAD方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和CONNECT 方法。

GET和POST的区别

GET的参数放在url中,返回服务器拿数据;POST在request body里自带一个参数去服务器拿指定的数据;

因为GET的参数暴露在url上,所以安全性不能保证,也有长度的限制

应用场景
GET用来查询数据,POST用来修改数据,以及其他更需要安全性的场景如密码

cookie和session

什么是Cookie?
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。

当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

什么是Session?
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

Session和Cookie的区别?
1、数据存储位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据大小:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。

DNS的查找过程(应用层)

用于将用户提供的主机名解析为ip地址

  1. 浏览器从接收到的url中抽取出域名地址,将域名传给DNS应用的客户端
  2. 检查浏览器缓存、本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射
  3. 如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射
  4. 如果没有,则向DNS服务器提出查询请求
  5. 服务器接收到查询时,查询本地配置区域资源,查到就返回结果
  6. 如果查不到,但服务器缓存了此网址映射关系,返回查找结果
  7. 如果没有缓存,就继续间请求转发至上一级DNS服务器进行查询。最终将解析结果依次返回本地DNS服务器,本地DNS服务器在返回给客户端,并把这个映射存到服务器的缓存中

长链接&短链接

  • 在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的
    Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
  • 但从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
  • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的
    TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

搜索敏感词汇时,页面被重置的原理

根据TCP协议的规定,用户和服务器建立连接需要三次握手:第一次握手用户向服务器发送SYN数据包发出请求(SYN, x:0),第二次握手服务器向用户发送SYN/ACK数据包发出回应(SYN/ACK, y:x+1),第三次握手用户向服务器发送ACK数据包发出确认(ACK, x+1:y+1),至此一个TCP连接建立成功。其中x为用户向服务器发送的序列号,y为服务器向用户发送的序列号。
关键字检测,针对明文或者base64等弱加密通讯内容,与准备好的敏感词库进行匹配,当发现敏感词时,将服务器发回的SYN/ACK包改成SYN/ACK, Y:0,这代表TCP连接被重置,用户便主动放弃了连接,提示连接失败。让用户误认为服务器拒绝连接,而主动放弃继续与服务器连接,自动阻断记录含有敏感词的网页

IP

IP地址分类

A类:1字节(8位)网络号,3字节(24位)主机号。网络号第一位固定为0,剩下7位随便用。保留地址0(00000000)表示“本文网络”,127(01111111)表示本地环回软件测试

B类:2字节(16位)网络号,2字节(16位)主机号。网络号前两位固定为10,剩下16位随便用。保留地址

C类:3字节(24位)网络号,1字节(8位)主机号。前三位固定为110,剩下21位可用。

D类:

E类:

主机号全是0的IP地址表示是“本主机”所连接到的单个网络。

主机号全是1的IP地址表示是该网络上的所有主机。

A类地址的表示范围是:0.0.0.0-126.255.255.255,默认网络掩码为:255.0.0.0,A类地址分配给规模特别大的网络使用,

B类地址表示范围是:128.0.0.0-191.255.255.255,默认网络掩码为:255.255.0.0,B类地址分配给一般的中型网络

C类地址的表示范围是192.0.0.0-223.255.255.255,默认网络掩码是:255.255.255.0,C类地址分配给小型网络,如局域网

D类地址称为广播地址,共特殊协议向选定的节点发送信息使用。

ipv4和ipv6的转换。ipv4到ipv6的过渡手段

ipv4和ipv6的过渡是一个循序渐进的过程,在用户体验IPv6带来的好处的同时仍能与网络中其余的IPv4用户通信。

主流技术:

  1. 双栈策略:(最直接方式)在IPv6结点中加入IPv4协议栈。这种具有双协议栈的结点称作“IPv6/v4结点”,这些结点可以使用IPv4与IPv4结点互通,也可以直接使用IPv6与IPv6结点互通。
  2. 隧道技术:(为解决局部纯IPv6网络与IPv4骨干隔离形成的孤岛问题,用隧道技术的方式解决)利用穿越现存IPv4互联网的隧道技术将孤岛连接起来,逐步扩大IPv6的实现范围。在隧道的入口处,路由器将IPv6的数组分组封装进入IPv4中,IPV4分组的源地址和目的地址分别是隧道入口和出口的IPV4地址。在隧道的出口处再将IPV6分组取出转发给目的节点。
    隧道技术在实践中有四种具体形式:构造隧道、自动配置隧道、组播隧道以及6to4。
  3. 隧道代理TB,Tunnel Broker。(目的是简化隧道的配置,提供自动的配置手段),TB可以看作是一个虚拟的IPv6 ISP,它为已经连接到IPv4网络上的用户提供连接到IPv6网络的手段,而连接到IPv4网络上的用户就是TB的客户。
  4. 协议转换技术。其主要思想是在V6节点与V4节点的通信时需借助于中间的协议转换服务器,此协议转换服务器的主要功能是把网络层协议头进行V6/V4间的转换,以适应对端的协议类型。
  5. SOCKS64。

在客户端里引入SOCKS库,它处于应用层和socket之间,对应用层的socket API和DNS域名解析API进行替换。

另一种是SOCKS网关。

  1. 传输层中继

与SOCKS64的工作机理相似,只不过是在传输层中继器进行传输层的“协议翻译”

  1. 应用层代理网关(ALG)

类似。在应用层进行协议翻译。

ARP协议

Address Resolution Protocol,即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址

  1. 查主机缓存里(的ARP列表里)有没有记录这个IP和MAC地址的对应  
    
  2. 有就直接发送,没有就向本网段所有主机发送广播,发送自己的IP地址和MAC地址,询问谁是这个IP地址,这个地址的MAC地址是什么  
    
  3. 网络中的其他主机收到之后对照被询问的地址和自己能不能对上,是的话就从数据包中提取源主机的IP和mac地址写入自己的ARP列表,并将自己的MAC地址写入响应包,回复源主机  
    
  4. 源主机收到ARP响应包之后,就可以用这些信息发送数据  
    

为什么要用ARP协议:OSI把网络分成7层,每层之间不直接交流,只有特定接口有交流。IP在第三层网络层,MAC地址工作在第二层数据链路层。协议发包时需要封装IP地址和MAC地址,但只知道IP,又不能跨层直接找,所以得用ARP协议的服务帮助获取目的节点的MAC地址

浏览器中输入一个URL后,按下回车后发生了什么

URL,统一资源定位符,l简单点就是网址=ip或域名 + 端口号 + 资源位置 + 参数 + 锚点

1.输入一个网址之后,首先浏览器通过查询DNS,查找这个URL的IP地址,(通过层层向上级DNS服务器查找直到找到对应URL的IP地址)

2.得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请求一个TCP流套接字。客户端向服务器发送HTTP请求报文

(1)应用层:客户端发送HTTP请求报文。

(2)传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建立起一个TCP连接。

(3)网络层:(加入IP头)路由寻址。

(4)数据链路层:(加入frame头)传输数据。

(5)物理层:物理传输bit。

3.服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。

4.关闭连接,TCP四次挥手。

5.客户端解析HTTP响应报文,浏览器开始显示HTML

网页卡顿原因

网速慢、带宽不足、硬件配置低、内存被占满。

JS脚本过大,阻塞了页面的加载。

网页资源过多、接受数据时间长、加载某个资源慢。

DNS解析速度。

一般怎么检查

硬件问题:检查网线或者无限网卡有没有插好,有没有连上路由器,就是底层是不是联通状态;

软件问题:查看是否有对应的驱动,服务器好不好,DNS对不对,或者可能是代理没关

当网页加载很慢的时候,应如何分析其原因并解决问题?

http请求次数太多

资源过大,资源过多

JS脚本过大

网速慢

给一个网址先解析什么后解析什么(域名解析顺序)?

域名分层:从右到左分别为顶级域名、二级域名…最左为主机名(服务器名)。比如www.baidu.com的com为顶级域名,email.tsinghua.edu.cn中cn为顶级域名,为中国国家域名,edu为教育科研部门域名,email为服务器名。

域名解析时,优先查找匹配的子域名,如果子域名存在,则从子域名的配置文件查询解析结果,如果子域名不存在,就从上一级的配置文件查询结果

TCP、UDP

TCP连接三次握手的过程

初始状态客户端CLOSED,服务器LISTEN

  1. 客户端A向服务器B发送SYN数据包(SYN, x:0)请求连接。此时状态为SYN_SENT,表示客户端已发送SYN报文。
  2. 服务器B收到,发送SYN/ACK数据包(SYN/ACK,
    y:x+1)回应。此时服务器状态由LISTEN(服务器socket处于监听状态,可以接受连接)变为SYN_RECV,表示收到SYN报文
  3. 客户端A收到并发出确认ACK(ACK, x+1:y+1),连接成功。双方状态ESTABLISHED

TCP四次挥手的过程

初始状态双方ESTABLISHED

  1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。客户端FIN_WAIT_1。表示主动关闭连接,向对方发送了FIN,进入FIN_WAIT_1,等待对方的确认

  2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。客户端FIN_WAIT_2,表示半连接,而服务器可能还有数据要发,这边稍后关闭。服务器CLOSE_WAIT。

  3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。服务器LAST_ACK,等待对面的ACK报文

  4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。客户端进入TIME_WAIT,表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。

为何TIME_WAIT:

防止服务器在处于LAST_ACK状态下未收到ACK报文而重发FIN报文,这个TIME_WAIT 状态的作用就是用来重发可能丢失的ACK报文。

TCP和UDP的特点

TCP面向连接,UDP无连接

TCP可靠,保证安全,UDP尽最大努力交付,不保证安全

TCP是点对点的,UDP可以一对一 一对多 多对多 多对一

TCP面向字节流,UDP无拥塞控制

TCP开销较大,UDP开销小

TCP、UDP的应用场景

UDP使用场景 DNS协议(因为用UDP快),看视频、发语音、QQ聊天、多媒体教室屏幕广播

TCP使用场景 HTTP协议,QQ传文件,邮件,登陆

TCP怎么实现可靠传输

确认和重传机制:建立连接、发送包时的确认,运输过程中校验失败、丢包或延时发送端重传

数据排序:把数据分成很多包,按顺序进行传输

流量控制:滑动窗口和计时器

拥塞控制:慢启动、拥塞避免、快速重传、快速恢复

流量控制

作用于接收方,控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的。

由滑动窗口实现

滑动窗口

TCP进行流量控制的方式,接收方通过告诉对方自己的窗口大小,从而控制发送方的发送速度,以防止由于发送方发送速度过快而导致自己被淹没的现象

计时器

发送端收到为0的窗口后开启一个计时器,时间到了之后发包询问现在的滑动窗口,防止死锁(接收端发回的不为0的窗口的包丢失,双方相互等待)

拥塞控制

作用于网络,防止过多的数据注入到网络中,避免出现网络负载过大的情况。

拥塞:对网络中某一资源的需求超过了该资源所能提供的可用部分,影响到网络性能

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

拥塞窗口
发送方使用的流量控制,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。

慢启动和拥塞避免

慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。

拥塞窗口一开始设为1 ,每收到一次确认,就让拥塞窗口变为原来的两倍,当窗口值为16时(慢启动门限),改为加法增大,每次+1,直到网络拥塞。拥塞时让新的慢启动门限设为拥塞时的一半,并把拥塞窗口置为1,再让他重复,这时一瞬间会将网络数据量大量降低。

拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。

快重传和快恢复

快重传:接收方每收到一个失序的报文段(收完2后就收到了4说明3丢了)就立即发出包2的重复确认,这样可以让发送方尽早知道丢包了。

发送端连续收到三个重复确认就立即重传3

快恢复:发送方收到3个连续确认时,把慢开始门限减半,把拥塞窗口的值置为慢开始门限的一半,实行拥塞避免算法,每次确认收到后+1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
⼤数据运维⽅向⾯试题 ⼤数据运维⽅向⾯试题 ⼀、基础题 1.请写出http和https请求的区别,并写出遇到过的响应状态码. ⼀、https协议需要到ca申请证书,⼀般免费证书很少,需要交费。 ⼆、http是超⽂本传输协议,信息是明⽂传输,https 则是具有安全性的ssl加密传输协议。 三、http和https使⽤的是完全不同的连接⽅式,⽤ 的端⼝也不⼀样,前者是80,后者是443。 四、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全。 状态码常⽤: 301 永久重定向 403 服务器已经理解请求,但是拒绝执⾏ 404 页⾯丢失 500 服务器错误 2.请写出在linux系统上⾯搭建系统或者产品等⼤数据平台需要对系统进⾏哪些检查。 从稳定性说:需要检查集群中的每⼀台服务器的命令安装是否完善,环境变量是否配置完毕,每⼀台服务器的软件配置是否有问题。 扩展性: 能够快速扩展机器,横向扩展条件是否具备 3.请写出使⽤过的linux系统有哪些版本,如何查看系统信息?(发⾏版本,内核版本等信息)。 Centos 6.5 6.6 x64 1.查看发⾏版本命令:cat /etc/issue 2.查看内核版本: cat /proc/version 4.请使⽤命令在linux系统中创建⽤户test,⽤户组为test1,⽤户⽬录 /test , 并赋予sudo权限。 useradd -d /test -m test -g test1 -G root useradd 选项 ⽤户名 其中各选项含义如下: -c comment 指定⼀段注释性描述。 -d ⽬录 指定⽤户主⽬录,如果此⽬录不存在,则同时使⽤-m选项,可以创建主⽬录。 -g ⽤户组 指定⽤户所属的⽤户组。 -G ⽤户组,⽤户组 指定⽤户所属的附加组。 -s Shell⽂件 指定⽤户的登录Shell。 -u ⽤户号 指定⽤户的⽤户号,如果同时有-o选项,则可以重复使⽤其他⽤户的标识号。 Sudo可以修改⽂件需要root⽤户 sudo的⼯作过程如下: 1,当⽤户执⾏sudo时,系统会主动寻找/etc/sudoers⽂件,判断该⽤户是否有执⾏sudo的权限 2,确认⽤户具有可执⾏sudo的权限后,让⽤户输⼊⽤户⾃⼰的密码确认 3,若密码输⼊成功,则开始执⾏sudo后续的命令 4,root执⾏sudo时不需要输⼊密码(eudoers⽂件中有配置root ALL=(ALL) ALL这样⼀条规则) 5,若欲切换的⾝份与执⾏者的⾝份相同,也不需要输⼊密码 5.写出最少3个监控系统指标的命令(如内存,CPU ,IO,磁盘等)。 看内存 :free 看cpu:more /proc/cpuinfo 看IO:iostat -x 10 看磁盘:fdisk -l 6.请⽤多种⽅式在linux系统中设置环境变量,并指出各种⽅式的区别。 1、控制台中设置,不赞成这种⽅式,因为他只对当前的shell 起作⽤,换⼀个shell设置就⽆效了: $PATH="$PATH":/NEW_PATH (关闭 shell Path会还原为原来的path) 2、修改 /etc/profile ⽂件,如果你的计算机仅仅作为开发使⽤时推存使⽤这种⽅法,因为所有⽤户的shell都有权使⽤这个环境变量,可能会 给系统带来安全性问题。这⾥是针对所有的⽤户的,所有的shell 在/etc/profile的最下⾯添加: export PATH="$PATH:/NEW_PATH" 3、修改bashrc⽂件,这种⽅法更为安全,它可以把使⽤这些环境变量的权限控制到⽤户级别,这⾥是针对某⼀特定的⽤户,如果你需要给 某个⽤户权限使⽤这些环境变量,你只需要修改其个⼈⽤户主⽬录下的 .bashrc⽂件就可以了。 在下⾯添加: Export PATH="$PATH:/NEW_PATH" 7.请在linux系统中添加指定的定时任务。(每⽉1,15⽇,1,10点运⾏ /run.sh). * 1 ,10 1,15 * * sh /run.sh 8.编写个shell脚本将/data⽬录下⼤于100k的⽂件转移到 /tmp ⽬录下。 #! /bin/sh directory=/data/* filesize=0 for file in $directory do filesize=$(wc -c < $(basename $file)) if [ $filesize -gt 100*1024 ] then mv $(basename $file) /tmp fi done 9.请使⽤命令写出在linux系统中对于⽂件01.txt ,查找⾏内容包含"java"关键字,但不包含"bug"关键字的

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值