Linux操作系统是目前互联网研发工程师最常用的操作系统,无论是前端还是后端或者客户端同学,都会接触到。尤其对后端工程师来说,不了解linux系统,几乎寸步难行。我在面试中常常碰到应聘者连最基本的linux操作都不会,最常用的命令也不知道,那么很难说他可以胜任一份研发工程师的工作。
对于一些比较负载或者功能强大的shell命令,可能用到的少,不会情有可原,但是如何查看机器的配置,一些常见的文件操作,vim命令等应该是最基本的。
操作系统
1.如何查看系统基本配置
内存:free-m/-g
磁盘:df-h,du-sh*
cpu核数:top
查看系统配置:ulimit-a比如文件句柄数,core文件数
2.如何分析系统负载
top看loadaverage,如果这个值超过了核数就表示负载比较高,或者一般不超过70%说明系统还算比较稳定。比如8核,如果loadaverage不超过8表示负载还可以。
top命令还可以分析系统的运行任务数,用户,内存等情况。
3.如何查看本机网络链接情况
netstat命令
netstat命令可以查看与IP,TCP,UDP和ICMP相关的统计。显示网络连接,路由表和网络接口信息。
注意TIME_WAIT状态,TIME_WAIT表示当客户端断开连接后要等待一段时间确定是否还有没有发完的信息。
4.如何查看本机主机名,ip,查看是否有出口ip?
hostname,ifconfig,hostname-i,curlifconfig.me
5.查看进程状态
ps命令
ps命令可以查看进程的状态,pid,运行事件等信息,配合grep命令可以过滤。
6.文件相关命令
head:取头部
tail:取尾部
cat:查看整个文件
grep:过滤条件
awk,sed:统计分析文件等操作
5.进程与多进程
进程是运行中的程序,我们自己写的程序运行起来就是一个或多个进程。计算机中的很多软件运行起来也是进程。在linux系统下可以通过fork机制生成子进程,子进程不占用父进程的资源,可以独立运行。
6.线程与多线程
线程是操作系统可以调度的最小单元,线程是进程的子集。一个进程可以有多个并发线程,可以用来做不同的事情。Linux可以通过pthread生成线程。
网络
1.如何查看网络是否通还有延迟情况?
ping命令可以用来测试网络联通情况,延迟情况,还有查看对方ip。
2.ping命令的回复是什么?
pong
3.tcp协议与udp协议区别?
tcp是面向连接的,可以保证不丢有序。udp是无连接的,不保证安全。tcp通过三次握手建立连接,四次挥手断开连接。tcp还可以进行拥塞控制,流量控制。tcp是通过字节流的方式传递数据,udp是以数据报文的方式。udp的优点就是更快,占用系统资源更少。
HTTP