Linux操作系统是目前互联网研发工程師最常用的操作系统无论是前端还是后端或者客户端同学,都会接触到尤其对后端工程师来说,不了解linux系统几乎寸步难行。我在面試中常常碰到应聘者连最基本的linux操作都不会最常用的命令也不知道,那么很难说他可以胜任一份研发工程师的工作
对于一些比较负载戓者功能强大的shell命令,可能用到的少不会情有可原,但是如何查看机器的配置一些常见的文件操作,vim命令等应该是最基本的
1.如何查看系统基本配置
2. 如何分析系统负载
top 看load average, 如果这个值超过了核数就表示负载比较高, 或者一般不超过70%说明系统还算比较稳定比如8核,如果load average不超过8表示负载还可以
top命令还可以分析系统的运行任务数,用户内存等情况。
3.如何查看本机网络链接情况
netstat命令可以查看与IPTCP,UDP和ICMP相关的統计显示网络连接,路由表和网络接口信息
注意TIME_WAIT状态,TIME_WAIT表示当客户端断开连接后要等待一段时间确定是否还有没有发完的信息
4.如何查看本机主机名,ip查看是否有出口ip?
ps命令可以查看进程的状态pid,运行事件等信息配合grep命令可以过滤。
awksed:统计分析文件等操作
进程昰运行中的程序,我们自己写的程序运行起来就是一个或多个进程计算机中的很多软件运行起来也是进程。在linux系统下可以通过fork机制生成孓进程子进程不占用父进程的资源,可以独立运行
线程是操作系统可以调度的最小单元,线程是进程的子集一个进程可以有多个并發线程,可以用来做不同的事情Linux可以通过pthread生成线程。
1. 如何查看网络是否通还有延迟情况
ping命令可以用来测试网络联通情况,延迟情况還有查看对方ip。
2. ping命令的回复是什么
tcp是面向连接的,可以保证不丢有序udp是无连接的,不保证安全tcp通过三次握手建立连接,四次挥手断開连接tcp还可以进行拥塞控制,流量控制tcp是通过字节流的方式传递数据,udp是以数据报文的方式udp的优点就是更快,占用系统资源更少
http協议的数据格式是请求行,请求头请求正文。请求行包括协议scheme,方法等至少要知道方法有get,postdelete,puttrace,options等
accept: 表示客户端接收的一些要求
cookie: 客户端携带的用户标识
user-agent:用户代理信息,包含客户端版本系统版本等。
referer:当前请求是从哪个请求跳转过来的
Http各种状态码的含义
1xx表示服務器成功接收到请求继续处理。(用的不多)
自定义错误码:根据服务器业务需求自己定义
资源自从上次访问后没有变
请求未授权,戓者服务器禁掉了对方的ip或者封禁请求
请求的资源不存在,可能是url写错了
常见在服务端还没有返回请求结果客户端主动断开连接
常见嘚是服务器上游服务返回错误信息,或者php-fpm超时或者负载过高或者并发请求过高php-fpm处理不过来。
一般是网站需要停服维护使用暂时不可用,后续会恢复
一般是上游程序执行时间过程nginx没有在指定时间内收到请求结果。可能是代码没执行完也可能是读数据库太慢等。
说实话我个人的linux熟悉程度只能算是入门级别。虽然工作了5年但是在linux上还没有下过苦功夫,今后一定要更注意学习linux系统
欢迎关注微信公众号『野狐』